Команда b2sum

Команда b2sum позволяет задействовать одноименную утилиту, предназначенную для подсчета и проверки контрольных сумм файлов в соответствии со 512-битным алгоритмом BLAKE2. Данная команда в практически не используется из-за новизны алгоритма BLAKE2, но вполне пригодна для проверки корректности переданных по сети или скопированных посредством съемного накопителя файлов. По заверениям автора алгоритма, он «быстрее MD5, SHA-1, SHA-2 и SHA-3 и, как минимум, так же безопасен, как новейший международно стандартизированный алгоритм SHA-3». Что касается алгоритма BLAKE2, то он стандартизирован в формате рабочего предложения RFC 7693. Для проверки корректности копирования или передачи файлов утилита использует текстовые файлы специального формата, содержащие их контрольные суммы.

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

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

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

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

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

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

$ b2sum Udev.d DVB.d main.d > checksum.b2
$ cat checksum.b2 
56a611c6c40dc98c9e974e9007c4e55451eb9edc66826c6cecfeb6e44d57084d1f7da819648df7a4082dc6b7619a2d752300a53e6e88a323a24438a3aa8a5957 Udev.d
4412c8656fb8a22eb6fdcad76770269987bc87a496a5d0589cc66992b68a2b1f16b67cf3457477180c46d2017ee54c710ba88dffb6610292526bb21c40cc0324 DVB.d
f19fabbf11f5e1806d61d0b331763e61951104ca87e33d3af1f680ea6c58e4b0604374049ba6da9d2997a8e6983019b6c5e016ff5abacc40323ebf3ffb05a9c0 main.d

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

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

$ b2sum --tag Udev.d DVB.d main.d > checksumbsd.b2
$ cat checksumbsd.b2 
BLAKE2b (Udev.d) = 56a611c6c40dc98c9e974e9007c4e55451eb9edc66826c6cecfeb6e44d57084d1f7da819648df7a4082dc6b7619a2d752300a53e6e88a323a24438a3aa8a5957
BLAKE2b (DVB.d) = 4412c8656fb8a22eb6fdcad76770269987bc87a496a5d0589cc66992b68a2b1f16b67cf3457477180c46d2017ee54c710ba88dffb6610292526bb21c40cc0324
BLAKE2b (main.d) = f19fabbf11f5e1806d61d0b331763e61951104ca87e33d3af1f680ea6c58e4b0604374049ba6da9d2997a8e6983019b6c5e016ff5abacc40323ebf3ffb05a9c0

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

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

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

$ b2sum -c checksum.b2
Udev.d: ЦЕЛ
DVB.d: ЦЕЛ
main.d: ЦЕЛ

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

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

$ b2sum -c checksumbsd.b2
Udev.d: ЦЕЛ
DVB.d: ЦЕЛ
main.d: ЦЕЛ

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

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

$ printf ' ' >> main.d

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

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

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