rsync: --delete --delete-excluded protect perishable
[Gelöst, s.u.]
Das Betreff ist ein Wortsalat, sondern enthält tatsächlich die Elemente
meines Problems. Ich kopire mit rsync Verzeichnisbäume von einem Rechner
auf einen anderen. Dabei sollen bestimmte Verzeichnisse an der Quelle
ausgeschlossen werden; am Ziel sollen bestimmte Dateien und
Verzeichnisse nicht überschrieben werden.
Konkret: Quelle und Ziel haben btrfs-Filesysteme mit Snapshots, die
unterhalb von .snapshots liegen (von snapper so angelegt). Diese
Snapshots sollen von rsync ignoriert werden, ich will nur den aktuellen
Stand synchronisieren.
Ich erzeuge am Ziel für jedes Verzeichnis Prüfsummen der darin liegenden
Dateien, die in der Datei .checksums landen. Diese Datei soll von rsync
ignoriert werden, wenn sie allerdings die einzige verbleibende Datei
ist, darf das Verzeichnis gelöscht werden.
Meine bisherigen Versuche:
Das Grundgerüst:
$ rsync -a --delete --delete-exclude \
quelle/ ziel
Snapshots an der Quelle ignorieren und am Ziel nicht zerstören:
$ rsync -a --delete --delete-exclude \
--exclude='.snapshots/' \
--filter='P .snapshots/' \
quelle/ ziel
Das ist richtig so, denke ich. Das 'P' (oder protect) schützt
.snapshots.
Jetzt noch die Prüfsummen ignorieren:
$ rsync -a --delete --delete-exclude \
--exclude='.snapshots/' \
--filter='P .snapshots/' \
--exclude='.checksums' \
--filter='Pp .checksums' \
quelle/ ziel
"Pp" ist nur ein begrenzt haltbarer Schutz: Wenn das Verzeichnis bis auf
.checksums leer ist, darf es gelöscht werden.
So, beim beschreiben der Frage habe ich die schließlich Lösung gefunden
:-) Vielleicht interessiert es noch jemand außer mir.
Michael
--
Michael Schuerig
mailto:michael@schuerig.de
http://www.schuerig.de/michael/
Reply to: