Перейти к содержанию

Контроль хэш-сумм множества файлов

Здесь описано как проверить целостность скопированных файлов из source в target.

Создайте файл fileslist.sh со следующим кодом:

#!/bin/bash

r() {
    d=${1:-.}
    for f in *
    do
        if test -f "$f"; then
            case "$f" in *)
                echo $d/$f
                ;;
            esac
        elif test -d "$f"; then
            ( cd "$f"; r "$d/$f" )
        fi
    done
}

r

Этот файл нужно сделать исполняемым. Он будет рекурсивно генерировать список файлов от текущей директории. Каждый файл будет содержать полный путь от текущей директории.

Теперь перейдите к директории-источнику (к файлам, для которых нужно вычислить хэш-суммы):

cd source

Запустите созданный ранее скрипт для генерации списка файлов и перенаправьте вывод в файл filelist.txt:

filelist.sh > filelist.txt

На основе созданного списка файлов расчитайте хэш-суммы и вывод перенаправьте в файл crclist.txt:

rhash --crc32 --simple --file-list filelist.txt > crclist.txt

Теперь перейдите к файлам, целостность которых нужно проконтролировать на основе созданного списка хэшей:

cd target

Проверьте хэш-суммы по созданному ранее списку хэш-сумм:

rhash --crc32 --check crclist.txt

Вы увидите отчет, в котором будет указано, какие файлы прошли проверку, а какие нет.