Você está reunindo os arquivos na ordem errada, devido ao desnecessário ls -t
.
cat x* > out.iso
funcionaria bem e forneceria a saída correta. O POSIX garante que a globbing lhe dará arquivos na ordem de classificação.
Aqui está um trecho dos comandos que eu executei como split
e, em seguida, cat
um arquivo:
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
Por que o hash MD5 é diferente do que é essencialmente o mesmo arquivo?
Você está reunindo os arquivos na ordem errada, devido ao desnecessário ls -t
.
cat x* > out.iso
funcionaria bem e forneceria a saída correta. O POSIX garante que a globbing lhe dará arquivos na ordem de classificação.
Você estava reconstituindo os arquivos na ordem errada. Com o uso de ls -t
, os arquivos são listados primeiro (ou seja, último fragmento dividido, no seu caso) primeiro.
Tem certeza de que está combinando-os na mesma ordem? Se você combiná-los em uma ordem diferente, certamente deve esperar que a soma MD5 seja diferente.
Se você os combinasse na mesma ordem, os bits seriam os mesmos e você obteria a mesma soma de md5. Se os bits não são os mesmos, provavelmente significa que sua RAM está ruim. Veja memtest86 .
Eu acho, é por causa de ls -t
, você está classificando por tempo, então último antes do primeiro no arquivo resamble
Porque você não está colocando-os juntos novamente na mesma ordem em que eles começaram. Você está certo, se você remontá-los corretamente, o md5sum deve combinar. Aqui está um exemplo trivial:
$ 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
Tente isto:
$ cat x* > good.txt
$ cat good.txt
This is the first file
This is the second file
This is the third file.
De alguma forma, alguns bits ficaram corrompidos, foram reordenados, foram adicionados ou foram removidos no processo de divisão e junção.