2

Вот выдержка из команд, которые я выполнил, когда 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 отличается от того, что по сути является одним и тем же файлом?

6 ответов6

14

Вы объединяете файлы в неправильном порядке из-за ненужного ls -t .

cat x* > out.iso будет в порядке и выдаст правильный вывод. POSIX гарантирует, что глобализация даст вам файлы в отсортированном порядке.

5

Вы восстанавливали файлы в неправильном порядке. С помощью ls -t файлы перечисляются самыми новыми (т. Е. Последний разделенный фрагмент в вашем случае) первым.

3

Вы уверены, что объединяете их в одном и том же порядке? Если вы объедините их в другом порядке, вы, безусловно, должны ожидать, что сумма MD5 будет другой.

Если вы объедините их в одном и том же порядке, биты будут одинаковыми, и вы получите ту же сумму md5. Если биты не совпадают, это, вероятно, означает, что у вас плохая память. Смотрите memtest86.

3

Я думаю, это из-за ls -t , вы сортируете по времени, поэтому последний перед первым в файле resamble

3

Потому что вы не соединяете их в том же порядке, в котором они начали. Вы правы, если вы соберете их правильно, сумма md5 должна совпадать. Вот тривиальный пример:

$ 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.
0

Каким-то образом некоторые фрагменты были повреждены, переупорядочены, добавлены или удалены в процессе разделения и объединения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .