Вот выборка команд, которые я выполнил как я 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 отличается для того, каков по существу тот же файл?
Вы воссоздавали файлы в неправильном порядке. С использованием ls -t
, файлы перечислены новейшие (т.е. в последний раз разделите блок в Вашем случае), сначала.
Вы уверены, что комбинируете их в том же порядке? При объединении их в другом порядке необходимо, конечно, ожидать, что сумма MD5 будет отличаться.
При объединении их в том же порядке биты были бы тем же, и Вы получили бы ту же сумму md5. Если биты не являются тем же, это, вероятно, означает, что Ваша RAM плоха. См. memtest86.
Поскольку Вы не откладываете их вместе в том же порядке, в котором они запустили. Вы правы при повторной сборке их правильно 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.
Так или иначе некоторые биты стали поврежденными, были переупорядочены, были добавлены или были удалены в процессе разделения и возражения.