SicherheitWindows

Open-Source-Backup für Windows – zweiter Versuch: 7-Zip

Mit 7-Zip lassen sich veritable, genau konfigurierbare Backups erstellen - nur der erste Blick schockt etwas ;)

Dass man Backups dringend mit freier Software machen sollte, habe ich neulich schon mal erwähnt – und als Lösung Areca vorgeschlagen, das auch hier seit 13 Jahren meine Daten sichert. Aber Areca ist alt und wird wohl nicht mehr gepflegt und das wurde auch entsprechend angemeckert. Da wollte ich mit 7-Zip doch mal eine Variante vorschlagen, die eh auf vielen Windows-Rechnern laufen dürfte, keinen Overhead hat und auch vom BSI für die Verschlüsselung empfohlen wird.

Zweiter Versuch wegen Areca ;)

Nochmal kurz zu Areca: Grafische Oberfläche für Backups, Recovery, unterschiedliche Archivdarstellungen, inkrementelle Delta-Backups – alles Dinge, die 7-Zip naturgemäß nicht beherrscht. Die Gewissheit, dass 7-Zip wohl auch in vielen Jahren noch laufen wird ist jedoch eindeutig größer. Areca läuft, tut, was es soll und wird vermutlich ebenfalls noch länger laufen – aber es bleibt halt ein kleines vermutlich, weil die Abhängigkeit von einer älteren Java-Version dem Tool vielleicht irgendwann den Garaus machen wird.

Mein Lieblingsfeature bei Areca ist das Speichern von Backupaufträgen als simple BAT-Dateien, die sich dann wunderbar automatisieren lassen. Und auch mit 7-Zip geht das, denn neben der wohl allseits bekannten grafischen Oberfläche hat die WinRAR-/WinZIP-Alternative auch ein mächtiges Command Line Interface (CLI).

Backup-Fähigkeiten von 7-Zip

Eines gleich vorweg: Für riesige Medienarchive ist 7-Zip nicht unbedingt die beste Wahl. Zum einen ist es fraglich, ob das Komprimieren von Videos und Musik überhaupt viel bringt – Speicherplatz ist billig und eingespart wird sehr wenig, dafür dauert es ewig. Zudem ist 7-Zip weitestgehend auf ein oder maximal zwei Archive ausgelegt: Areca zum Beispiel sichert jeweils die seit dem letzten Backup geänderten Dateien in einem neuen ZIP – alle ZIPs lassen sich dann irgendwann manuell verschmelzen.

7-Zip arbeitet in der Regel mit nur einem Archiv und aktualisiert dieses. Gespeichert werden auch hier nur die geänderten Dateien, aber das komplette Archiv muss neu zusammengebastelt werden – sprich Komprimierung und Verschlüsselung fressen ein wenig Zeit. Dafür bleibt alles übersichtlich in einem einzigen Archiv.

Andererseits: Ich habe ein Backup meines Tutonaut-Arbeitsverzeichnisses erstellt, das insgesamt 6.572 Dateien enthält, die auf 7,7 Gigabyte kommen. Videodateien und einige andere Formate habe ich ausgeschlossen, so dass am Ende ein 5-GB-Archiv heraus kommt. Wenn ich nun eine Datei ändere und das Backup durchlaufen lasse, dauert das ungefähr 10 Sekunden! Wenn es länger dauert, liegt das tendenziell am Laufwerk.

Nun, 7-Zip kann auch ein zweites Archiv anlegen, das ausschließlich Änderungen enthält – aber nur eines. Und da dieser Abgleich immer mit dem Basisarchiv/der Erstsicherung geschieht, würde das Differenz-Archiv immer wieder komplett neu erstellt. Zeitlich bringt das nicht viel, verkompliziert die Dinge aber. Wie das geht daher erst ganz am Schluss als Anmerkung – es gibt auch so genug wunderhübsche Syntax zu bestaunen.

Backups erstellen

Installiert also 7-Zip und ruft einen Terminal auf. Der grundsätzliche Aufruf:

7z KOMMANDO OPTIONEN ZIEL QUELLE

Auch wenn es gleich erstmal gruselig aussieht, im Grunde geht es nur um die OPTIONEN, denn das KOMMANDO ist immer u/update, ZIEL ist immer nur eine Pfad-Angabe und die QUELLE ist nur eine simple Dateiliste. Aber schaut selbst:

7z u -up0q0r2x2y2z1w2 -tzip -ssw -mem=AES256 -ptest -spf2 -x@"ausnahmen.txt" "O:\7-Zip-backup-tuto-test\basebackup.zip" @"backupdateien.txt"

Hier mal im einzelnen aufgedröselt:

  • u: Update-Kommando aktualisiert ein Archiv.
  • -up0q1r2x2y2z2w2: Welche Dateien sollen wie aktualisiert werden?
  • -tzip: Typ des Archivs – hier ZIP.
  • -ssw: Auch gerade geöffnete Dateien mitsichern.
  • -mem=AES256: Art der Verschlüsselung.
  • -ptest: Passwort auf „test“ setzen.
  • -spf2: Ordnerstruktur beibehalten, ohne Laufwerksbuchstaben.
  • -x@“ausnahmen.txt“: Blacklist für Dateien, die nicht gesichert werden sollen.
  • „O:\7-Zip-backup-tuto-test\basebackup.zip“: Name des zu erstellenden/aktualisierenden Archivs.
  • @“backupdateien.txt“: Liste der zu sichernden Dateien.

Und besonderes Augenmerk hat sich natürlich -up0q1r2x2y2z2w2 verdient, das für jeden Zustand (Buchstaben) eine Aktion (Ziffern) festlegt:

  • -u: Update-Optionen.
  • p0: Datei im Archiv, wird aber nicht in Quelle erfasst (p) – ignorieren (0).
  • q1: Datei im Archiv, nicht in Quelle – aus altem Archiv ins neue übernehmen.
  • r2: Datei nicht im Archiv, aber in Quelle – von Quelle ins Archiv aufnehmen.
  • x2: Datei im Archiv neuer als in Quelle – von Quelle ins Archiv aufnehmen.
  • y2: Datei im Archiv älter als in Quelle – von Quelle ins Archiv aufnehmen.
  • z2: Datei in Archiv und Quelle identisch – von Quelle ins Archiv aufnehmen.
  • w2: Nicht klar, welche Datei neuer ist – von Quelle ins Archiv aufnehmen.

Die vollständige Übersicht dieser Optionen findet Ihr hier. Zugegeben, da muss man sich ein paar Minuten mit beschäftigen, aber man kann eben sehr genau einstellen, was bei welchem Verhältnis von aktuellen und archivierten Dateien passieren soll. Ihr könnt den ganzen -u-Teil auch weglassen, dann werden schlicht aktuellere und neue Dateien ins Archiv übernommen – nicht selten das, was viele wollen.

Interessant ist aber zum Beispiel die Möglichkeit, per q1 alte Archiv-Dateien, die in der Quelle schon gar nicht mehr existieren zu behalten. Damit habt Ihr also nach einem Backup keinen 1:1-Zustand mehr und das Archiv wächst im Laufe der Zeit vermutlich massiv.

Zudem gibt es ja noch die beiden so genannten listfiles, die mit dem @ eingeleitet werden und zu sichernde Dateien und Ausnahmen enthalten. Darin können zum Beispiel solche Einträge stehen:

* ## Alle Dateien
*.txt ## Alle txt-Dateien
*foobar* ## Alle Dateien, die foobar im Namen haben.
meinordner/*.pdf ## Alle PDFs im Ordner meinordner.

Wohin mit den Dateien?

Ihr könnt das Skript und die Listen zusammen irgendwo ablegen, nur nicht dort, wo das Backup gespeichert wird – schließlich steht das Passwort im Klartext im Skript. Tipp: Platziert die drei Dateien einfach in einem Eurer Quellverzeichnisse, dann werden sie direkt mitgesichert.

Als Ziel habt Ihr ja bereits den Speicherort für das Backup-Zip festgelegt.

7-Zip bietet noch allerhand weitere Funktionen mit denen Ihr spielen könnt, beispielsweise den automatischen Mail-Versand erstellter Backups samt deren anschließender Löschung. Um nochmal die Schönheit der Syntax hervorzuheben, auch das hier ist eine schöne Spielerei: Mit -u- -up0q0r2x2y2z2w2!differenz.zip wird zunächst mit -u- festgelegt, dass das bestehende Archiv nicht verändert wird und stattdessen ein zweites Archiv namens differenz.zip, dass nur die veränderten Dateien sichert.

Das Ganze ließe sich jetzt natürlich auch in größeren Skripten verbauen, über Ereignisse antriggern oder schlicht über Windows‘ Aufgabenplanung regelmäßig ausführen lassen. Es gibt komfortablere Lösungen, aber wer es gerne rudimentär mag, dürfte mit 7-Zip auch glücklich werden.

Und so toll 7-Zip auch sein mag, schon klar, dass viele von Euch lieber Klickibuntilösungen haben wollen und auf Open Source und offene Dateiformate wenig geben – für Euch Unverbesserliche haben wir noch viele weitere Backup-Artikel.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

8 Kommentare

  1. Vielen Dank für den Artikel.
    Mal auf die Gefahr hin als blöd dazustehen=

    1.) Ließe sich immer ein Vollbackup mit Tagesnamen erstellen, ohne hierfür zusätzliche Software verwenden zu müssen?
    Also zum Beispiel= Backup—2021–04–22—-17-32-37.7zip
    (Wie es beispielsweise Cobian-Backup oder Back4Sure tun können)
    Denn diese Syntax mag sich mir leider nicht erschliessen, und sie ist offenbar fehlerhaft=
    „%DATE:~7,2%.%DATE:~4,2%.%DATE:~-4% %TIME:~0,2%.%TIME:~3,2% basebackup.zip“
    Dabei würde dann herauskommen= 02.4..2021 15.34.35,75 basebackup.zip
    Was ja Blödsinn ist, da Heute der 23.04.2021 ist!

    1. Dieses Datumsformatgedöns ist echt nicht hübsch, habs bei Stackoverflow aber auch gesehen – ich befürchte, ich übersehe da irgendwas …

      Hier erstellt

      7z a "%DATE%_backup.7z" foobar.txt
      

      ein Archiv namens

      24.04.2021_backup.7z
      

      Reicht das nicht schon? Wie genau die Variable DATE ausgegeben wird, hängt natürlich von der Locale, also den Ländereinstellungen ab.

      1. Achso, genau, da war ja was:

        echo %DATE%
        24.04.2021
        

        Und dann:

        echo %DATE:~6,3%
        202
        

        Warum? Ganz einfach: Es wird %DATE% ausgegeben – aber erst nach der 6. Stelle und dann nur 3 Stellen. Zur Verdlichung mit Fantasiedaten:

        echo %DATE%
        12.34.5678
        echo %DATE:~6,3%
        567
        

        Vielleicht hilft das. In Deinem Beispiel oben wird so viel Gedöns gemacht, um das Datum umzustellen – so steht dann das Jahr vorne:

        echo %DATE:~6,4%_%DATE:~3,2%_%DATE:~,2%
        2021_04_24
        

        Ich glaube bei Stackoverflow, oder wo das her kam, konnte jemand nicht gut zählen ;)

      2. Danke für Deine Antwort.
        Ja, hatte ich bei Stackoverflow gefunden ;-)
        Nach langem Suchen und probieren habe ich dann Gestern Abend doch noch die passende Syntax gefunden:

        1.) Das Tool 7za.exe muss von 7-Zip.de heruntergeladen werden (Unter Downloads)

        Datum-Syntax für 7-Zip=
        Das Datum wird 10-stellig geliefert.
        Um nun auf die Schreibweise YYYY-MM-DD zu kommen, kann man mehrfach entsprechende Zeichen extrahieren.

        Tag – lasse links 0 Zeichen weg und zeige dann 2 Stellen an
        %date:~0,2%
        03

        Monat – lasse links 3 Zeichen weg und zeige dann 2 Stellen an
        %date:~3,2%
        12

        Jahr – lasse links 6 Stellen weg und zeige dann 4 Stellen an
        %date:~6,4%
        2016

        Das ganze sortiert hintereinander geschrieben liefert uns das Datum im entsprechenden Format
        %date:~6,4%-%date:~3,2%-%date:~0,2%
        2016-12-03

        Zeit Syntax für 7-Zip=

        Stunde= Tag – lasse links 0 Zeichen weg und zeige dann 2 Stellen an
        %TIME:~0,2%

        Minute= lasse links 3 Zeichen weg und zeige dann 2 Stellen an
        %TIME:~3,2%

        Sekunde= lasse links 6 Stellen weg und zeige dann 2 Stellen an
        %TIME:~6,2%

        Das ganze sortiert hintereinander geschrieben liefert uns die Zeit im entsprechenden Format
        %TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
        17-09-36

        Mit dem nachfolgenden Befehl wird dann auch ein entsprechendes 7-Zip Archiv erstellt=

        7za.exe a -t7z -ptest -spf2 -ssw „D:\1111Test\%date:~6,4%-%date:~3,2%-%date:~0,2%–%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%—basebackup.7z“

  2. Ich finde Back4Sure recht brauchbar. Erstellt einfach eine Kopie der Daten und sichert nur neu hinzu gekommene Daten.

  3. Danke für den Artikel, ich wusste gar nicht, dass 7z auch als Backup-Tool fungieren kann. Ich kann Dir direckt für den nächsten backup-Artikel ein neues vielversprechendes Tool auf’s Auge drücke: restic. Das ist ein in go geschriebens Werkzeug, dass echt interessant, schnell und performant ist und als CLI (auch) auf Windows64 läuft. Da gab es auch mal einen schönen CCC-Beitrag vom Entwickler dazu:
    https://restic.net/ + https://media.ccc.de/v/c4.openchaos.2016.01.restic

    Viel Spaß bei Testen

    1. restic wirkt leich – obwohl das andere mehr für die Übertragung ist – wie rclone. Rclone kann aber leider keine snapshots. Eine Kombination von beiden wäre ideal.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.