98204
Goto Top

Einfaches Selbst-Backup-Tool

Ich stelle hier ein einfaches Backup-Tool vor, das mit PC-Grundkenntnissen (Batch-Kommandos) einzurichten und zu konfigurieren ist.

Es gibt eine Batchdatei "Backup.bat", aus der heraus weitere Batchdateien gestartet werden, in denen dann bestimmte Bereiche gesichert werden können.
Die Ausgaben werden sowohl auf die Kommandozeilen-Konsole als auch in eine Logdatei geschrieben. Diese Logdatei bekommt den Namen "Backup_<Datum>.log" und steht im Backupverzeichnis, so daß jederzeit nachvollzogen werden kann was wann gesichert worden ist.

Die nachfolgende Beschreibung ist ein einfaches Beispiel und kann beliebig erweitert werden.
Hier der Inhalt der Startdatei Backup.bat:
@echo off

REM --- Einstellung des Backup-Ziels 

REM eigenes Temp-Verzeichnis
rem set destination="C:\Temp\backup"  

REM USB-Stick 4GB
set destination="X:\"  

REM --- Backup-Variable initialisieren

set backupdir="MyBackup\DailyBackup"  
if not exist %destination%%backupdir% mkdir %destination%%backupdir%
set backuplog= "%destination%%backupdir%\Backup_%date%.log"  

REM --- Backup-Logdatei initialisieren
echo . > %backuplog% 2>&1

REM --- Startzeile in Log-Datei und auf Konsole ausgeben
echo Backup gestartet: %date% %time%, Ziel: %destination% >>%backuplog% 
echo Backup gestartet: %date% %time%, Ziel: %destination%

REM --- Office-Dateien sichern
call OfficeBackup.bat
rem ... weitere Backups in gleicher Weise hinzufügen


REM --- Schlusszeile in Log-Datei und auf Konsole ausgeben
echo Daily Backup beendet: %date% %time% >>%backuplog%
echo Daily Backup beendet: %date% %time%

REM --- Log-Datei anzeigen
start "notepad.exe" %backuplog%  

REM --- Variable löschen
set backuplog=
set backupdir=
set destination=

pause 
@echo on

Erläuterung:
In der Startdatei werden alle notwendigen Umgebungsvariablen gesetzt und die eigentlichen Backup-Batches gestartet.
1. "Einstellung des Backup-Ziels":
Hier wird die Umgebungsvariable "destination" mit dem Laufwerk und/oder einem darunter liegenden Verzeichnis gesetzt.
In diesem Beispiel sind 2 Ziele vorgegeben, wobei eines auskommentiert worden ist. Es kann also je nach Notwendigkeit durch Veränderung der Auskommentierung ein anderes Backup-Ziel eingestellt werden.
2. "Backup-Variable initialisieren":
Hier wird mit der Umgebungsvariablen "backupdir" das Verzeichnis gesetzt, das direkt unterhalb "destination" liegt. Existiert diese Verzeichnis nicht wird es in angelegt.
Die Umgebungsvariable "backuplog" setzt Verzeichnis und Dateiname der Logdatei.
3. "Backup-Logdatei initialisieren":
Hier wird '.' in die Logdatei geschrieben, damit diese überhaupt erst einmal angelegt wird.
4. "Startzeile in Log-Datei und auf Konsole ausgeben":
Hier wird mit den beiden Zeilen die Startzeile "Backup gestartet: <Datum, Uhrzeit>, Ziel: "X:\" sowohl auf die Konsole als auch in die Logdatei geschrieben.
5. "Office-Dateien sichern"
Jetzt sind wir soweit die Batchdateien zu starten, die das eigentliche Backup erzeugen sollen. Das wird weiter unten detailliert erklärt. Es können mehrere solcher Backup-Batches hintereinander in gleicher Weise aufgerufen werden.
6. "Schlusszeile in Log-Datei und auf Konsole ausgeben"
Hier wird auf Konsole und in die Logdatei die Schlusszeile "Daily Backup beendet: <Datum, Uhrzeit>" geschrieben.

Danach wird die Logdatei mit einem Texteditor angezeigt. Auch hier kann man je nach Geschmack auch einen anderen Editor einsetzen.
Zum Schluss werden die Umgebungsvariablen wieder gelöscht und das Tool wartet auf einen Tastenklick.


Beispiel-Backup "Office-Dateien sichern":
Hier wird beispielhaft eine Batchdatei "OfficeBackup.bat" beschriebent, in der Dateien aus dem Office-Bereich gesichert werden.
Diese Batchdatei hat den folgenden Aufbau:
echo Office (Eigene Dateien)
echo Office (Eigene Dateien) >> %backuplog%
set copyfrom="C:\Eigene Dateien"  
set copyto="%destination%\%backupdir%\C\Eigene Dateien"  
mkdir %copyfrom% 2>>%backuplog%
xcopy %copyfrom%\*.* %copyto%\*.* /c/s/e/v /Y >nul
rem ... weiter Backups in gleicher Weise hinzufügen

Erläuterung:
Hier werden alle Dateien aus "C:\Eigene Dateien" gesichert.
Mit den 2 echo-Zeilen werden entsprechende Logs in die Konsole und die Logdatei geschrieben. Die Umgebungsvariablen "copyfrom" und "copyto" werden gesetzt mit den Verzeichnissen des zu sichernden Quell- und Zielbereichs.
Mit dem mkdir-Befehl wird das Verzeichnis erzeugt. Sollte es bereits existieren wird die enstprechende Fehlermeldung in die Logdatei geschrieben.
Der xcopy-Befehl ist so gesetzt, daß alles ohne Rückfrage kopiert wird und die Ausgaben auf "nul" umgeleitet werden. Wer die Ausgaben in seiner Logdatei sehen möchte kann statt "nul" auf ">>%backuplog%" umsetzen.

In gleicher Weise können weitere Batchdateien erzeugt werden. Es werden dann lediglich die echo-Zeilen und die Variablen "copyfrom" und "copyto" neu gesetzt. Alles andere kann mit Copy&Paste übernommen werden.

Content-ID: 164641

Url: https://administrator.de/contentid/164641

Ausgedruckt am: 23.11.2024 um 00:11 Uhr

60730
60730 15.04.2011 um 09:54:46 Uhr
Goto Top
Salü und danke für die mühe.

  • kannst du das bitte in Tags klemmen?
  • evtl. wäre (grade bei USB) eine Abfrage hilfreich:

* ist der Stick überhaupt da?
  • und beschreibbar
  • pi* Daumen passt das Backup dort auch drauf?
  • eine Fehlerabfrage

  • Dann schau dir mal ein paar andere Backupper an oder 7z Scripte (die meistens von des Bibers Tut Batch und Datum inspiriert wurden) - das %date%;%Time% ist nicht wirklich hybsch.

Wie gesagt Kleinigkeiten, aber nochmal Danke für die Mühe.
In der letzten Zeit kommen ja immer mehr hochkomplexe Fragen face-sad

Grüße
99045
99045 15.04.2011 um 09:58:38 Uhr
Goto Top
Moin,

die Codeformatierung würde die Lesbarkeit erheblich verbessern.

mkdir ist bei xcopy überflüssig, das erledigt xcopy selbst, wenn man den Zielverzeichnispfad mit .einem Backslash abschließt.

Gruß
98204
98204 15.04.2011 um 10:24:09 Uhr
Goto Top
Hi,

danke für die Hinweise.
Bzgl. "Codeformatting": Ich habe den Text aus einem Texteditor hierher kopiert (Copy&Paste). Etwas Besseres fiel mir nicht ein, sorry ...
Den mkdir habe ich mit reingebracht weil das bei xcopy nicht funktionierte. Da hatte ich wohl irgendwas falsch gemacht. Naja, man lernt nie aus ...

vg
Internetter
99045
99045 15.04.2011 um 10:29:18 Uhr
Goto Top
Hi,

wenn du auf die "Formatierungshilfe" im Eingabefeld des Beitrags klickst, dann findest du auch die Formatierungen in den Beiträgen face-wink

Gruß
98204
98204 15.04.2011 um 10:34:18 Uhr
Goto Top
Hallo Timo,

- Die Abfrage wollte ich weglassen, weil es eben eine einfache(!) Sache bleiben sollte, ohne Schnickschnack.
Ich habe dabei vorausgesetzt der Anwender weiß was er tut, in dem Fall also, das er den USB-Stick auch gesteckt hat. Hat er es nicht passiert aber auch nichts Tragisches.
- Kann man eigentlich mit einem Batchkommando abfragen, ob das Backup drauf passt? Das ist schwierig, weil der benötigte Speicherplatz auf dem Backup-Medium anders sein kann als der auf dem Original-Medium.
- Ja "%date%%Time%" ist nicht hübsch, aber auf Schönheit kam es mir hier garnicht an. Es sollte funktionieren und leicht änderbar sein. Das Ganze läuft bei mir schon einige Zeit und ab und an stecke ich auch etwas Gehirnschmalz hinein um da noch etwas zu verbessern.

Btw: Was sind 7z Scripte?

Danke für deine Tipps.

vG
Internetter
Frank
Frank 15.04.2011 um 11:20:36 Uhr
Goto Top
Hi Internetter,

zur Textformatierung: Du must einfach vor Deinem Quellcode <code> und nach Deinem Quellcode ein </code> anfügen (also: .. der Quellcode </code>). Damit wird der Quellcode im Forum richtig angezeigt. Ich habe Deinen Beitrag jetzt aktualisiert. Schaue es Dir einfach mal an, ist ganz einfach.

face-smile

Gruß
Frank
Webmaster
99045
99045 15.04.2011 um 11:28:24 Uhr
Goto Top
@Frank
Hi,

die Idee mit dem doppelten Accent Gravis war aber nicht schlecht, wenn sie denn funktioniert. face-smile

Gruß
98204
98204 15.04.2011 um 11:53:52 Uhr
Goto Top
Danke. Ich muss zugeben ich habe in der Eile nicht in die Formatierungshilfe gesehen.

vG
Internetter
60730
60730 15.04.2011 um 12:34:41 Uhr
Goto Top
Salü zusammen,

ich bin ja schon immer ein großer Freund von schmalen kurzen Sachen.
Und da meine "einwände" mittlerweile nichtig geworden sind und Frank ja auch schon an Board war (und hoffentlich den [x] Haken drin hat) -

Schicke ich Frank keine PN, dass er meine beiden Antworten bitte in das große runde werfen soll, sondern schreibs Hier rein, vielleicht findet die Idee ja der eine oder andere auch nicht verkehrt.

und falls mal wirklich Fragen kommen - wirds übersichtlicher wenn unser Geplänkel verschwunden ist.

Ps:

(alles, was blau hinterlegt ist - ist ein Link - also oben die Code Tags waren es auch)

Gruß
Kritzkratz
Kritzkratz 02.05.2011 um 13:12:23 Uhr
Goto Top
xcopy kann meines wissen nur bis 256 Zeichen kopieren, bei viele Dateiordnern können hier aber informationen verlohren gehen. Robocopy erledigt dies besser, ist dafür aber auch um einiges langsamer;)