Nehmen wir an, ich habe ein Verzeichnis mit Dateien:
a b c d
Also kopiere ich mit rsync:
rsync -av --delete -P --backup --backup-dir=sample-$(date +%a-%H%M) ../sample /backups
Ich erhalte in /backup/sample:
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 d
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 c
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 b
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 a
Aber wenn ich ein Verzeichnis erstelle:
a b c d newdir
Ich erhalte nur in /backup/sample:
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 d
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 c
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 b
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 a
drwxr-xr-x 2 sergio sergio 8192 feb 17 18:52 newdir
Wenn ich jedoch eine Datei lösche:
/backups
├── sample
│ ├── a
│ ├── b
│ ├── c
│ └── newdir
└── sample-sáb-1855
└── sample
└── d
Warum erstellt rsync also bei der ersten Änderung (Erstellung von Newdir) kein „Beispieldatum …“? Ist das das erwartete Verhalten?
Antwort1
Ausrsync(1)
-b, --backup
Mit dieser Optionbereits vorhandene Zieldateienwerden umbenannt, wenn jede Datei übertragen oder gelöscht wird. Sie können steuern, wohin die Sicherungsdatei geht und welches (falls vorhanden) Suffix angehängt wird, indem Sie--backup-dirUnd--SuffixOptionen.
Bei den ersten beiden Malen werden nur neue Dateien übertragen, so dass das Erstellen von Backups nicht notwendig ist.
Beim dritten Aufruf sample/d
wird die Datei entfernt und die Option --backup
weist rsync nun an, eine Sicherungskopie von zu erstellen sample/d
. Diese Sicherungskopie wird im Sicherungsverzeichnis /backups
+ erstellt sample-$(date +%a-%H%M)
.
Das Gleiche würde passieren, wenn Sie eine der vorhandenen Dateien ändern. Wenn Sie beispielsweise die Datei ändern sample/a
, würde eine Sicherungskopie a
im Sicherungsverzeichnis erstellt /backups/sample-$(date +%a-%H%M)
.
Wenn Sie ein versioniertes Backup erstellen möchten, geben Sie lieber bei jedem rsync-Lauf ein anderes Zielverzeichnis an
rsync -av --delete -P ../sample /backups/sample-$(date +%a-%H%M)