Перенести большой объем данных по сети с одного сервера Linux на другой отлично помогает связка утилит tar, ssh и pv.
На исходном хосте (назовем его host1) сжимаем данные с помощью tar и передаем их по ssh на принимающий хост (host2) и там "на лету", распаковываем.
pv - сокращение от pipeviewer, то есть просмотрщик пайпов (конвееров) в Linux. Данная утилита будет показывать нам скорость обработки данных. По умолчанию в состав дистрибутива pv не входит, поэтому устанавливаем сами:
sudo apt-get install pv
Пример команды переноса данных:
cd /mnt/data; tar -cpzf - *|pv|ssh user@host2 tar -xzf - -C /mnt/data
Происходит следующее:
Параметры tar:
-c - создаем новый архив;
-f - имя файла;
-z – архивация будет происходить посредством архиватора gzip;
-C - Опция принуждает tar на целевом компьютере сменить текущий рабочий каталог на /mnt/data, прежде чем начать какие-либо операции разархивирования;
-p, –preserve-permissions, –извлекать информацию o правах доступа к файлу (по умолчанию для суперпользователя);
-x - распаковать архив;
– - считывает архив из стандартного потока ввода. Опция -C принуждает tar на целевом компьютере сменить текущий рабочий каталог на /mnt/data, прежде чем начать операцию разархивирования.
Авторизацию лучше настроить по открытому ключу. Если вы логинитесь по паролю, то после запроса ввода пароля у вас появится счетчик переданных данных pv, но это не помешает вводу пароля.
В итоге в локальной сети перемещение каталога объемом ~200GB заняло примерно 4,5 часов. При желании можно перенести без сжатия - убрав из ключей tar'а опцию -z.