У меня 20 миллионов локальных файлов. Каждый файл представлен числовым идентификатором, который хэшируется.
Файл 1 называется 356a192b7913b04c54574d18c28d46e6395428ab
(sha1 из "1")
Файл 2 имеет имя da4b9237bacccdf19c0760cab7aec4a8359010b0
(sha1 из "2")
и т.д.. и т.д.
Не каждое число представляет файл, но у меня есть список всех чисел, которые делают.
Файлы помещаются в папки, названные в честь первых двух символов в хэше, затем идут следующие два, а затем следующие два.
Для файла 1 (da4b9237bacccdf19c0760cab7aec4a8359010b0
) структура папок
da/4b/92/
В эту папку помещается файл, который называется полным хэшем, поэтому полный путь к файлу
da/4b/92/da4b9237bacccdf19c0760cab7aec4a8359010b0
Теперь я хочу переместить все файлы из файловой системы в корзину на Amazon S3, и при этом я хочу переместить их в корень этой корзины.
Поскольку существует так много файлов, было бы хорошо, если бы существовал способ регистрировать, какие файлы были перемещены и какие файлы могли потерпеть неудачу для некоторого резонанса, мне нужно иметь возможность возобновить операцию, если она не удалась.
Мой план состоит в том, чтобы создать таблицу в mysql с именем moved_files
, а затем запустить скрипт PHP, который извлекает число X идентификаторов из таблицы files
, и использовать AWS SDK для PHP для копирования файл на S3, если это успешно, добавить этот идентификатор в таблицу moved_files
. Однако я не уверен, что это будет самый быстрый способ сделать это, может быть, мне стоит заняться написанием сценария bash с использованием AWS Cli .
Будем благодарны за любые предложения!