Wenn ich's verwende
tar
,--listed-incremental
würde ich genau das tun, was ich versuche.
Es ist gut, dass Sie das erkennen. Ich kann Vor- und Nachteile beider Richtungen sehen (ich werde sie hier nicht besprechen). Technisch ist es möglich, den Prozess umzukehren:
- Umbenennen
backup-N
inbackup-(N+1)
Schleife von N max bis 0. - Stellen Sie die vollständige Sicherung (jetzt
backup-1
) in einem temporären Verzeichnis wieder her. - Erstellen Sie
backup-0
aus den aktuellen Daten eine neue Snapshot-Datei. - Entfernen Sie
backup-1
(vorherige vollständige Sicherung). - Behandle das temporäre Verzeichnis als "neue" Version. Erstellen Sie
backup-1
als inkrementelle Sicherung, indem Sie die Momentaufnahmedatei aus dem vorherigen Schritt bereitstellen. (Beachten Sie, dass Sie Ihr Arbeitsverzeichnis von den aktuellen Daten in die temporären ändern müssen, damit die relativen Pfade gleich bleiben.)
Sie fragen sich vielleicht, ob die alten (aufbewahrten) backup-N
Dateien dadurch mit den neuen Dateien in Einklang gebracht werden. Ein berechtigter Zweifel, da das Handbuch sagt:
-g
,--listed-incremental=FILE
Behandeln Sie neue inkrementelle Backups im GNU-Format.FILE
ist der Name einer Momentaufnahmedatei, in dertar
zusätzliche Informationen gespeichert werden, anhand derer entschieden wird, welche Dateien sich seit dem vorherigen inkrementellen Speicherauszug geändert haben und folglich erneut gesichert werden müssen. WennFILE
beim Erstellen eines Archivs nicht vorhanden ist, wird es erstellt und alle Dateien werden zum resultierenden Archiv hinzugefügt (Level-0
Dump). Um inkrementelle Archive mit einem anderen Level als Null zuN
erstellen, erstellen Sie eine Kopie der Snapshot-Datei, die während des Levels erstellt wurdeN-1
, und verwenden Sie sie alsFILE
.
Daher wird vorgeschlagen, dass die Momentaufnahmedatei vollständig von der vollständigen Sicherung aus aktualisiert wird, als ob Sie die backup-N
Dateien jedes Mal neu erstellen müssen, wenn Sie eine vollständige Sicherung durchführen. Aber dann:
Beim Auflisten oder Extrahieren wird der tatsächliche Inhalt
FILE
nicht geprüft, er wird nur aufgrund syntaktischer Anforderungen benötigt. Es ist daher üblich, an/dev/null
seiner Stelle zu verwenden.
Das heißt, wenn Sie backup-N
Dateien in aufsteigender Reihenfolge extrahieren, um vor einiger Zeit einen Status zu erhalten, backup-M
erwartet jede Datei (M> 0) nur einen gültigen M-1
Status. Es ist egal, ob dieser Status von einer vollständigen oder inkrementellen Sicherung abgerufen wird. Der Status sollte jedoch ohnehin identisch sein. So sollte es keine Rolle, ob Sie die erstellte backup-M
Datei auf der Grundlage einer vollständigen Sicherung (wie Sie tun, jeder backup-M
beginnt, backup-1
wo backup-0
eine vollständige Sicherung) oder basierend auf einer Kette von inkrementellen Sicherungen (wie das Handbuch schon sagt).
Ich verstehe Ihren Standpunkt zu halten backup-0
als up-to-date und vollständige Sicherung der Lage sein, „gehen Sie zurück in der Zeit“ mit backup-0
, backup-1
, backup-2
, ... Wenn Sie diese Dateien in einem „dummen“ Cloud - Service halten wollen, werden Sie Sie müssen sie entsprechend dem Verfahren sorgfältig umbenennen, ersetzen backup-1
und backup-0
jedes Mal ein neues hochladen . Wenn Ihre Daten riesig sind, wird das Hochladen eines vollständigen Backups jedes Mal sehr schmerzhaft.
Aus diesem Grund ist es ratsam, einen "intelligenten" Server zu haben, der die aktuelle vollständige Sicherung jedes Mal erstellt, wenn Sie eine inkrementelle Sicherung "von früher bis heute" hochladen. Ich habe rdiff-backup
einige Male benutzt:
rdiff-backup
Sichert ein Verzeichnis in einem anderen, möglicherweise über ein Netzwerk. Das Zielverzeichnis erstellt eine Kopie des Quellverzeichnisses. Zusätzliche umgekehrte Diffs werden jedoch in einem speziellen Unterverzeichnis dieses Zielverzeichnisses gespeichert. Sie können also Dateien wiederherstellen, die vor einiger Zeit verloren gegangen sind. Die Idee ist, die besten Funktionen eines Spiegels und eine inkrementelle Sicherung zu kombinieren.rdiff-backup
Bewahrt auch Unterverzeichnisse, feste Links, Dev-Dateien, Berechtigungen, UID / GID-Besitz, Änderungszeiten, erweiterte Attribute, ACLs und Ressourcen-Gabeln. Ebensordiff-backup
kann über eine Leitung, wie zrsync
. B. bandbreiteneffizient gearbeitet werden .
Bitte beachten Sie, dass die Software seit 2009 nicht mehr aktualisiert wurde. Ich weiß nicht, ob dies heutzutage eine gute Empfehlung ist.