是否有一个实用程序(或一些 shell 魔法)可以让我比较两个块设备?
详细信息:我有一个大型 (0.5 TB) RAID 设备,我已使用 dd 将其备份到稍大的 SATA 设备。该设备上有多个分区,但是我从“父”设备复制而不是分区设备节点(例如,我复制 /dev/hda 而不是 /dev/hda1)。
我想验证备份是否良好/正确。
我曾考虑过在每个设备上运行 md5sum ,但这不会给我一个准确的结果,因为第二个设备比第一个设备稍大,因此额外的字节会改变哈希值。
答案1
我会使用命令
cmp /dev/hda /dev/hdb
它会停在第一个不同的字节处,写出它的偏移量,或者停在较短字节的 EOF 处。
答案2
答案3
根据驱动器的实际容量,挂载文件系统并执行操作可能是最快的
diff -qr /mnt/root1 /mnt/root2
否则,我会这样说:
diff -q <(dd bs=1M count=500K if=/dev/sda) <(dd bs=1M count=500K if=/dev/sdb)
显然要弄清楚你需要做多大,bs
并count
停在较小驱动器的末端(或者在更方便的情况下停在之前)。
或者,由于 enzotib 的评论,看起来您可以使用cmp
,但您需要该-n
标志来将字节数限制为两个驱动器中较短的一个。
cmp /dev/sda /dev/sdb -n 500GB
答案4
md5sum
您可以使用如下方式比较两个不同大小的块设备:
(假设较小的设备是/dev/sda
)
# md5sum /dev/sda && head -c $(blockdev --getsize64 /dev/sda) /dev/sdb | md5sum