Webhosting inkl. Homepagebaukasten!

Sicherungsbatch erstellen

Heute will ich mal ein kurzes Tutorial schreiben, wie man mit Hilfe von Windows internen Bordmitteln und einem Pack-Programm sein eigenes Backup erstellen kann.

Zum Einsatz kommen das Batch-Scripting unter Verwendung von 7Zip für das Packen der Daten.

Zunächst einmal wird mit Hilfe eines Editor´s , ob Notepad, PS-Pad oder Notepad++ ist völlig egal,  eine Batch-Datei angelegt werden. Ich empfehle aber einen Editor wie PS-Pad oder Notepad++, da man beim Test der Batch nicht immer den Editor schließen muss, das wäre beim Notepad (Windows Standard Editor) der Fall.


Dort wird in der ersten Zeile das Kommando für die Ausgabe an oder aus geschaltet, wir nutzen die Ausgabe (ON) für die Fehlerdiagnose und später kann das ECHO auf OFF gestellt werden.

@ECHO ON

So nun klären wir noch was das Programm machen soll. In diesem Beispiel sollen alle Dateien im Ordner C:\test auf ein eine andere Partition kopiert und dort zu einem Archiv gepackt werden. Ich nutze diese Methode um zu zeigen wie zwei separate Kommandozeilen-Werkzeuge arbeiten. Mit 7Zip ist es natürlich auch  möglich die Kopie woanders zu packen ohne voriges Kopieren, aber das zeige ich später noch.

Beginnen wir mit der Definition der Pfade. Das erreicht  man mit dem SET-Befehle (Setze), alle weiteren Befehle lassen sich in der Windows-Hilfe nachlesen siehe Blogeintrag.

Set QUELLE="C:\test"
Set ZIEL="D:\backup"
Set ZIP="C:\Windows"

Soweit haben wir nun die Quelle, das Ziel und den Pfad für die 7zip.exe gesetzt und können eigentlich schon anfangen die Sicherung mit XCOPY zu machen.

An zu merken ist noch die Verwendung der Prozentzeichen, die zum Einsatz kommen. Windows-Hilfe gibt mehr Info´s. Kurz: Sie dienen uns jetzt um die vordefinierten Pfade an zu sprechen z.B.:%QUELLE%.

Da das Programm XCOPY nicht nur stumpf eine Sache ausführen kann sind weitere Optionen an zu geben. In folgender Tabelle sind alle Optionen von XCOPY zu finden und erklärt.

/Y
Gibt an, dass vorhandene, gleichnamige Dateien beim Verschieben mit dem Befehl XCOPY ohne vorherige Bestätigung überschrieben werden sollen. Wenn die angegebene Zieldatei bereits existiert, fordert Sie XCOPY als Standardvorgabe dazu auf, das Überschreiben der vorhandenen Datei zu bestätigen. (Bei früheren MS-DOS-Versionen wurden gleichnamige Dateien einfach überschrieben.) Beim Aufruf aus einer Stapelverarbeitungsdatei verhält sich XCOPY Dateien wie bei früheren Versionen. Bei der Angabe dieser Option werden alle Standardeinstellungen sowie die aktuelle Einstellung der Umgebungsvariablen COPYCMD außer Kraft gesetzt.
/-Y
Gibt an, dass XCOPY Sie vor dem Überschreiben einer vorhandenen Datei zur Bestätigung auffordern soll. Bei der Angabe dieser Option werden alle Standardeinstellungen sowie die aktuelle Einstellung der Umgebungsvariablen COPYCMD außer Kraft gesetzt.
/A
Kopiert nur solche Quelldateien, deren Dateiattribut „Archiv“ gesetzt ist. Diese Option führt nicht dazu, dass die „Archiv“-Dateiattribute der Quelldateien geändert werden. Informationen darüber, wie das Dateiattribut „Archiv“ gesetzt wird, finden Sie bei dem Befehl Attrib.
/M
Kopiert nur solche Quelldateien, deren Dateiattribut „Archiv“ gesetzt ist. Im Gegensatz zu der Option /A bewirkt die Option /M, dass die „Archiv“-Dateiattribute der in Quelle angegebenen Dateien deaktiviert werden. Informationen darüber, wie das Dateiattribut „Archiv“ gesetzt wird, finden Sie bei dem Befehl Attrib.
/D:Datum
Kopiert nur solche Quelldateien, die an oder nach dem angegebenen Datum geändert wurden. Beachten Sie bitte, dass das Format von Datum davon abhängt, mit welchem Landescode (eingestellt mit COUNTRY) Sie arbeiten.
/P
Fordert Sie für jede Zieldatei auf, zu bestätigen, dass sie erstellt werden soll.
/S
Kopiert Verzeichnisse und Unterverzeichnisse, sofern sie nicht leer sind. Wenn Sie diese Option nicht angeben, funktioniert XCOPY nur für ein Verzeichnis.
/E
Kopiert alle Unterverzeichnisse, auch wenn diese leer sind. Dieser Optionen muss zusammen mit der Option /S eingesetzt werden.
/V
Sorgt dafür, dass jede Datei, während sie in die Zieldatei geschrieben wird, überprüft wird. Damit ist sichergestellt, dass Quell- und Zieldateien identisch sind.
/W
Sorgt dafür, dass XCOPY die folgende Meldung anzeigt und erst dann mit dem Kopieren der Dateien beginnt, wenn Sie entsprechend reagiert haben: 

Eine beliebige Taste drücken, um das Kopieren der Datei(en) zu starten.

Quelle: http://www.i8086.de/

Die Syntax für die Verwendung des Programms sieht so aus.

XCOPY Quelle [Ziel] [/Y|/-Y] [/A|/M] [/D:Datum] [/P] [/S] [/E] [/V] [/W]

Quelle: http://www.i8086.de/

 

Geben wir nun den Befehl ein und nutzen dabei gleich einige Parameter.

XCOPY %QUELLE%%ZIEL% /E/V

Nun haben wir mit dem Code schon einmal die Daten kopiert, aber wir wollen diese ja dann auch noch packen, damit wir Speicherplatz sparen können.

Dazu sprechen wir das Programm 7zip.exe an und können dort ebenfalls Optionen mit angeben.

Verwendung: 7za <command> [<switches>...] <archive_name> [<file_names>...]
       [<@listfiles...>]

<Commands>
  a: Add files to archive
  b: Benchmark
  d: Delete files from archive
  e: Extract files from archive (without using directory names)
  l: List contents of archive
  t: Test integrity of archive
  u: Update files to archive
  x: eXtract files with full paths

<Switches>
  -ai[r[-|0]]{@listfile|!wildcard}: Include archives
  -ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
  -bd: Disable percentage indicator
  -i[r[-|0]]{@listfile|!wildcard}: Include filenames
  -m{Parameters}: set compression Method
  -o{Directory}: set Output directory
  -p{Password}: set Password
  -r[-|0]: Recurse subdirectories
  -scs{UTF-8 | WIN | DOS}: set charset for list files
  -sfx[{name}]: Create SFX archive
  -si[{name}]: read data from stdin
  -slt: show technical information for l (List) command
  -so: write data to stdout
  -ssc[-]: set sensitive case mode
  -ssw: compress shared files
  -t{Type}: Set type of archive
  -v{Size}[b|k|m|g]: Create volumes
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
  -w[{path}]: assign Work directory. Empty path means a temporary directory
  -x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
  -y: assume Yes on all queries

Quelle: readme-file im Programmverzeichnis.

 

Also geben wir nun folgende Zeile ein.

7za a -t7z %Ziel%/Sicherung.7z %Q_ALL% -mx9 -aoa

Das Ganze sieht dann so aus:

@ECHO ON

Set QUELLE="C:\test"
Set ZIEL="D:\backup"
Set ZIP="C:\Windows"

XCOPY %QUELLE%%ZIEL% /E/V

%ZIP%\7za a -t7z %Ziel%/Sicherung.7z %Q_ALL% -mx9 -aoaDas Ganze sieht dann so aus:

Das wäre dann schon einmal unsere erste minimal Batch zur Sicherung.

Man kann jetzt noch mit CHOICE ein Abfrage machen, ob gezippt werden soll oder was bei einem Fehler passieren soll, aber das soll jetzt hier nicht der springende Punkt sein. Bei Interesse schreibe ich dazu auch noch einiges.

Ich hoffe ich konnte hier eine recht verständliche Anleitung geben.

Tags: , , , ,

Administrator aus Leidenschaft

Kommentar schreiben