Команда md5sum

Команда md5sum позволяет задействовать одноименную утилиту, предназначенную для подсчета и проверки контрольных сумм файлов в соответствии со 128-битным алгоритмом MD5 (Message Digest Algorithm 5). Данная команда в текущее время практически не используется из-за того, что алгоритм MD5 считается небезопасным. В качестве замены пользователям предлагается использовать аналогичную по функционалу утилиту sha256sum, которая использует безопасный, но более медленный алгоритм подсчета контрольных сумм. Тем не менее, рассматриваемая утилита все еще может пригодиться для проверки корректности переданных по сети или скопированных посредством съемного накопителя файлов и обладает преимуществом, заключающемся в высокой скорости работы. Для проверки корректности копирования или передачи файлов утилита использует текстовые файлы специального формата, содержащие их контрольные суммы.

Базовый синтаксис команды выглядит следующим образом:

$ md5sum [параметры] файл1 ...

Команда может принимать имя одного или нескольких файлов для подсчета их контрольных сумм, а также ряд параметров. Так, параметр -c позволяет передать имя текстового файла с контрольными суммами для проверки файлов, параметр --tag позволяет контрольные суммы в формате BSD, параметр --warn — выводить сообщений об ошибках форматирования текстового файла с контрольными суммами, а параметр --quiet — не выводить сообщения «ЦЕЛ» (или «OK») при корректной проверке файлов.

Примеры использования

Подсчет контрольных сумм файлов

Для подсчета контрольных сумм файлов следует передать утилите имена этих файлов, а вывод утилиты перенаправить в файл:

$ md5sum Udev.d DVB.d main.d > checksum.md5
$ cat checksum.md5
aec58a90f95cfa43320022f174907c4f Udev.d
7eaa40b2405ae12c44b28ccfb485cf2a DVB.d
82479465c4472a542e1aa7c544aa9ea9 main.d

Очевидно, что в результате был создан текстовый файл с указанным именем checksum.md5. Сам этот файл содержит контрольные суммы и имена каждого из указанных файлов.

Если вы хотите сохранить контрольные суммы в формате BSD, вы можете использовать параметр --tag:

$ md5sum --tag Udev.d DVB.d main.d > checksumbsd.md5
$ cat checksumbsd.md5
MD5 (Udev.d) = aec58a90f95cfa43320022f174907c4f
MD5 (DVB.d) = 7eaa40b2405ae12c44b28ccfb485cf2a
MD5 (main.d) = 82479465c4472a542e1aa7c544aa9ea9

Файл содержит ту же информацию, но в другом формате. Преимуществом этого формата является явное указание алгоритма, использованного для расчета контрольных сумм.

Проверка корректности передачи по сети или копирования файлов

Для проверки корректности передачи по сети или копирования файлов следует передать имя текстового файла с контрольными суммами и использовать параметр -c:

$ md5sum -c checksum.md5
Udev.d: ЦЕЛ
DVB.d: ЦЕЛ
main.d: ЦЕЛ

Все файлы целы.

Что касается формата BSD, то он также подходит для проверки:

$ md5sum -c checksumbsd.md5
Udev.d: ЦЕЛ
DVB.d: ЦЕЛ
main.d: ЦЕЛ

Вывод аналогичен.

Для проверки работоспособности утилиты достаточно немного модифицировать один из файлов. К примеру, добавим в конец файла main.d пробел:

$ printf ' ' >> main.d

Теперь снова проверим файлы:

$ md5sum -c checksumbsd.md5
Udev.d: ЦЕЛ
DVB.d: ЦЕЛ
main.d: ПОВРЕЖДЁН
md5sum: ПРЕДУПРЕЖДЕНИЕ: НЕ совпала 1 вычисленная контрольная сумма

Утилита корректно выявила поврежденный файл.