下面是我运行的命令split
和cat
文件的摘录:
sh-3.2# split -b 600m bt4-final.iso
sh-3.2# ls -hal
total 6132096
drwxr-xr-x 6 root staff 204B Jan 12 19:59 .
drwxr-xr-x 13 alien staff 442B Jan 12 19:54 ..
-rw-r--r-- 1 root staff 1.5G Jan 12 19:56 bt4-final.iso
-rw-r--r-- 1 root staff 600M Jan 12 19:58 xaa
-rw-r--r-- 1 root staff 600M Jan 12 19:59 xab
-rw-r--r-- 1 root staff 297M Jan 12 19:59 xac
sh-3.2# cat $(ls -t x*) > bt4-final-reasembled.iso
sh-3.2# ls
bt4-final-reasembled.iso xaa xac
bt4-final.iso xab
sh-3.2# md5 bt4*
MD5 (bt4-final-reasembled.iso) = edd4f24f3abcabb8a447a69eaa30ff39
MD5 (bt4-final.iso) = af139d2a085978618dc53cabc67b9269
为什么本质上是同一个文件的 MD5 哈希值会不同?
答案1
由于不必要的原因,您按错误的顺序将文件放在一起ls -t
。
cat x* > out.iso
就可以了,并给出正确的输出。POSIX 保证通配符将按排序顺序返回文件。
答案2
您以错误的顺序重新构建文件。使用 时ls -t
,文件将首先列出最新的文件(即,在您的情况下为最后拆分的块)。
答案3
你确定你按照相同的顺序组合它们吗?如果你按照不同的顺序组合它们,你肯定会发现 MD5 和会有所不同。
如果您按相同的顺序组合它们,则位将相同,并且您将获得相同的 md5 总和。如果位不相同,则可能意味着您的 RAM 有问题。请参阅memtest86。
答案4
因为您没有按照它们开始的顺序将它们重新组合在一起。您说得对,如果您正确地重新组合它们,md5sum 应该匹配。这是一个简单的例子:
$ cat > xaa
This is the first file
$ cat > xab
This is the second file
$ cat > xac
This is the third file.
$ cat $(ls -t x*) > final.txt
$ cat final.txt
This is the third file.
This is the second file
This is the first file
尝试这个:
$ cat x* > good.txt
$ cat good.txt
This is the first file
This is the second file
This is the third file.