Inkrementelles Backup mit 7zip

17

Ich habe gegoogelt und gesucht, kann aber den Befehl nicht finden, den das 7zip-Befehlszeilendienstprogramm zum Erstellen inkrementeller Sicherungen verwendet. Kann also bitte jemand den Befehl teilen?

Vielen Dank

Übrigens habe ich diesen Link gefunden: http://wmug.co.uk/wmug/b/sean/archive/2009/03/20/powershell-amp-7zip-incremental-backup-solution.aspx . Es scheint sich jedoch um differenzielle Sicherungen zu handeln, auch wenn es als inkrementell bezeichnet wird.

gyaani_guy
quelle

Antworten:

11

Sollte einfach sein, verwenden Sie dies, um das Archiv zu erstellen und inkrementell zu aktualisieren:

7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}

Diese Seite bietet eine Referenz für die Aktualisierungsoptionen.

Sie werden wie folgt übersetzt:

  • p0 - Wenn "Datei im Archiv vorhanden, aber nicht mit Platzhalterzeichen versehen", entfernen Sie die Datei aus dem Archiv.
  • q3- Wenn "Datei im Archiv vorhanden, aber nicht auf der Festplatte vorhanden", entfernen Sie die Datei aus dem Archiv und nach dem Extrahieren aus dem Dateisystem .
  • r2 - Wenn "Datei nicht im Archiv vorhanden, aber auf der Festplatte vorhanden", packen Sie die Datei in das Archiv.
  • x2 - Wenn "Datei im Archiv neuer als die Datei auf der Festplatte" ist, packen Sie die ältere Datei in das Archiv.
  • y2 - Wenn "Datei im Archiv älter als die Datei auf der Festplatte" ist, packen Sie die neuere Datei in das Archiv.
  • z1 - Wenn "Datei im Archiv identisch mit der Datei auf der Festplatte" ist, verwenden Sie die gepackte Version der Datei erneut.
  • w2 - Wenn die Dateigröße unterschiedlich ist, packen Sie die geänderte Datei in das Archiv.
ArtemGr
quelle
Hallo, was bedeuten diese vielen Optionen?
Zhianc
Es ist eine Zuordnung von einem Dateizustand zu einer Aktion. Es gibt sieben mögliche Zustände.
ArtemGr
3
Es ist keine inkrementelle Sicherung. Dieser Befehl erstellt eine differenzielle Sicherung und erstellt ein neues Archiv mit Änderungen seit der letzten vollständigen Sicherung. Inkrementelles Backup verfolgt Änderungen seit dem vorherigen inkrementellen Backup (Diff oder Diff).
stil
Ich denke, das ist einfach falsch, da es nur archive.7z aktualisiert, um fast dasselbe zu sein wie nur ein neues Archiv zu erstellen, aber ein bisschen schneller, da es wiederverwendet wird. Javiers Antwort unten scheint ein Unterschied zu sein.
Tuntable
Wenn das Archiv groß und die Inkremente klein sind, ist das " etwas schnellere " ziemlich umfangreich. Nicht das gesamte Archiv neu zu packen, ist einer der Punkte der inkrementellen Sicherungen. Dies ist auch keine differenzielle Sicherung: Wir aktualisieren das Hauptarchiv und speichern den Unterschied nicht in einem separaten Archiv. Wenn Sie die anderen Lösungen mehr mögen, können Sie sie gerne empfehlen. Es gibt mehr als eine Möglichkeit, eine Katze zu häuten.
ArtemGr
8

Wenn Sie eine Teilsicherung durchführen würden, müssten Sie 7-zip mit der Liste der geänderten Dateien (mit -i@fileList) versehen und diese Liste irgendwie ausarbeiten. Auf dem archive.org Spiegel der entfernten Frage Offline inkremantelle Sicherung über Thumbdrive finden Sie eine Unix-Befehlszeile mit md5-Signaturen, um die Dateiliste zu erstellen.

Der 7-zip-Aktualisierungsvorgang ermöglicht das Erstellen eines Sekundärarchivs mit den Unterschieden (einschließlich gelöschter Dateien), die seit dem Basis- / Primärarchiv auftreten. Das ist eine differenzielle Sicherung (wie in der Frage selbst angegeben).

Ich habe bei WPCTips "Differential Backups with 7-zip" (archiviert) einen ausgezeichneten Artikel zu diesem Thema gefunden . Sie empfehlen, entweder ein GUI-Programm (Toucan) zu verwenden oder dieses Rezept für die Befehlszeile zu verwenden:

7z u {base archive.7z} -u- -"up0q3r2x2y2z0w2!{differential.7z}" {folder to archive}

Dies unterscheidet sich ein wenig von dem 7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}von ArtemGr vorgeschlagenen:

  • -u- teilt mit, dass das Hauptarchiv nicht geändert werden soll
  • "-up0q3r2x2y2z0w2!{differential.7z}"Gibt das Zieldifferentialarchiv an und welche Aktion für jede Datei für jede Bedingung / jeden Zustand auszuführen ist: Hinzufügen von Dateien, die im Dateisystem neu sind oder geändert wurden, Entfernen von Dateien, die sich nur im 7zip-Archiv befinden, Ignorieren des Restes.
    Beachten Sie, dass das "!" Zeichen werden abgefangen, bashwenn es nicht in Anführungszeichen steht.

Nur für den Fall, dass Sie neugierig auf die Besonderheiten dieses Kryptikers sind p0q3r2x2y2z0w2

<state> | State condition
p | File exists in archive, but is not matched with wildcard.   Exists, but is   not matched 
q | File exists in archive, but doesn't exist on disk.
r | File doesn't exist in archive, but exists on disk.
x | File in archive is newer than the file on disk.
y | File in archive is older than the file on disk.
z | File in archive is same as the file on disk
w | Can not be detected what file is newer (times are the same, sizes are different)

<action> | Description 
0 | Ignore file (don't create item in new archive for this file) 
1 | Copy file (copy from old archive to new) 
2 | Compress (compress file from disk to new archive) 
3 | Create Anti-item (item that will delete file or directory during extracting). This feature is supported only in 7z format. 
Javier
quelle
2
Vielen Dank für die Antwort Javier, und willkommen bei Super User. Hier gibt es eine Richtlinie zum Zusammenfassen von Links für den Fall, dass sie verschwinden. Können Sie erläutern, wie der Befehl die inkrementelle Sicherung erzielt? (vor allem der up0q3r2x2y2z0w2Teil!) Danke :-)
Bertieb
1
@bertieb danke für den rat. Ich hoffe es ist jetzt klarer.
Javier
1
@DanielSokolowski Nicht sicher, ob dies Ihre Frage beantwortet. Wenn Sie ein inkrementelles Backup durchgeführt haben (A + B + C + D), müssen Sie aus jedem Archiv in der Reihenfolge extrahieren, in der Sie es erstellt haben. Wenn Sie eine differenzielle Sicherung durchgeführt haben (A + (b + c + d)). Es sind 2 Archive, die Sie extrahieren müssen. Es wäre schön, wenn das letzte Archiv Informationen über frühere Archive und die Reihenfolge der Extraktion enthalten würde, sodass die Extraktion mit einem einzigen Befehl erfolgen könnte. Aber mir ist ein solches Merkmal nicht bekannt.
Javier
1
Artikel, den Sie teilen, öffnet sich nicht @Javier
alper
1
Vielen Dank @alper. Archive.org hat eine Momentaufnahme des Artikels mit den WPC-Tipps von Extint unter web.archive.org/web/20160822111118/http://www.wpctips.com:80/… . Ich denke, ich muss die Antwort ändern.
Javier
4

Sie können einfach ein inkrementelles Backup durchführen, indem Sie die Zeitrichtung ändern. Das heißt, Sie behalten immer die neueste Sicherungskopie und die Differenzdateien in der Vergangenheit.

# create the difference step into the past
7z u {base archive.7z} {folder to archive} -mx=9 -u- -up1q1r3x1y1z0w1!{decrement.7z}

# update the Archive to the latest files
7z u {base archive.7z} {folder to archive} -mx=9 -up0q0x2

Das Basisarchiv enthält immer die neueste Version und durch schrittweises Anwenden der "Dekremente" können Sie ältere Versionen wiederherstellen. Mit ein wenig Scripting können Sie die dekrementellen Dateien mit der richtigen Nummerierung versehen.

iligid
quelle
Können Sie das näher erläutern? Ich würde gerne ein Beispiel für das Erstellen einer aktuellen Sicherung sehen, Sicherung vor 1 Tag, Sicherung vor 2 Tagen. Und dann ein Beispiel für die Wiederherstellung des Backups vor zwei Tagen.
Daniel Sokolowski
0

In einer Batch-Datei müssen Sie bei aktivierter verzögerter Erweiterung das "!" mit zwei ^^ gefällt das

7z u {existing archive.7z} -u- -up0q3r2x2y2z0w2^^!{new differential.7z} {folder or files to archive}

Ich habe eine Weile gebraucht, um das zu sehen.

Tuntable
quelle