我只是通过以下方式备份了整个硬盘(50GB)ssh
:
dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"
现在检查文件完整性的最佳方法是什么image.img
,即如何验证所有内容是否正确复制?
我只是通过以下方式备份了整个硬盘(50GB)ssh
:
dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"
现在检查文件完整性的最佳方法是什么image.img
,即如何验证所有内容是否正确复制?
Answers:
如果命令成功终止,则备份是正确的,除非出现硬件故障(这可能同样影响您可能执行的任何验证)。如果硬件出现故障,以后可能会变得不正确,但是大多数存储硬件都会检测到损坏。
这里有一个警告:在管道中,shell不会从左侧报告错误。(这是因为在右边并不需要阅读所有的数据,例如一个相当常见的场景some_command | head
,以及左侧的模具,因为它的输出不再想。)因此,这里从一个读错误dd
会被忽略。在bash中,设置pipefail
选项以报告管道所有部分中的错误。
另外,请注意dd bs=…
忽略一些错误,dd
并且通常比替代方法慢。我建议完全不要使用dd
:仅复制整个文件没有任何好处。与您可能在某处阅读的内容相反,dd
它不是具有特殊属性的低级磁盘访问命令,绝对没有魔力dd
,而魔力就在/dev/hda
。
shopt -s pipefail
set -e
</dev/hda buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"
尽管如此,如果您希望检查备份,最好的方法是在每一侧进行加密的校验和并进行比较。例如:
ssh myuser@myhost "sha1sum image.img" &
sudo sha1sum /dev/hda
检查两个校验和是否相同。
请注意,这会在检查时测试备份和原始文件是否相同。您/dev/hda
所做的任何更改,包括即使不进行任何更改都将挂载和卸载文件系统(这将更新许多文件系统的上次安装日期),将更改校验和。如果以后要验证完整性,请记下备份时磁盘的校验和。
/dev/hda
已经改变,因为备份被做了哈希将不匹配。