проверьте два раздела путем выбора случайных файлов и выполнения sha1 хешей на двух файлах каждого раздела

Даже после создания пустого файла

touch /var/log/mail

вы должны перезапустить системный журнал

service syslog restart

, а затем он вход в систему :)

0
13.04.2017, 15:37
2 ответа

Как я понимаю ваш вопрос, вы хотите выяснить, различаются ли N случайных файлов между двумя путями файловой системы. Сравнение файлов должно быть быстрее, чем вычисление контрольных сумм обоих файлов. Вот как это сделать:

#!/bin/sh
list1=/tmp/list1
list2=/tmp/list2
shuflist=/tmp/shuflist
n=100000 # How many files to compare.
if test ! -d "$1" -o ! -d "$2"; then
    echo "Usage: $0 path1 path2"
    exit 1
fi
exitcode=0
(cd "$1" && find . -type f >"$list1") || exit 1
(cd "$2" && find . -type f >"$list2") || exit 1
if cmp -s "$list1" "$list2"; then
    shuf -n "$n" "$list1" > "$shuflist"
    while IFS= read -r filename; do
        if ! cmp -s "$1/$filename" "$2/$filename"; then
            echo "Files '$1/$filename' and '$2/$filename' differ."
            exitcode=1
            break
        fi
    done < "$shuflist"
else
    echo File lists differ.
    exitcode=1
fi
rm "$list1" "$list2" "$shuflist"
exit $exitcode

Остерегайтесь, что этот скрипт предполагает, что ни одно из имен ваших файлов не содержит символа новой строки.

3
28.01.2020, 02:20

Если вы хотите сравнить два каталога с файлами и подкаталогами, то команда diff может сделать это за вас. Запустив diff -rq / path / to / fileset1 / path / to / fileset2 , он сообщит вам, какие файлы отличаются, а какие отсутствуют для какого дерева. Вы даже можете расширить команду, предоставив подробный список всех изменений для целей аудита с помощью diff -rNau / path / to / fileset1 / path / to / fileset2 , например, и перенаправить вывод в нужное место для сохранения изменений.

1
28.01.2020, 02:20

Теги

Похожие вопросы