[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: