Даже после создания пустого файла
touch /var/log/mail
вы должны перезапустить системный журнал
service syslog restart
, а затем он вход в систему :)
Как я понимаю ваш вопрос, вы хотите выяснить, различаются ли 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
Остерегайтесь, что этот скрипт предполагает, что ни одно из имен ваших файлов не содержит символа новой строки.
Если вы хотите сравнить два каталога с файлами и подкаталогами, то команда diff может сделать это за вас. Запустив diff -rq / path / to / fileset1 / path / to / fileset2 , он сообщит вам, какие файлы отличаются, а какие отсутствуют для какого дерева. Вы даже можете расширить команду, предоставив подробный список всех изменений для целей аудита с помощью diff -rNau / path / to / fileset1 / path / to / fileset2 , например, и перенаправить вывод в нужное место для сохранения изменений.