Если мы хотим скопировать целиком диск, чтобы потом развернуть его, например, на виртуальной машине, то делаем так. На исходной машине загружаемся с Live-CD, потом набираем команду:
dd if=/dev/sda bs=16384 | pigz -c | ssh host "cat > /file_sda.gz"
Тут host - это удаленная машина на которую мы копируем содержимое диска /dev/sda в файл /file_sda.gz.
А потом можно загрузить целевую виртуальную машину с Live-CD и залить на ее диск содержимое образа. Выполнять это надо с хоста на который мы скопировали образ /file_sda.gz:
pigz -dc /file_sda.gz | ssh VMHost "dd of=/dev/sda"
Тут VMHost - это хост виртуальной машины, загруженный с Live-CD. /dev/sda - это диск на который мы разворачиваем образ.
Посмотреть прогресс выполнения можно послав процессу dd сигнал -USR1:
kill -USR1 $dd_PID
Тут $dd_PID - это PID процесса dd.
Чуть более сложный вариант:
nc -l 1234 | bzip2 -d|dd of=/tmp/image.img bs=4096 dd if=/dev/sda bs=4096| bzip2 -9 | nc 1.2.3.4 1234
Вот так просто и хорошо получается сжатие, передача и распаковка в одном конвейере:
dd if=/dev/sda bs=16384 | pigz -c | ssh username@hostname "pigz -cd | dd of=/dev/sda bs=16384"
Копирование директории со сжатием на лету
tar -cvzf - ./LLMBackstage | ssh teamcity tar -xvzf -
Discussion