Как автоматизировать сравнение значений хеша md5sum для большого количества файлов

Минимальный Ubuntu. Размер iso составляет 5-20Mb, но фактический размер установки, конечно, больше. Минимальный CD загружает пакеты из онлайн-архивов во время установки, а не предоставляет их на установочный компакт-диск.

Просто добавьте, что окончательный размер установки может быть минимальным Ubuntu, что будет означать систему командной строки. На этой же странице содержатся инструкции по установке небольшого дискового пространства с использованием CLI и GUI-систем, но проверьте используемое дисковое пространство перед продолжением из системы командной строки в систему GUI.

1
задан 3 April 2014 в 21:34

2 ответа

Одна из возможностей заключается в использовании утилиты cfv

sudo apt-get install cfv

CFV поддерживает множество типов хэшей, и как создание тестового, так и хэш-файла.

# List the files
$ ls
test.c
# Create a hash file
$ cfv -tmd5 -C
temp.md5: 1 files, 1 OK.  0.001 seconds, 302.7K/s
# Test the hash file
$ cfv -tmd5 -T
temp.md5: 1 files, 1 OK.  0.001 seconds, 345.1K/s
# Display the hash file
$ cat *.md5
636564b0b10b153219d6e0dfa917d1e3 *test.c
2
ответ дан 24 May 2018 в 09:50
  • 1
    спасибо за ваш ответ, но ему нужно установить еще одну утилиту. В то же время он поддерживает и другие форматы. Хорошо знать об этом. Но в данном контексте я поеду с другим ответом. В любом случае +1 от меня. – souravc 3 April 2014 в 22:13

Да, для этой команды требуется звездочка *. Взгляните на этот пример.

Это двоичный файл, и пусть правильное значение 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 суммы из FILE и проверить их

Если значение md5sum совпадает с двоичным файлом, вы получите этот выход

[root@Linux ~]# md5sum -c <<< "exampleofcorrectmd5value00000000" *binary-file.run.tgz"
binary-file.run.tgz: OK
[root@Linux ~]# 

И это когда 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 ~]# 

Кроме того, ll получите то же сообщение об ошибке, если md5sum не содержит в нем 32 шестнадцатеричных символа. В этом примере у него всего 31 символ.

[root@Linux ~]# md5sum -c <<< "exampleofmd5valuelessthan32char *binary-file.run.tgz" 
md5sum: standard input: no properly formatted MD5 checksum lines found
[root@Linux ~]# 

Решение для многих файлов

Если у вас много файлов и вы хотите автоматизировать процесс, вы можете выполнить следующие действия: [ ! d11]

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

user@Ubuntu:~$ md5sum * | tee md5sum.txt
0bee89b07a24ae27c83fc3d5951213c1  file-a
1b2297c171a9a450d184871ccf6c9ad4  file-b
7f4d13d9b0b6ac086fd68637067435c5  file-c
user@Ubuntu:~$ 

Чтобы проверить md5sum для всех файлов, используйте следующую команду:

user@Ubuntu:~$ md5sum -c md5sum.txt 
file-a: OK
file-b: OK
file-c: OK
user@Ubuntu:~$ 

Это пример, если значение md5sum не совпадает с файлом. В этом случае я собираюсь изменить file-b content

user@Ubuntu:~$ echo "new data" > file-b 
user@Ubuntu:~$ 

См., Это сообщение об ошибке. Надеюсь, это поможет.

user@Ubuntu:~$ md5sum -c md5sum.txt 
file-a: OK
file-b: FAILED
file-c: OK
md5sum: WARNING: 1 computed checksum did NOT match
user@Ubuntu:~$ 
1
ответ дан 24 May 2018 в 09:50

Другие вопросы по тегам:

Похожие вопросы: