Впервые мы можем сканировать каталог и архивировать результаты сканирования. после этого, если происходит обновление, удаление или создается новый файл или каталог.
Мы можем использовать эти архивные данные эталонного теста для сравнения, а затем мы можем определить, было ли обновлено содержимое текущего каталога.
мы можем использовать размер блока файла или md5 в зависимости от того, что вы хотите.
Вот простой способ сделать это, и вы также можете обновить его, чтобы использовать другие методы мониторинга.
if [ "$#" -ne 1 ]; then
echo "Usage: `basename $0` directoryName"
exit 1
fi
firstTime=0
lastFile=last.txt
recentFile=recent.txt
currentDir=$1
if [ ! -e "$lastFile" ]; then
firstTime=1
fi
shopt -s extglob
cd $currentDir && du -bs !($lastFile|$recentFile) > recent.txt 2> /dev/null
if [ "$firstTime" -ne 1 ]; then
changes=$(sed '1,/@@/d' <(diff -Naur recent.txt last.txt))
if [ -n "$changes" ]; then
echo "Change:"
echo "$changes" | tee $$.tmp
echo
filename=$(awk '/^+/||/^-/{print $2}' $$.tmp | sort -u)
count=0
for f in $filename; do
echo "changed filename: $f"
let "count+=1"
done
echo -e "\nA total of $count filenames were changed."
else
echo "The Directory has no changes.."
fi
else
echo "[First run] Archiving.."
fi
cp $recentFile $lastFile
rm -rf $$.tmp 2> /dev/null