Ответы:
Одно слово: rsync
.
Обратите внимание, что если у вас медленная связь или сервер находится под большой нагрузкой, инструмент, используемый для копирования, не будет узким местом, и любой способ копирования будет медленным в любом случае.
Это должно дать вам базовое использование для копирования между вашим локальным компьютером и удаленным сервером: http://oreilly.com/pub/h/38
Чтобы скопировать с локального компьютера на удаленный сервер (конечно, вам необходимо заменить пути, имя пользователя и адрес хоста):
rsync -avz -e ssh /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
-a
архив-v
подробный-z
компресс-e ssh
«использовать SSH туннель»Для того, чтобы скопировать в другом направлении, переключать дорожки (Первый из , второй находится в ):
rsync -avz -e ssh remoteuser@remotehost.somewhere.example.com:/path/on/server /path/on/local/computer
Но rsync полезен даже для копирования на одном сервере:
rsync -av /path-to/copy/from /path_to/copy/to
-z
для копирования или копирования по локальной сети в пределах одного аппарата; Тестирование с -z
копированием через Интернет и без него (одно или другое может быть быстрее, в зависимости от многих вещей).
-e ssh
теперь это значение по умолчанию для удаленных хостов, поэтому нет необходимости передавать эту опцию явно.
Другим словом: scp
scp /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
Для сделок с одним выстрелом удобен scp. Если файлов много, то rsync - хорошая идея. Если соединение разорвано, rsync может определить, где оно было прервано.
Я знал, что rsync имеет сжатие ( -z
), и только что узнал, что scp также работает ( -C
).
В вашей настройке, вероятно, достаточно rsync ... но, например, если есть много маленьких файлов, может быть быстрее сначала заархивировать файлы, чем передавать, а затем через rsync. Это связано с тем, что передача владельца, временных меток и разрешений иногда тяжелее, чем сам файл, если файл маленький. Tar объединит всю эту информацию в одном файле, а rsync скопирует большие блоки.
Или даже лучше, если безопасность не требуется, используйте tar и nc:
В пункте назначения подготовьте получающего демона, распакуйте его и распакуйте:
nc -l -p 12345 | pigz -d | tar xvf -
В источнике tar все, параллельное сжатие и отправка его по назначению:
tar cvf - ./ | pigz | nc host 12345
-z
опцию для локального копирования, так как это добавляет ненужные накладные расходы. IMHO, вы должны использовать только-z
при использовании rsync через медленное сетевое соединение. Если вы копируете большие объемы данных на 100Base-T, у вас все будет в порядке без-z
. Благодаря быстрому сетевому соединению сжатие может привязать ваш ЦП и заморозить другие процессы.