remote backup (dd) @linux

參考自 https://unix.stackexchange.com/questions/132797/how-to-dd-a-remote-disk-using-ssh-on-local-machine-and-save-to-a-local-disk

run from remote computer 從本地備份到遠端

$ dd if=/dev/sda | gzip -1 - | ssh user@local dd of=image.gz

看進度

# apt install pv
# dd if=/dev/sda | gzip -1 - | pv | ssh user@local dd of=/path/to/image.gz

run from local computer

$ ssh user@remote "dd if=/dev/sda | gzip -1 -" | dd of=image.gz
# local machine backup
sudo dd if=/dev/hda of=~/hdadisk.img
#local machine restore
sudo dd if=hdadisk.img of=/dev/hda
這種做法通常用於備份碟比原始碟小

如果需要壓縮則
sudo dd if=/dev/sda bs=128M | gzip -9 | gzip > /path/to/hdadisk.img.gz
檔案太大的話
sudo dd if=/dev/sda bs=128M | gzip -9 -c | split -b 2G - /path/to/sdadisk.img.gz.

還原
sudo gzip -dc sdadisk.img.gz | dd of=/dev/sda bs=128M
還原大檔
cat /path/to/sdadisk.img.gz.* | gzip -dc | dd of=/dev/sda bs=128M
另外在dd後面加上 status=progress 可以顯示進度
如果忘了加的話, 再開一個shell輸入
sudo kill -USR1 $(pgrep ^dd)
每5秒讀一次
watch -n5 'sudo kill -USR1 $(pgrep ^dd)'

發佈留言