Backup mittels 7-Zip
Der beliebte Open Source Packer 7-Zip steht mittlerweile in Version 9.07 Beta zum Download (32-bit, 64-bit) bereit.
Man kann 7-Zip aber auch hervorragend zum Sichern von Dateien und Ordnern verwenden.
Schritt 1: Man benötigt die beiden Dateien 7z.exe und 7-zip.dll aus dem 7-Zip Ordner.
Schritt 2: In der files.txt werden die Pfade der zu sichernden Ordner bzw. Dateien abgelegt.
"C:\Programme\Test" "D:\Software\OS\Linux\ubuntu-9.04-desktop-i386.iso"
Schritt 3: Die Batchdatei backup.bat wird später das Backup starten.
7z u %date%_backup.7z -up1q3r2x1y2z1w2 -ssw @files.txt
Nach dem Aufruf der 7z.exe mit dem Parameter u (update) folgt der Name des Zielarchivs, welches in meinem Beispiel immer mit dem aktuellen Datum versehen wird. Der anschließende Ausdruck sorgt dafür, dass neue Dateien hinzugefügt, geänderte Dateien upgedated und gelöschte Dateien aus dem Backup gelöscht werden. -sww erlaubt den Zugriff auf geöffnete Dateien. Zum Schluss wird die files.txt mit allen Quellen importiert.
Schritt 4: Um beispielsweise jeden Tag vollautomatisch ein Backup erstellen zu lassen, kann man die Batchdatei in “Geplante Tasks” aufnehmen. Dazu muss die backup.bat allerdings noch angepasst werden. Es muss der vollständige Pfad zur 7z.exe und zur files.txt angegeben werden, da sonst der Task nicht erfolgreich ausgeführt werden kann.
Bei der Ausführung mittels “Geplante Tasks” wird allerdings das DOS-Fenster sichtbar. Um dies zu unterdrücken, kann man die Datei task.vbs anstatt der backup.bat ausführen. Funktioniert aber nur unter XP! Das kleine Script bietet die Möglichkeit, das Backup völlig im Hintergrund oder minimiert zu starten. Je nachdem was gewünscht ist, sollte man die andere Methode mit ‘ am Zeilenanfang auskommentieren, da die Batchdatei ansonsten zweimal ausgeführt wird.
'komplett unsichtbar starten
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("backup.bat", 0, True)
Set WshShell = Nothing
'minimiert starten
'Dim Shell: Set Shell = WScript.CreateObject ("WSCript.shell")
'shell.run "backup.bat",7,1
Changelog:
- 19.11.2009:
- Blogeintrag aktualisiert
- 64bit-Version hinzugefügt - 17.08.2009:
- 7-Zip-Files auf Version 9.06 upgedated
- readme.txt hinzugefügt - 06.07.2009:
- Möglichkeit für minimiertes Ausführen mittels “Geplante Tasks” hinzugefügt (task.vbs)
- Kleinen Fehler in der Backup.bat behoben - 27.05.2009:
- erste Version
Dateiname in der files.txt darf kein Blank enthalten. in folgendem Besipiel wird der 2. Ordner nicht verarbeitet:
“E:\Archive”
“E:\eigene Dateien”
Das stimmt.
Ich habe deshalb den Quell- und Zielpfad über “set” im Batch-Script auf eine Variable gelegt.
Außerdem habe ich noch den Archivnamen anders festgelegt,
da ich nur Vollsicherungen mache.
Sieht dann (in Auszügen) so aus:
set quelle=”D:\Eigene Dateien\”
set ziel=”X:\Sicherungen\EGDat\”
set name=”DS1-%date:~-10,2%-%date:~-7,2%-%date:~-4%-%time:~0,2%-%time:~3,2%.zip”
7z a -tzip %ziel%%name% %quelle%
Hi,
erstmal danke für das Script sowas hab ich echt lange gesucht. Nun stehe ich vor dem Problem, wie bekomme ich es den hin, das 7Zip mir die Dateien auf ein Netzlaufwerk speichert?
Mirco
Einfach das Netzlaufwerk mappen und den Befehl in der backup.bat ändern. Würde dann so aussehen, wenn das Netzlaufwerk als X verknüpft ist:
7z u X:\backup.7z -up1q3r2x1y2z1w2 -ssw @files.txt
Danke für die Schnelle Antwort. Ich habe es jetzt über Variablen gelöst. Manchmal sieht man den Wald vor lauter Bäumen nicht
Ich habe noch folgendes hinzugefügt:
7z a -mx9
a = Archiv anlegen
mx9 = Maximum Compression
Danke nochmal.
[...] noch, dass wenn NTBackup ein Backup erstellt hat es mit 7zip direkt danach komprimiert wird. Bei antary bin ich dann auf ein nützliches Script gestoßen, was genau das [...]