Debian/Linux: Unterschiede feststellen und veränderte Dateien extrahieren

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert