Расчет MD5 компакт-дисков (07.10.2023). Печать
2023 - Октябрь
07.10.2023 21:05
Save & Share
Шел 2023 год. В РФ упорно продолжают использоваться компакт-диски для передачи серьезных данных. И ладно бы DVD - подумать страшно: CD. Низкотехнологичные, малоемкие, дорогущие из расчета руб/ГБ, тормоза технологического прогресса, суть ереси на пути развития человечества.

И у высокотехнологичных надежных операционных систем, на примере Astra Linux SE v.1.7.4 (сарказм), есть необходимость считать контрольные суммы этих мерзких сущностей. Дело дошло даже до багов (см. конец статьи). Пришлось написать удобный скрипт их расчета.



Сложного ничего не было; кроме времяемкого тестирования и отторжения алогичного синтаксиса языка Bash. MD5 диска считается без необходимости его монтировать и размонтировать, привод сам задвигается, выдвигается и просит добавки. Приведен для ознакомления, сам же лежит в полезных исходниках. Применим ко всем типам компакт-дисков. Может посчитать MD5 раздела жесткого диска или его папки, если надо, - что можно считать тестом на изменение каких-либо данных, например, при их самоконтроле.

function MD5() #Для md5sum не требуется монтирование и размонтирование носителя - достаточно указать имя устройства.
{
    echo "Начало расчета контрольной суммы."
    echo "    Монтирование DVD."
    mount /dev/sr0 /media/cdrom
    echo "    Расчет контрольной суммы."
    echo " "

    #Алгоритмы на выбор, можно свои.
    #sudo md5sum /dev/sr0 #Контрольная сумма MD5 всего диска. Работает некорректно с CD-RW, записанными стандартными средствами Windows 7. Можно использовать для любых устройств и папок - например, посчитать MD5 реального раздела жесткого диска.
    #md5sum /media/cdrom/* #Расчет контрольных сумм каждого файла в корне каталога. Как в подкаталоги залезть - не анализировал: времени нет.

    echo " "
    echo "    Размонтирование DVD."
    umount /dev/sr0
    echo "Конец расчета контрольной суммы. Извлечение диска."
    eject #Почему-то привод обратно сам загружает диск при выполнении md5sum /media/cdrom/*.
}

function exit_mess()
{
    echo "(остановлено)"
    read
}

while true; do
    MD5

    read -p "        РАССЧИТАТЬ СЛЕДУЮЩИЙ ДИСК? 'Y', 'y', 'Да', 'да', 'д'    " yn #Задвигать диск не нужно: при mount сам заедет.

    if [ $yn != "Y" ] && [ $yn != "y" ] && [ $yn != "Да" ] && [ $yn != "да" ] && [ $yn != "д" ]; then exit_mess; fi

    echo " "
    echo " "
done

Обновлено ( 07.10.2023 21:24 )