使用 DD 将 600GB 驱动器通过 SSH 克隆到远程位置,仅分配了 60 GB 的数据

使用 DD 将 600GB 驱动器通过 SSH 克隆到远程位置,仅分配了 60 GB 的数据

请原谅我糟糕的英语。我正在尝试找到使用 SSH 将 HDD 服务器克隆到远程目标位置的方法,并且如果可能的话,动态压缩数据以最大限度地减少它们之间不必要的数据传输。主要目标是在物理设备和 VPS 设备之间进行服务器迁移。

宽带约为 50 - 60 MB/s(传输速度为 6-8 MB/s)。运行完整 dd 复制估计需要 28 小时的复制时间。我想尽可能缩短该时间,而不减少源服务器中的分区大小(我想要原样的源)。

原点服务器和目标服务器处于离线状态(均以救援模式启动)。

原始服务器上的数据为 60 GB。分区的其余部分用零填充。

有办法将其存档吗?

到目前为止,我使用此命令克隆整个磁盘(但不是很大):

dd if=/dev/sda status=progress bs=10M conv=fsync | ssh user@ip dd of=/dev/sda

这可行,但这次我尝试使用太多数据来实现......

有任何想法吗?...

提前向大家表示感谢。致以最诚挚的问候!

D.

答案1

好的,伙计们……最后,服务器迁移已成功执行!数据复制时间约为 5 小时 30 分钟。命令和总时间:

dd if=/dev/sda bs=5M conv=fsync status=progress | gzip -c -9 | ssh user@DestinationIP 'gzip -d | dd of=/dev/sda bs=5M'
751593062400 bytes (752 GB, 700GiB) copied, 19185.8 s, 39.2 MB/s

我要感谢大家的评论,特别是 Tom Yan。希望这能帮助到其他人!此致!

答案2

好的伙计们。我带着新发现回来了。最后,我想我明白了。感谢 Tom Yan 的指导,我意识到在源端使用管道 gzip -c,在目标端使用 gzip -d 就可以解决问题。

我在 ssh 连接中尝试了 -C 标志,对速度相对没有影响。

因此,经过多次测试后,这个命令解决了我的问题:

dd if=/dev/sda bs=4MiB conv=sync status=progress | gzip -c -9 | ssh user@DestinationIP 'gzip -d | dd of=/dev/sda bs=4MiB'

正如 Tom Yan 的帖子一样,首先(我的错)我没有引用远程主机的整个命令行,结果没有改变......所以,我不明白引用的原因......当然,最后我把它们放进去了......但不明白为什么......

相关内容