Если объем данных огромен и содержит огромное количество файлов, а также нет места (времени) для создания архива, но передать нужно сейчас и очень быстро (чтобы получить более высокую скорость передачи данных), рекомендую использовать следующие команды.
На стороне получателя данных переходим в каталог, в который необходимо разместить полученные данные, и выполняем такую команду:
nc -l 12345 | tar xvf -
На стороне источника данных так же переходим в каталог, в котором размещён передаваемый каталог, и выполняем такую команду:
tar -cf - ./our_directory/ | nc target_host 12345
вариант с выводом объема трафика
tar -cf - ./our_directory/ | pv | nc target_host 12345
Где:
12345 - номер порта, по которому будет производиться обмен данными;
target_host - ip-адрес или hostname компьютера, на который будут передаваться данные.
---
ещё какие-то доки
moo.nac.uci.edu/~hjm/HOWTO_move_data.html#tarnetcat
---
У nc есть один существенный минус. Порт на сервере для передачи данных надо открыть в файрволле, а после передачи не забыть закрыть. А для передачи данных с локального ПК на сервер, надо пробрасывать порт на локальный комп на маршрутизаторе (если конечно сквозная маршрутизация не настроена средствами ВПН или напрямую). Для ssh порт как правило открыт для подключений извне, так что дополнительных лействий совершать не придется.
Далее, хорошо сжимаемые данные (текстовики, образы виртуалок, дампы баз) принято гонять в сжатом виде. Жать можно на лету, либо встроенными в scp инструментами, либо жать сторонними утилитами вроде pigz и гонять данные через ssh и пайпы. Например так:
dd bs=4M if=template.img | pv | pigz -9c | ssh user@host "unpigz -c > /vm/template.img"
Подобным способом можно не только гонять файлы, но и переливать образ на удаленное устройство.
sudo dd bs=4M if=/dev/ssd1/vm | pv | pigz -9c | ssh user@host "unpigz -c | sudo dd bs=4M of=/dev/ssd2/vm"
---
https://www.stableit.ru/2012/03/gzip-vs-pigz.html