/dev/sda
是系统上唯一的磁盘。我想将其保存到另一台服务器上的原始图像。我无法一次性完成,因为网络经常断开。
例如 torrent 可以吗?
答案1
最有效的方法是从中断处恢复传输。
#!/bin/bash
source_disk=/dev/sda
host=1.2.3.4
host_image=/foo/bar.img
bytes_transferred() {
if ! ssh "$host" "test -e '$host_image'"; then
echo 0
return
fi
ssh "$host" "stat '%s' '$host_image'"
}
bytes_total() {
echo $(( $(blockdev --getsz $source_disk) * 512 ))
}
while (( $(bytes_transferred) < $(bytes_total) )); do
( dd bs=1 skip=$(bytes_transferred) count=0 2>/dev/null && cat ) < $source_disk | ssh "$host" "cat >> '$host_image'"
done
这未经测试,但应该有效。当目标文件的大小小于本地磁盘的大小时,它基本上会继续循环。每次循环重新启动时,它都会从之前停止的位置开始传输