
У меня есть > 100 миллионов файлов изображений (обложки книг) в виде простого списка файлов в одном «каталоге»:
/images/000000093e7d1825b346e9fc01387c7e449e1ed7
/images/000000574c67d7b8c5726f7cfd7bb1c5b3ae2ddf
/images/0000005ae12097d69208f6548bf600bd7d270a6f
...
Когда-то они хранились на Amazon S3, а теперь на Backblaze B2 (совместимом с S3).
Пока что все работает отлично:
- сохранение нового файла происходит очень быстро;
- извлечение существующего файла происходит очень быстро.
Я снова в процессе перехода на iDrive E2 (также совместимую с S3).
Я экспериментирую с их перемещением с помощьюrclone, но после 30 минут ожидания rclone copy
запуска я понял, что rclone не начинает передачу файлов, пока не получит весь список файлов.
Проблема в:
- быстрый тест
rclone ls
каталога/images/
показывает, что передача всего списка файлов займет почти 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
, и т. д., как мы делали в старые добрые времена, храня файлы в традиционной файловой системе?
решение1
Я понял, что rclone не начинает передачу файлов, пока не получит весь список файлов.
Это говорит мне, что ваша проблема не столько в поставщиках хранения, сколько в самом rclone. Решение, которое запускало list-stream, а затем разбивало файлы по мере их поступления, было бы более подходящим, чем то, которому нужен весь список файлов перед работой.
Я думал, что S3 и, соответственно, все S3-совместимые хранилища хранят пути к файлам в виде плоской структуры,
Это определенно то, как это делает S3, что сломало мой мозг администратора файлового сервера, когда я впервые столкнулся с этим. Учитывая, что проблемы здесь, похоже, связаны с метаданными, а не с компоновкой файлов, это, вероятно, не имеет значения.