HDD 克隆和不匹配校验和

HDD 克隆和不匹配校验和

我一直在尝试按照说明将 1Tb HDD 克隆到 1Tb SSD这里

我尝试用 dd (非常慢)和 cat (快得多)克隆它几次,但是当我进行校验和时,它们根本不匹配。

我使用了以下代码这里 sudo sha1sum /dev/sdX

该驱动器设置了一个未加密的启动分区,然后是三个使用 dmcrypt/luks 加密的附加分区。

所有操作均通过未安装两个驱动器的 LiveCD 执行。

在测试中(发现校验和不匹配后),重复的驱动器似乎运行正常,但我怀疑东西可能丢失或损坏。

所以我的问题是:

什么会导致相同大小的驱动器上的校验和不匹配?

其次,加密会产生影响吗?如果有的话,如何在部分加密的设备上执行校验和?

答案1

运行磁盘映像哈希的问题在于它是一位度量;它仅告诉您副本是否逐字节完美。特别是对于其中包含文件系统的磁盘映像,它们几乎没有理由是逐字节的。即使在直接镜像之后,任何一个错误——即使是一个无关紧要的错误——都会破坏它,对磁盘的任何更改也会破坏它,包括来自任何分区操作、安装文件系统或......其他任何原因的更改。

更有用的是挂载涉及的文件系统,然后执行类似cd /mnt/mountpoint; find . -type f -exec sha256sum {} \+ >~/checksums.然后您可以安装第二个磁盘并运行sha256sum -c ~/checksums。这将告诉您哪些文件(如果有)被更改。 (很可能没有任何文件被更改,并且磁盘上的更改是在 FS 元数据或分区边界或其他并不真正重要的内容中。)

答案2

仅当两个输入相同时,它们才具有相同的加密校验和。根据定义,相同的输入必须具有相同的长度。拥有大约相同的长度还不够,它们必须具有完全相同的长度。

实际上,“1TB”HDD 的容量非常接近 1000 4 = 1,000,000,000,000 字节。 “1TB”SSD 通常接近 2 = 1024 4 = 1,099,511,627,776 字节。因此,您的 SSD 比 HDD 稍大,因此副本覆盖了 SSD 的大部分内容,但最后留下了一些未使用的空间。当您计算 SSD 的校验和时,您包含了整个内容,包括未使用的空间。

你可以通过检查硬盘的大小来计算SSD上数据的校验和,这fdisk /dev/sdh会告诉你(假设/dev/sdh是HDD)。还有一个大小,/proc/partitions但以 kB 为单位,没有指示该大小是否不是 1kB 的倍数 — 我认为该大小的所有硬盘的大小都是 4kB 的倍数,所以这应该没问题。然后你可以运行</dev/sdd head -c 1000196757504 | sha1sum(假设/dev/sdd是SSD,1000196757504是HDD的大小)来计算副本的校验和。

但计算这些校验和并不是很有用。如果复制过程中出现错误,cat会告诉你的。比较磁盘对于检查您是否复制了想要复制的内容很有用,但挂载分区也有同样的目的。

请注意,一旦挂载了分区,内容就会有所不同,因为挂载会将一些元数据记录到文件系统中,例如上次挂载日期。即使是只读挂载实际上也可能会修改设备,特别是在日志文件系统上重放日志。

相关内容