linux_faq:копирование-дисков-по-сети-с-помощью-dd-со-сжатием-на-лету

Если мы хотим скопировать целиком диск, чтобы потом развернуть его, например, на виртуальной машине, то делаем так. На исходной машине загружаемся с 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" 
Enter your comment. Wiki syntax is allowed:
R A A G N
 
  • linux_faq/копирование-дисков-по-сети-с-помощью-dd-со-сжатием-на-лету.txt
  • Last modified: 2019/06/03 14:38
  • by admin