Hi Sir Auron,
erzeuge mit Hilfe von "find" eine Dateiliste vom aktuellen Stand und leite sie in eine Datei (dateiliste1.txt) um. Zu einen späteren Zeitpunkt lässt du den "find" nochmal laufen und wieder Umleiten in eine Datei (dateiliste2.txt).
Hier ein Beispiel des "find" vom Verzeichnis /home inkl. aller Unterverzeichnisse
Code:
# findet alle Verzeichnisse und Dateien
find /home -name "*" -print > /tmp/dateiliste1.txt
# Oder so: findet nur Dateien
find /home -name "*" -type f -print > /tmp/dateiliste1.txt
Dann nim das nachstehende Script (Name: filediff.sh) und rufe es so auf:
Code:
/usr/local/bin/filediff.sh /tmp/dateiliste1.txt /tmp/dateiliste2.txt
Code:
# Script ablegen in /usr/local/bin als filediff.sh
if [ $# -ne 2 ]; then
echo ""
echo "Usage: $0 <oldfile> <newfile>"
echo ""
exit 1
fi
OLDFILENAME=$1
NEWFILENAME=$2
DIFF_FILE=/tmp/sdiff.txt
ADDED=/tmp/added.txt
DELETED=/tmp/deleted.txt
sdiff $OLDFILENAME $NEWFILENAME | egrep '(>|<)' > $DIFF_FILE
awk '{print $1" "$2}' $DIFF_FILE | awk '{if ($1==">") {print "added: "$2}}' $DIFF_FILE > $ADDED
awk '{print $1" "$2}' $DIFF_FILE | awk '{if ($2=="<") {print "deleted: "$1}}' $DIFF_FILE > $DELETED
rm $DIFF_FILE
echo "See new files in $ADDED"
echo "See deleted files in $DELETED"
# EOF
Dann liegen im /tmp Verzeichnis zwei neue Dateien.....
added.txt
deleted.txt
....mit den neuen bzw. gelöschten Dateien jeweils in einer seperaten Datei.
Wenn das mit dem "find" noch automatisieren willst kannst du drei Cronjobs anlegen (als root). An den geraden/ungeraden Wochentagen läuft der find, an den geraden auch das Script filediff.sh. So hast jeden Tag um 19:30 Uhr zwei neue Files (added.txt und deleted.txt).
Code:
00 19 * * 1,3,5 /usr/bin/find /home -name "*" -print > /tmp/dateiliste1.txt
00 19 * * 0,2,4,6 /usr/bin/find /home -name "*" -print > /tmp/dateiliste2.txt
30 19 * * 0,2,4,6 /usr/local/bin/filediff.sh /tmp/dateiliste1.txt /tmp/dateiliste2.txt