Храните 100 миллионов файлов в одном «каталоге» в хранилище, совместимом с S3?
У меня есть> 100 миллионов файлов изображений (обложки книг) в виде плоского списка файлов в одном «каталоге»:
/images/000000093e7d1825b346e9fc01387c7e449e1ed7
/images/000000574c67d7b8c5726f7cfd7bb1c5b3ae2ddf
/images/0000005ae12097d69208f6548bf600bd7d270a6f
...
Давным-давно они хранились на Amazon S3, а теперь находятся на Backblaze B2 (который совместим с S3).
До сих пор это работало нормально:
- сохранение нового файла происходит очень быстро;
- получение существующего файла происходит очень быстро.
Я снова перехожу на iDrive E2 (также совместим с S3).
Я экспериментирую с их перемещением с помощью rclone , но после 30 минут ожиданияrclone copy
для начала я понял, что rclone не начинает передачу файлов, пока не получит весь список файлов.
Проблема в:
- быстрый ориентир
rclone ls
по каталогу мне сообщает, что передача всего списка файлов займет почти 10 часов - любая проблема во время передачи (которая займет много дней) будет перезапущена с нуля, что заставит rclone снова загрузить весь список файлов.
- листинг файлов стоит денег с B2
Я попытался настроить rclone для копирования только пакета файлов:
-
rclone copy "backblaze:/images/0000*"
, с или без*
, не находит ни одного файла -
rclone copy "backblaze:/images/" --include "/0000*"
кажется, также загружает весь список файлов и фильтрует на клиенте
Как ни странно, похоже, что rclone без проблем получает с сервера список файлов, находящихся, например, в заданном «каталоге»./images/
, но не может сделать то же самое с префиксом, например/images/0000
.
Я думал, что S3 и, как следствие, все S3-совместимые хранилища хранят пути к файлам в виде плоской структуры , и это просто такой же символ, как и любой другой, и что вы можете легко перечислить файлы с любым префиксом, заканчивающимся или нет
/
.
Я ошибаюсь?
В моем следующем хранилище (E2) следует ли хранить файлы в подкаталогах , напримерimages/0/0/0/0/
,images/0/0/0/1
и т. д., как мы делали в старые добрые времена, когда файлы хранились в традиционной файловой системе?