Перенос миллионов файлов с одного сервера на другой

У меня два сервера. Один из них имеет 15 миллионов текстовых файлов (около 40 ГБ). Я пытаюсь передать их на другой сервер. Я считал их застегиванием и передачей архива. Но я понял, что это не очень хорошая идея.

Поэтому я использовал следующую команду:

scp -r usrname@ip-address:/var/www/html/txt /var/www/html/txt 

Но я заметил, что эта команда просто переносит около 50 000 файлов, а затем соединение теряется.

Есть ли лучшее решение, которое позволяет мне переносить всю коллекцию файлов? Я хочу использовать что-то вроде rsync для передачи файлов, которые не были переданы, когда соединение было потеряно. Когда произойдет другое прерывание соединения, я снова наберу команду для передачи файлов, игнорируя те, которые уже успешно переданы.

Это невозможно с помощью scp , потому что он всегда начинается с первого файла.

3 Solutions collect form web for “Перенос миллионов файлов с одного сервера на другой”

Как вы говорите, используйте rsync :

 rsync -azP /var/www/html/txt/ username@ip-address:/var/www/html/txt 

Возможные варианты:

 -a : enables archive mode, which preserves symbolic links and works recursively -z : compress the data transfer to minimise network usage -P : to display a progress bar and enables you to resume partial transfers 

Как говорит в своем ответе @aim, убедитесь, что у вас есть трейлинг / в исходном каталоге (на обоих тоже отлично).

Дополнительная информация с главной страницы

Просто используйте rsync поверх ssh!

rsync -av username@ip:/var/www/html/txt /var/www/html/

На странице руководства:

-a , – archive : Это эквивалентно -rlptgoD. Это быстрый способ сказать, что вы хотите рекурсии и хотите сохранить почти все (с -H – заметное упущение). Единственное исключение из вышеупомянутой эквивалентности – это когда указано -files-from, и в этом случае -r не подразумевается.

-v , – verbose : этот параметр увеличивает объем информации, которую вы даете во время передачи. По умолчанию rsync работает молча. Один -v даст вам информацию о том, какие файлы передаются, и краткое резюме в конце. Два варианта -v предоставят вам информацию о том, какие файлы пропускаются, и немного больше информации в конце. Если вы отлаживаете rsync, рекомендуется использовать более двух опций -v.

Обратите внимание, как я использовал слэши в конце папок – это важно .

Используйте lftp, это намного быстрее, чем rsync и лучше всего подходит для зеркалирования веб-сайтов (много небольших файлов). Он также может передаваться параллельно с использованием нескольких соединений:

 lftp -u username,password sftp://ip-address -e 'mirror --only-newer --no-dereference --parallel=5 /remote/path/ /destination/;quit' 

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

http://lftp.yar.ru/

  • Файлы SCP от machineB до machineA
  • Как сжимать и передавать папки с одного сервера на другой по сети
  • scp для гостя KVM за NAT
  • Отправить письмо в любое время, когда используется SSH-ключ
  • Неверный вариант конфигурации: ControlPersist, а scp с управляющим мастером?
  • Как автоматически вводить пароль для SCP или SFTP для его автоматизации?
  • Почему SCP не работает, когда включена опция «RequestTTY force»?
  • Загрузите файл с любой из двух машин с помощью SCP?
  • Логистика копирования большого количества файлов scp-сервера на сервер. Как определить прогресс?
  • Однострочный трафик SCP для загрузки файла в конце строки
  • Как передать файл через 2 сервера (source-> serverA-> serverB) с помощью одного сценария.
  • Linux и Unix - лучшая ОС в мире.