Debian/Linux: Unterschiede feststellen und veränderte Dateien extrahieren
Manchmal kann es sinnvoll sein Veränderungen auf einem System besser nachvollziehen zu können. Das können wir in der Praxis unter Zuhilfenahme von Hashwerten erreichen.
Um einen ersten Snapshot zu erstellen, können wir das nachfolgende Skript benutzen, nachdem wir es erstellt haben.
touch snap.sh
chmod +x snap.sh
nano snap.sh
Inhalt:
#!/bin/bash
timestamp=$(date +"%Y-%m-%d_%H-%M-%S")
output_file="snapshot_${timestamp}.txt"
find / -type f \
-not -path "/proc/*" \
-not -path "/sys/*" \
-not -path "/tmp/*" \
-not -path "/var/log/*" \
2>/dev/null | while read -r file; do
sha256sum "$file"
done > "$output_file"
echo "Snapshot gespeichert in $output_file"
Später können wir – nach der Veränderung – das Skript erneut ausführen.
Veränderte Dateien werden einen anderen Hashwert in der neueren Datei haben. Das machen wir uns zunutze und generieren eine Datei, welche nur die Pfade zu allen geänderten Dateien enthält, Beispiel:
diff snapshot_2025-04-06_10-55-05.txt snapshot_2025-04-08_00-56-14.txt | grep '^[<>]' | awk '{print $NF}' > diff.txt
Zum Abschluss können wir nun die veränderten Dateien gezielt in eine zip-Datei packen, während wir Fehler überspringen:
cat diff.txt | while read -r file; do [ -e "$file" ] && zip -q -u diff.zip "$file" || echo "Skipped: $file"; done
Das Ergebnis: Alle veränderten Dateien befinden sich in der zip-Datei und können gezielt untersucht werden.