У меня есть два сервера. Один из них имеет 15 миллионов текстовых файлов (около 40 ГБ). Я пытаюсь перенести их на другой сервер. Я подумал об их архивации и передаче архива, но понял, что это не очень хорошая идея.
Поэтому я использовал следующую команду:
scp -r usrname@ip-address:/var/www/html/txt /var/www/html/txt
Но я заметил, что эта команда просто передает около 50000 файлов, а затем соединение теряется.
Есть ли лучшее решение, которое позволяет мне передавать всю коллекцию файлов? Я имею в виду использовать что-то вроде rsync
передачи файлов, которые не были переданы при потере соединения. Когда произойдет другое прерывание соединения, я снова наберу команду для передачи файлов, игнорируя те, которые уже были успешно переданы.
Это невозможно с scp
, потому что это всегда начинается с первого файла.
источник
-h
флаг, чтобы использовать читаемые человеком единицы. И если вы хотите больше многословия, у вас есть несколько вариантов:-i
и / или-v
/-vv
.ssh
это не вариант для вас, и вам не нужно или вам не нужно шифрование, вы можете попробовать мой скрипт s3.amazonaws.com/skaperen/rsendПросто используйте rsync поверх ssh!
rsync -av username@ip:/var/www/html/txt /var/www/html/
Обратите внимание, как я использовал косые черты в конце папок - это важно .
источник
rsync
странице руководства: «Конечная косая черта в источнике изменяет это поведение, чтобы избежать создания дополнительного уровня каталога в месте назначения. Вы можете рассматривать конечный / источник как« скопировать содержимое этого каталога », а не« скопировать каталог по имени «, но в обоих случаях атрибуты содержащего каталога переносятся в содержащий каталог на месте назначения».-av
?Используйте lftp, он намного быстрее, чем rsync, и лучше всего подходит для зеркалирования веб-сайтов (много маленьких файлов). Он также может передавать параллельно, используя несколько соединений:
Если одно соединение разорвано, оно снова подключится и продолжит работу. Если вы прервете передачу, она пропустит существующие файлы и продолжит.
http://lftp.yar.ru/
источник
Другой способ - передать (необязательно сжатый) tar-файл через ssh:
источник