Поиск по сайту:

Объяснение команды Linux md5sum для начинающих (5 примеров)


На этой странице

  1. Команда Linux md5sum
  2. Q1. Как отобразить значение хеша?
  3. Вопрос 2. Как проверить несколько файлов одновременно?
  4. Вопрос 3. Как отображать только измененные файлы?
  5. Q4. Как обнаружить изменения в скрипте?
  6. В5. Как определить недопустимые значения хэша?
  7. Заключение

При загрузке файлов, особенно при установке файлов, загруженных с веб-сайта, через торрент-протокол или FTP-сервер, рекомендуется убедиться, что загрузка действительна. Веб-сайты часто отображают хэш-значение для каждого файла, чтобы убедиться, что загрузка завершена правильно. В этой статье будет обсуждаться команда md5sum, которую вы можете использовать для проверки загрузки. Три другие утилиты, sha1sum, sha256sum и sha512sum, работают так же, как и md5sum. Это руководство совместимо со всеми основными дистрибутивами Linux.

Команда Linux md5sum

Команда md5sum печатает 32-символьную (128-битную) контрольную сумму данного файла, используя алгоритм MD5. Ниже приведен синтаксис команды этого инструмента командной строки:

md5sum [OPTION]... [FILE]...

А вот как это объясняет справочная страница md5sums:

Print or check MD5 (128-bit) checksums.

Следующие примеры в стиле вопросов и ответов дадут вам еще лучшее представление об основном использовании md5sum.

Примечание. В качестве входных файлов рекомендуется использовать три файла с именами file1.txt, file2.txt и file3.txt. в наших примерах. Текст в каждом файле указан ниже.

file1.txt:

hi
hello
how are you
thanks.

файл2.txt:

hi
hello to you
I am fine
Your welcome!

файл3.txt:

hallo
Guten Tag
Wie geht es dir
Danke.

Q1. Как отобразить значение хеша?

Используйте команду без каких-либо параметров, чтобы отобразить хеш-значение и имя файла.

md5sum file1.txt

Вот вывод, который эта команда произвела в нашей системе:

[Documents]$ md5sum file1.txt
1ff38cc592c4c5d0c8e3ca38be8f1eb1  file1.txt
[Documents]$

Вывод также можно отобразить в формате BSD с помощью параметра --tag.

md5sum --tag file1.txt
[Documents]$ md5sum --tag file1.txt
MD5 (file1.txt) = 1ff38cc592c4c5d0c8e3ca38be8f1eb1
[Documents]$

Q2. Как проверить несколько файлов одновременно?

Команда md5sum может одновременно проверять несколько файлов. Мы добавим файлы file2.txt и file3.txt, чтобы продемонстрировать возможности.

Если вы записываете хэши в файл, вы можете использовать этот файл, чтобы проверить, изменился ли какой-либо из файлов. Здесь мы записываем хэши файлов в хэши файлов, а затем используем их для проверки того, что ни один из файлов не изменился.

md5sum file1.txt file2.txt file3.txt > hashes
md5sum --check hashes
[Documents]$ md5sum file1.txt file2.txt file3.txt > hashes
[Documents]$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: OK
[Documents]$ 

Теперь изменим file3.txt, добавив один восклицательный знак в конец файла, и перезапустим команду.

echo "!" >> file3.txt
md5sum --check hashes
[Documents]$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[Documents]$ 

Вы можете видеть, что файл file3.txt изменился.

Q3. Как отображать только измененные файлы?

Если у вас есть много файлов для проверки, вы можете захотеть отобразить только файлы, которые были изменены. Используя опцию \--quiet\, md5sum будет отображать только те файлы, которые были изменены.

md5sum --quiet --check hashes
[Documents]$ md5sum --quiet --check hashes
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[Documents]$

Q4. Как обнаружить изменения в скрипте?

Вы можете использовать md5sum в скрипте. Используя опцию \--status\, md5sum не будет печатать никаких результатов. Вместо этого код состояния возвращает 0, если изменений нет, и 1, если файлы не совпадают. Следующий скрипт hashes.sh вернет 1 в коде состояния, потому что файлы изменились. Файл скрипта ниже:

sh hashes.sh
hashes.sh:
#!/bin/bash
md5sum --status --check hashes
Result=$?
echo "File check status is: $Result"
exit $Result

[Documents]$ sh hashes.sh
File check status is: 1
[ Documents]$ 

Q5. Как определить недопустимые значения хэша?

md5sum может сообщить вам, если у вас есть неверные хэши, когда вы сравниваете файлы. Чтобы предупредить вас, если какие-либо значения хеша неверны, вы можете использовать параметр --warn. В этом последнем примере мы будем использовать sed для вставки дополнительного символа в начале третьей строки. Это изменит хэш-значение в хэшах файлов, сделав его недействительным.

sed -i '3s/.*/a&/' hashes
md5sum --warn --check hashes

Это показывает, что третья строка имеет недопустимый хэш.

[Documents]$ sed -i '3s/.*/a&/' hashes
[Documents]$ md5sum --warn --check hashes
file1.txt: OK
file2.txt: OK
md5sum: hashes: 3: improperly formatted MD5 checksum line
md5sum: WARNING: 1 line is improperly formatted
[Documents]$

Заключение

md5sum — это простая команда, которая может быстро проверить один или несколько файлов, чтобы определить, изменился ли какой-либо из них по сравнению с исходным файлом. Для получения дополнительной информации о md5sum см. его справочную страницу.