Backup mit 7-Zip in der Windows Kommandozeile


Das Ziel soll sein, mit möglichst wenig Aufwand – also möglichst automatisch – eine komprimierte Backup-Datei von wichtigen Dateien und Ordnern zu erstellen. Es soll z.B. eine backup.bat gestartet werden und dann sollen alle Dateien und Ordner gesammelt werden und verschlüsselt in eine 7z-Datei gesichert werden. Die angelegte Datei soll zusätzlich automatisch mit einem Datum- und Zeitstempel versehen werden, um verschiedene Backups archivieren zu können. Beispiel: backup-20161203-072716.7z

Unter Windows 8.1 kann man den Start-Knopf drücken und dann cmd eintippen, um die Eingabeaufforderung zu starten. Mit der Eingabeaufforderung starten wir nur das Backup. Hierzu muß man maximal noch ein wenig im Dateisystem navigieren können.

Wechsel des Laufwerks durch Eingabe des neuen Laufwerksbuchstabens:
C:\>e:
E:\>

Anzeigen des Inhalts eines Ordners:
E:\>dir
Datenträger in Laufwerk E: ist SUPERSTICK
Volumeseriennummer: FF55-77FF

Verzeichnis von E:\

10.11.2016 18:40 Texte
02.12.2016 08:26 192 backup.bat
02.12.2016 08:33 173.621.946 backup-20161202-083229.7z
02.12.2016 09:07 2.449 backup Info.txt
3 Datei(en), 173.624.587 Bytes
1 Verzeichnis(se), 352.886.784 Bytes frei

Wechsel in einen anderen Ordner:
E:\>cd texte
E:\Texte>

Wechsel in den höheren Ordner:
E:\Texte>cd..
E:\>

Nun legen wir uns mit dem Explorer eine neue Textdatei an und ändern die Endung auf .bat. Die Rückfrage „Wenn Sie die Dateinamenserweiterung ändern, wird die Datei möglicherweise unbrauchbar. Möchten Sie sie trotzdem ändern?“ beantworten wir mit Ja. Diese Datei öffnen wir nun mit der rechten Maustaste > bearbeiten und befinden uns im antiken Notepad-Texteditor. (Jeder andere Texteditor tut’s natürlich auch. Wichtig ist nur, dass wir am Ende eine Textdatei erhalten und nicht z.B. ein Word-Dokument mit Formatierung etc.) Dort hinein schreiben wir nun die wenigen Zeilen für unser Backup-Skript.

Alternativ kann man in der Kommandozeile in den Ordner wechseln in dem die backup.bat erstellt werden soll und dann folgendes eingeben:
E:\>notepad backup.bat

Datumstempel

Unter DOS und somit auch in der Windows Kommandozeile existieren Variablen. Man kann vorhandene Variablen auslesen und man kann sich auch Variablen ausdenken und als Zwischenspeicher nutzen. Lesen wir einmal das aktuelle Datum aus, um ein wenig Orientierung zu finden.

E:\>echo %date%
03.12.2016

1234567890

Das Datum wird 10-stellig geliefert. Um nun auf die Schreibweise YYYYMMDD zu kommen, kann man mehrfach entsprechende Zeichen extrahieren.

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

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

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

Das ganze sortiert hintereinander geschrieben liefert uns das Datum im entsprechenden Format
E:\>echo %date:~6,4%%date:~3,2%%date:~0,2%
20161203

Zeitstempel

die aktuelle Zeit
E:\>echo %time%
8:24:19,93

Die Zeit wird 11-stellig geliefert. Zum Glück ist es noch vor 10, denn sonst wäre mir das Problem mit der Leerstelle vor der einstelligen Stunde gar nicht aufgefallen. Anstatt des Leerzeichens wollen wir aber eine Null sehen. Das Ergebnis soll schließlich in diesem Format erscheinen: backup-20161202-072716.7z

die aktuelle Stunde liefert mir das Leerzeichen
E:\>echo %time:~0,2%
8

und jetzt alle (also hier genau ein) Leerzeichen mit Null ersetzen:
E:\>echo %time: =0%
08:55:08,70

So kann man mit .=- einen Punkt durch ein Minus ersetzen
E:\>echo %date:.=-%
03-12-2016

man kann also Ersetzen mit %VARIABLENNAME: =0%
und Ausschneiden mit %VARIABLENNAME:~0,2%

Wer weiß wie man beides verknüpfen kann, möge sich bitte bei mir melden! Ich habe alles was mir logisch erschien ausprobiert und auch die Suchmaschinen gequält und empfehle als Workaround, die Zeit in 2 Schritten wie folgt zu wandeln.

1. Uhrzeit in der neuen Variablen _time speichern und dabei Space durch Null ersetzen:
E:\>set _time=%time: =0%

2. dann die Variable _time mehrfach auslesen bis man HHMMSS zusammen hat

E:\>echo %_time:~0,2%
07

E:\>echo %_time:~3,2%
55

E:\>echo %_time:~6,2%
08

Den Datum- und Zeitstempel YYYYMMDD-HHMMSS erhalten wir also mit den beiden Befehlszeilen:
E:\>set _time=%time: =0%
E:\>echo %date:~6,4%%date:~3,2%%date:~0,2%-%_time:~0,2%%_time:~3,2%%_time:~6,2%
20161203-075508

Tips für Nutzung von 7-Zip in der Befehlszeile

Nun müssen wir noch 7-Zip mit dem eigentlichen Backup beauftragen. (Siehe auch die Homepage von 7-zip.de und eine gute Dokumentation der Kommandozeilen-Befehle.)

Zunächst suchen wir das Kommandozeilen-Tool 7z.exe. Es befindet sich in dem selben Ordner wo auch das grafische Tool installiert wurde.

Beim Aufruf des Programmes landen wir vermutlich entweder im Ordner „Program Files“ oder unter „Programme“. Da beide Verzeichnisnamen länger als 8 Zeichen sind und der Ordner „Program Files“ sogar ein Leerzeichen enthält, sind diese unter DOS problembehaftet und müssen beim Programmaufruf mit Anführungszeichen angegeben werden. (Früher konnte man den Ordner mit progra~1 abkürzen, aber lassen wird das.)

Ich empfehle den Aufruf von 7-Zip mit einer Zeile ähnlich der folgenden:
„C:\Program Files\7-Zip\7z.exe“ a -r -p -mhe=on zieldatei.7z quellpfad1/* quellpfad2/*

a Archiv anlegen und Dateien und Ordner hinzufügen
-r Inhalte von Ordnern sollen rekursiv (also bis in die tiefste Ebene der Unterordner) gesichert werden
-p Paßwort setzen und Archiv verschlüsseln
-mhe=on Dateinamen und Ordnernamen (also den Header der 7z-Datei) ebenfalls verschlüsseln

Wenn man als Quelle verschiedene Ordner rekursiv (also mit deren komplettem Inhalt) sichern will, muß man quellpfad/* angeben anstatt des unter DOS normalerweise üblichen quellpfad/*.*, da 7-Zip ein *.* anders deutet. Es werden mit *.* nur alle Dateien mit einer vorhandenen Endung .* gespeichert, also Dateien ohne Endung weggelassen.

Ein Beispiel für eine backup.bat kann nun sein:

set _time=%time: =0%
"C:\Program Files\7-Zip\7z.exe" a -r -p -mhe=on backup-%date:~6,4%%date:~3,2%%date:~0,2%-%_time:~0,2%%_time:~3,2%%_time:~6,2%.7z C:\Users\* H:\meine_Daten\*

Starten der backup.bat:
E:\>backup


Advertisements

Schlagwörter: , ,

Eine Antwort to “Backup mit 7-Zip in der Windows Kommandozeile”

  1. Reginald Lowack Says:

    Also ich benutze dazu immer http://www.z-dbackup.de
    Macht all das und noch einiges mehr wie z.B. automatische FTP Uploads etc. pp.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: