Достаточно просто использовать dd
и md5sum
/ sha1sum
, но, как уже было сказано ранее, будьте осторожны, ваше устройство не того же размера, что и ваш файл, поэтому суммы будут отличаться.
Вот как ты еще можешь это сделать
Для начала вам нужно узнать размер файла:
$ stat -c '%s' debian-live-8.2.0-amd64-lxde-desktop.iso
1003487232
Затем, чтобы быть крутым с вашими системными вызовами, вы должны получить это кратное хорошей степени двух, например 4096
, умножение двух ДОЛЖНО дать точно такой же размер файла, другими словами, вы будете проверять слишком мало или слишком много байтов, что приводит к неправильной контрольной сумме.
$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000
Я счастлив, 4096 × 244992 = 1003487232
так что 4096 хорошо для меня (и будет для вас, вероятно), поэтому я могу использовать размер блока 4096
(типичный) и количество блоков 244992
.
Не забудьте записать файл на USB-ключ ...
$ dd if=debian-live-8.2.0-amd64-lxde-desktop.iso of=/dev/sd? && sync
И знаете, используя известный размер блока и количество блоков, вы можете прочитать точное количество байтов ключа и проверить их:
$ dd if=/dev/sdb bs=4096 count=244992 | sha1sum
b0dbe4ca8f526d1e43555459c538607d4a987184
(Да, md5sum
это намного быстрее, чем это, sha1sum
но это явно не ваше узкое место, узкое место - это пропускная способность USB, спасибо, что заметили).
Или, короче говоря:
dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum