Как скопировать миллионы файлов с выделенного сервера на AWS EC2?

У меня есть веб-сайт, который должен перейти с выделенного сервера на экземпляр AWS EC2. У меня 650 ГБ + данные и 3 с лишним миллиона файлов.

Я пытался использовать SCP вот так, но из-за огромного файла это заняло так много времени.

scp -r remote_username@10.10.0.2: / remote / directory / local / directory

Моя исходная ОС - Centos 7.5 с cPanel. Жесткий диск объемом 1 ТБ и 650 ГБ, конечным сервером является Ubuntu 18.04, жесткий диск 700 ГБ.

Я знаю, что у нас есть другие варианты, такие как LFTP, SFTP, rSync и т. Д., Пожалуйста, помогите мне с быстрым методом.

5 ответов

Я бы посоветовал архивировать файлы, скажем, по 1 ГБ и загружать их. При распаковке каждый файл сверяется с контрольной суммой CRC. Вы можете использовать встроенное разбиение, чтобы zip автоматически генерировал.z00.z01.z02.z03...

Кроме того, вы можете использовать формат rar, который позволяет создавать данные четности для восстановления поврежденных сегментов.

Попробуйте установить AWS CLI на свой выделенный сервер.

Тогда используйте aws s3 Команда для передачи файлов в ваш AWS S3 ведро в первую очередь.

Например

aws s3 sync local/directory s3://mybucket/local/directory

Затем вернитесь в местный экземпляр EC2:

aws s3 sync s3://mybucket/local/directory local/directory

Команда предназначена для копирования большого количества файлов и может продолжаться при сбое.

Вы также можете решить обслуживать файлы для экземпляра EC2 непосредственно из S3.

Проверьте aws s3 sync help за помощью.

Когда используешь scp, он не повторяет и не продолжает частично переданные файлы.

Попробуйте использовать rsync вместо этого, например

rsync -vuaz remote_username@10.10.0.2:/remote/directory/ /local/directory/

Аргументы:

  • -v/--verbose увеличить многословие.
  • -u/--update пропустить файлы, которые новее на приемнике.
  • -a/--archive режим архива; равняется -rlptgoD
  • -z/--compress сжимать данные файла во время передачи.

Существует одно решение AWS для передачи ваших данных:

https://aws.amazon.com/snowball/?nc1=h_ls

Как я знаю, вы получите устройство (через почтовый сервис, например, DHL). Вы можете скопировать свои данные на это устройство, а затем Amazon загрузит эти данные для вас.

Единственный способ ускорить загрузку - это сделать это несколькими частями параллельно.

Если вы можете разделить работу между несколькими компьютерами, используя разные соединения, это ускорит загрузку.

Если один компьютер не достигает полной пропускной способности, вы можете выбрать многопоточный метод, при котором каждый поток будет параллельно открывать собственное соединение.

См. Сообщение Какой самый быстрый способ скопировать 400 ГБ файлов из тома хранилища эластичных блоков ec2 в s3? для предложений продуктов и сценариев.

См. Также статью " Синхронизация файлов FS - ускоренная передача файлов в файловые системы Amazon EFS".

Другие вопросы по тегам