Fabraptor schrieb:
Ich möchte gerne mein Home Ordner auf eine Externe Festplatte backupen. Dazu möchte ich mir ein Script schreiben was den Ordner überwacht und was nach jeder Veränderung von einer Datei ein Befehl mit Rsync aufführt?
Hat jemand eine Idee wie ich das bewerkstelligen kann?
Wenn Du sowieso rsync
benutzt, dann würde ich vielleicht regelmäßig (z.B. alle 15 Minuten) einen Transfer laufen lassen. rsync
kann ja selber feststellen, welche Dateien sich geändert haben. Der Vergleich ist allerdings langsamer als der folgende Ansatz, weil dafür Vergleich mit dem Zielsystem nötig ist.
Ansonsten macht man so etwas mit z.B. mit inotifywait
. Hier ein Ausschnitt aus einem Script, das ich mal geschrieben habe:
| cd source/dir
echo "Waiting for files in $PWD ..."
inotifywait -mrqe close_write --format '%w%f' . | while IFS= read -r f; do
if [ -f "$f" ]; then
echo "<<<<: $f -> $target"
mv -i "$f" "$target"
echo ">>>>: $f -> $target"
fi
done
|
Statt des mv
würdest Du dann Deinen rsync
oder einfacher ein cp -a
einbauen. Problem mit diesem Ansatz ist, dass es ein Systemlimit für die Anzahl der Überwachungen für inotify
gibt, das bei einem Verzeichnis mit vielen Dateien leicht überschritten werden kann.
Du könntest natürlich auch ein Btrfs-Dateisystem mit zwei Devices anlegen und spiegeln lassen (RAID1).