Но сложная часть состоит в том, чтобы сравнить хеш-значение с точным.
Трудно сравнить выводимые 32 символа с оригинальным / точным значением хеша любым человеком для большого количества файлов. Прежде всего, работа будет очень однообразной, и в ней будет много ошибок.
Можно ли автоматизировать процесс сравнения, предпочтительно в CLI?
-c, --check
read MD5 sums from the FILEs and check them
Цитата из вики
Примечание. Между каждым значением md5sum и именем файла должно быть два пробела для сравнения. В противном случае возникнет следующая ошибка: «не найдены правильно отформатированные строки контрольной суммы MD5».
Также вы можете просто прочитать хэши md5 из файла
$ md5sum -c md5sum_formatted_file.txt
Ожидается файл с форматом:
<md5sum_checksum><space><space><file_name>
Около *и <space>после MD5 сумма хеша. В человеке мало заметки:
When checking, the
input should be a former output of this program. The default mode is
to print a line with checksum, a character indicating input mode ('*'
for binary, space for text), and name for each FILE.
А вот ссылка на stackoverflow, где я нашел ответ на вопрос, почему мы иногда должны различать binaryфайлы и textфайлы.
спасибо за ваш ответ, но для этого нужно установить другую утилиту. В то же время он обеспечивает поддержку и в другом формате. Это полезно знать об этом. Но в данном контексте я пойду с другим ответом. В любом случае +1 от меня.
souravc
1
Да, *для этой команды требуется звездочка . Посмотрите на этот пример.
Это двоичный файл, и допустим, правильное значение md5sum равно exampleofcorrectmd5value00000000(32 шестнадцатеричного символа)
[root@Linux update]# ls -lh
total 137M
-rw-r--r-- 1 root root 137M Nov 5 13:01 binary-file.run.tgz
[root@Linux update]#
-c, --check
читать суммы MD5 из файлов и проверять их
Если значение md5sum совпадает с двоичным файлом, вы получите этот вывод
[root@Linux update]# md5sum -c <<< "exampleofwrongmd5value0000000000 *binary-file.run.tgz"
binary-file.run.tgz: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
[root@Linux update]#
Без звездочки *вы получите следующее сообщение об ошибке, даже если значение md5 верное
[root@Linux ~]# md5sum -c <<< "exampleofcorrectmd5value00000000 binary-file.run.tgz"
md5sum: standard input: no properly formatted MD5 checksum lines found
[root@Linux ~]#
Кроме того, вы получите то же сообщение об ошибке, если в md5sum нет 32 шестнадцатеричных символов. В этом примере это всего 31 символ.
[root@Linux ~]# md5sum -c <<< "exampleofmd5valuelessthan32char *binary-file.run.tgz"
md5sum: standard input: no properly formatted MD5 checksum lines found
[root@Linux ~]#
Решение для многих файлов
Если у вас много файлов и вы хотите автоматизировать процесс, вы можете выполнить следующие действия:
user@Ubuntu:~$ ls -lh
total 12K
-rw-rw-r-- 1 user user 4 Nov 5 14:54 file-a
-rw-rw-r-- 1 user user 4 Nov 5 14:54 file-b
-rw-rw-r-- 1 user user 4 Nov 5 14:54 file-c
user@Ubuntu:~$
Сгенерируйте md5sum для каждого файла и сохраните его в md5sum.txt.
*
, но вики сказал, что это должно быть два пробела. Я буду искать ...*
в ответОдна возможность - использовать утилиту cfv.
CFV поддерживает много типов хэшей, а также тестирование и создание хеш-файлов.
источник
Да,
*
для этой команды требуется звездочка . Посмотрите на этот пример.Это двоичный файл, и допустим, правильное значение md5sum равно
exampleofcorrectmd5value00000000
(32 шестнадцатеричного символа)Если значение md5sum совпадает с двоичным файлом, вы получите этот вывод
И это когда значение md5sum не совпадает
Без звездочки
*
вы получите следующее сообщение об ошибке, даже если значение md5 верноеКроме того, вы получите то же сообщение об ошибке, если в md5sum нет 32 шестнадцатеричных символов. В этом примере это всего 31 символ.
Решение для многих файлов
Если у вас много файлов и вы хотите автоматизировать процесс, вы можете выполнить следующие действия:
Сгенерируйте md5sum для каждого файла и сохраните его в md5sum.txt.
Чтобы проверить md5sum для всех файлов, используйте следующую команду.
Это пример, если значение md5sum не совпадает с файлом. В этом случае я собираюсь изменить
file-b
содержаниеВидите, это сообщение об ошибке. Надеюсь это поможет.
источник