Команда 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 вычисленная контрольная сумма
Утилита корректно выявила поврежденный файл.