Возникла идея как-то контролировать целостность файловых архивов на жестком диске.
Бывает, они лежат годами и портятся, а когда понадобятся - все, бобик сдох.
В Windows есть готовые утилиты - Adinf от Диалог-Наука и чей-то не помню Inspector. Обе платные и не развиваются.
В линуксе тоже есть свои достижения, например, Tripwire, которая большей частью используется на серверах.
Для домашнего компьютера основную функцию контроля можно реализовать гораздо проще, для этого не обязательно писать программу - например, достаточно всего несколько строк на bash.
Идея базируется на формировании контрольной суммы md5 для контролируемых файлов и материализовалась в 2-х вариантах благодаря господам Константину ака ks и Анонима:
By ks:
#!/bin/sh cd "$1" PathName=$(basename $(pwd)) cd .. find "$PathName" -type f -print0 | xargs -0 md5sum > "$PathName".m
By Аноним:
bn="$(basename \"$1\")" find "$bn" -type f -print0 | xargs -0 md5sum > "$bn.md5"
Эти скрипты создают файл с именем Текущий_каталог.md5 и его нужно запустить один раз либо при существенных изменениях в файловый архивах.
В дальнейшем достаточно будет эпизодически (например, раз в неделю) запускать команду:
md5sum -c --status Текущий_каталог.md5
В случае расхождений в контрольных суммах будет выведено соответствующее сообщение.
Что кто может к ним добавить, усовершенствовать?
2. Есть технология SMART, которая контролирует состояние жесткого диска на аппаратном уровне и даже прогнозирует время выхода его из строя. Есть еще технологии RAID и традиционный Backup в различных вариантах.
Здесь же мы рассматриваем только пример создания скрипта, реализующий проверку файлов.
3. Также существует мнение, что подобное сканирование файлов вызывает ну очень жуткий износ жесткого диска и его скорый выход из строя. Лично я с этим не могу согласиться - последствия слишком преувеличены, imho. В любой многопользовательской системе привод, подвесная система головок всегда находится в активной работе, и если при использовании программ еще каждый раз оглядываться - а что там думает по этому поводу жесткий диск? - то лучше сразу его снять и положить подальше на полку.
4. Возможно, кому-то покажется удобным сделать какой-то вывод по шедулеру. Но это, а также другие кардинальные усовершенствования могут усложнить скрипт настолько, что будет предпочтительно воспользоваться готовыми программными решениями.
5. В идеале - исправление изменившихся файлов с помощью корректирующего кода.
Re: Контроль целостности файлов на жестком диске #1
Добавим проверку существования файла контрольных сумм
#!/bin/sh if [ $# -ne 2]; then echo Usage: $(basename "$0") directory file.md5 >&2 exit 1 fi if [ -e "$2" ]; then echo 'file exists: ' "$2" >&2 exit 1 fi cd "$1" PathName=$(basename $(pwd)) cd .. find "$PathName" -type f -print0 | xargs -0 md5sum > "$2"Вызов:
script каталог файл_контрольный_сумм
Поехали!
JID: konst.su [обезьяна] gmail.com