Automatisierte Sicherung per Robocopy - Dienst auf externe Festplatte
Der Geschäftsführer möchte aus Sicherheitsgründen folgendes Szenario:
Er möchte die Backups des Servers in Kopie auf eine Netzwerkfestplatte kopieren, um diese dann mit nach Hause nehmen zu können, falls irgendetwas passiert, hat er die Backups noch daheim.
Er möchte die Festplatte einfach bei sich im Büro anschliessen, und da er nicht gerade der Technikfreak ist, am liebsten gar nichts machen. Den Wunsch habe ich Ihm erfüllt:
Die folgende Batch liegt auf dem Server und läuft mittels RunAsSvc als Dienst. Im Einzelnen macht die Batch folgendes:
Bei einer erfolgreichen Sicherung sieht die E-Mail folgendermaßen aus:
*Wichtig noch:* die Datei bmail.exe zum versenden von E-Mails [es geht auch blat], die Sleep.exe und die Robocopy.exe müssen in diesem Beispiel im selben verzeichnis liegen. bmail findet man unter google und die anderen beiden sind bestandteil des Resource Kits von Windows. Und nun natürlich zum Code:
Ich hoffe euch nützt dieses kleine Howto etwas und kann euch den Alltag erleichern.
Euer crazyhoesl
Er möchte die Backups des Servers in Kopie auf eine Netzwerkfestplatte kopieren, um diese dann mit nach Hause nehmen zu können, falls irgendetwas passiert, hat er die Backups noch daheim.
Er möchte die Festplatte einfach bei sich im Büro anschliessen, und da er nicht gerade der Technikfreak ist, am liebsten gar nichts machen. Den Wunsch habe ich Ihm erfüllt:
Die folgende Batch liegt auf dem Server und läuft mittels RunAsSvc als Dienst. Im Einzelnen macht die Batch folgendes:
- Alle 10 Sekunden wird per ping geprüft ob die Netzwerkfestplatte erreichbar ist. Ist dies der Fall wird eine E-Mail verschickt, mit dem Betreff "Netzwerkfestplatte angeschlossen".
- Nun wird der eigentliche Robocopy-Job gestartet. Per Errorlevel wird überprüft ob der Vorgang korrekt abgeschlossen wurde oder nicht. Ist alles glatt gelaufen, wird aus dem LOG des Robocopy -Jobs eine Kurz-Zusammenfassung erstellt und per E-Mail verschickt. Ist ein Fehler aufgetreten, so wird anstatt der Zusammenfassung das komplette Robocopy-Log per Mail verschickt und der Betreff lautet "Fehler", anstatt "Bericht".
- Zusätzlich wird noch die Anzahl der Dateien und die insgesamte Größe des Quell- und des Ziel Mediums in die E-Mail geschrieben.
- Jetzt wartet der Batch Job wieder per Ping alle 10 Sekunden bis die Netzwerkfestplatte nicht mehr erreichbar ist. Wieder wird eine E-Mail verschickt "Netzwerkfestplatte abgeschlossen".
- Und nun springt das Programm wieder nach oben und beginnt von vorne.
Bei einer erfolgreichen Sicherung sieht die E-Mail folgendermaßen aus:
Started : Mon Sep 10 16:56:13 2007
Source : \\fileserver\Backups
Dest : \\192.168.102.240\share\
-----------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 1 0 1 0 0 0
Files : *.*
Files : 2 1 1 0 0 0
Bytes : 287.56 m 280.86 m 6.70 m 0 0 0
Speed : 7674639 Bytes/sec.
Speed : 439.146 MegaBytes/min.
-----------------------------------------------------------------------------
Times : 0:00:38 0:00:38 0:00:00 0:00:00
Ended : Mon Sep 10 16:56:52 2007
Anzahl der Dateien auf dem Quellsystem:
2 Datei(en) 301.535.920 Bytes
Anzahl der Dateien auf der Netzwerkfestplatte:
2 Datei(en) 301.535.920 Bytes
*Wichtig noch:* die Datei bmail.exe zum versenden von E-Mails [es geht auch blat], die Sleep.exe und die Robocopy.exe müssen in diesem Beispiel im selben verzeichnis liegen. bmail findet man unter google und die anderen beiden sind bestandteil des Resource Kits von Windows. Und nun natürlich zum Code:
:: --------------------------- Variablen leeren ---------------------------
set befehl=
set body=
set Quelle=
set Ziel=
set mailsrv=
set mailaddr=
set mailfrom=
set errorlevel=
:: -------------------------------- Variablen setzen ---------------------------------
set Quelle=\\192.168.15.240\Images\ww-file
set Ziel=\\192.168.15.39\share
set Zielip=192.168.15.39
set mailsrv=192.168.15.2
set mailaddr=max.mustermann@firma.de
set mailfrom=Robocopy@firma.de
:: ------------- eventuell alte vorhandeneDateien löschen --------------------
del temp.txt
del logfile.log
:: ---------------------- alle 10 Sekunden nachsehen, ob die Netzwerkfestplatte am Netz hängt -------------------------
:pingstart
cls
sleep 10
ping %Zielip% -n 1
if %errorlevel% == 1 goto pingstart
:: ---------------------- E-Mail versenden : Netzwerkfestplatte wurde angeschlossen -------------------------------------
bmail.exe -s %mailsrv% -t %mailaddr% -f %mailfrom% -a "Netzwerkfestplatte wurde angeschlossen" -d
:: --------------------Variablen setzen ----------------------
set befehl=Spiegelung erfolgreich
set body=temp.txt
:: --------------------- Starten der Robocopy ----------------------
robocopy.exe "%Quelle%" "%Ziel%" /E /PURGE /COPY:DAT /ETA /R:0 /W:0 /LOG:logfile.log
:: ------------------ Errorlevel von Robocopy überprüfen ------------------------
if %errorlevel%==16 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==15 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==14 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==13 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==12 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==11 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==10 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==9 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==8 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==7 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==6 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==5 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==4 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==3 set befehl=FEHLER & set body=logfile.log
if %errorlevel%==2 set befehl=FEHLER & set body=logfile.log
:: ------------------------ Bestimmte Zeilen auslesen -------------------------------
sleep 2
find /i "Started" logfile.log >> temp.txt
find /i "Source" logfile.log >> temp.txt
find /i "Dest" logfile.log >> temp.txt
echo. >> temp.txt
echo ----------------------------------------------------------------------------- >> temp.txt
find /i "Skipped" logfile.log >> temp.txt
find /i "Dirs" logfile.log >> temp.txt
find /i "Files" logfile.log >> temp.txt
find /i "Bytes" logfile.log >> temp.txt
echo ----------------------------------------------------------------------------- >> temp.txt
find /i "Times" logfile.log >> temp.txt
find /i "Ended" logfile.log >> temp.txt
echo. >> temp.txt
echo. >> temp.txt
sleep 2
:: --------------------------------- Anzeige Anzahl der Daten auf jedem Medium ---------------------
type temp.txt | find /i /v "---------- LOGFILE.LOG" > temp2.txt
del temp.txt
ren temp2.txt temp.txt
echo Anzahl der Dateien auf dem NAS: >> temp.txt
echo. >> temp.txt
dir "%Quelle%" | find /i "Datei(en)" >> temp.txt
echo. >> temp.txt
echo. >> temp.txt
echo Anzahl der Dateien auf der Buffalo: >> temp.txt
echo. >> temp.txt
dir "%Ziel%" | find /i "Datei(en)" >> temp.txt
:: ------------------ Versende Email, das Logfile ist Inhalt des Bodys -------------------
sleep 2
bmail.exe -s %mailsrv% -t %mailaddr% -f %mailfrom% -a "%befehl%" -m %body% -d
:: ------------------ Löschen der Logfiles ----------------
sleep 2
del temp.txt
del logfile.log
:: ---------------------- Nun so lange warten, bis die Netzwerkfestplatte nicht mehr im Netz hängt --------------------
:pingend
sleep 10
ping %Zielip% -n 1
if %errorlevel% == 0 goto pingend
:: --------------------- Platte ist nicht mehr im Netz, verschicke Info-Mail, gehe zum Start und warte bis Platte wieder da -----------------------------------
bmail.exe -s %mailsrv% -t %mailaddr% -f %mailfrom% -a "Netzwerkfestplatte wurde entfernt" -d
goto pingstart
Ich hoffe euch nützt dieses kleine Howto etwas und kann euch den Alltag erleichern.
Euer crazyhoesl
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 68339
Url: https://administrator.de/contentid/68339
Ausgedruckt am: 21.11.2024 um 20:11 Uhr
15 Kommentare
Neuester Kommentar
Wie gesagt, hau nur eine Mail raus, wenn die NAS-Platte nicht erreichbar ist. Sonst ist dein Chef nur am Mails löschen, weil sein Postfach überquillt.
Sowieso würde ich im Outlook deines Chefs eine Regel setzen, dass die Mails des Batchs automatisch in einen Unterordner des Postfachs oder in eine PST umleitet. Sonst hat er den Posteingang mit deinen Mails gefüllt.
Sowieso würde ich im Outlook deines Chefs eine Regel setzen, dass die Mails des Batchs automatisch in einen Unterordner des Postfachs oder in eine PST umleitet. Sonst hat er den Posteingang mit deinen Mails gefüllt.
Ich soll ein Script schreiben, welches überprüft, ob der User neue Daten erzeugt hat, wenn ja, sollen diesen auf einen Server Kopiert werden.
Anschließend soll der Transfer der Daten überprüft werden, sprich ob die Originaldateien mit den kopierten Dateien übereinstimmen. Ist dies alles erledigt soll eine Logfile erstellt werden und per E-Mail versendet werden.
Den leichten teil mit dem Kopieren habe ich mit einer Batch Datei gelöst und das funktioniert soweit.
Hier ist mein Quelltext, damit ihr seht wie weit ich bin:
@echo off
xcopy g:\test\*.* h:\safe /e/s/y/d
FOR /F "tokens=1,2 delims=:" %%d IN ('date /t') DO set dat=%%d
FOR /F "tokens=1,2 delims=:" %%i IN ('time /t') DO set zeit=%%i-%%j
rename h:\safe\safe "%dat%%zeit%.Safe"
FOR /F "skip=2 tokens=*" %%c IN ('DIR /O-D /B h:\safe\*safe') DO (rd h:\safe\"%%c" /s/q)
exit
erklärungen in ():
xcopy g:\test\*.* (Start) h:\safe (Ziel) /e/s/y/d (Parameter)
(kopiert das Startverzeichnis zum Zielverzeichnis)
FOR /F "tokens=1,2 delims=:" %%d IN ('date /t') DO set dat=%%d
(kreiert eine Variable "dat" = Datum)
FOR /F "tokens=1,2 delims=:" %%i IN ('time /t') DO set zeit=%%i-%%j
(kreiert eine Variable "zeit" = Uhrzeit)
rename h:\safe\safe "%dat%%zeit%.Safe"
(benennt das soeben kopierte Verzeichnis in "Datum Uhrzeit.Safe" um)
FOR /F "skip=2 tokens=*" %%c IN ('DIR /O-D /B h:\safe\*safe') DO (rd h:\safe\"%%c" /s/q)
(legt fest, dass nur die zwei neusten Verzeichnisse bleiben, und die älteren gelöscht werden. Details:
skip=2 = gibt an, dass die zwei neusten übersprungen werden
h:\safe\*Safe' = gibt die zu prüfenden Verzeichnisse an
rd h:\safe\"%%c" /s/q = das ist der Löschbefehl
Wenn mir jmd helfen könnte wäre ich euch sehr sehr verbunden.
vor allem, muss Bmail vorher eingerichtet werden?
Anschließend soll der Transfer der Daten überprüft werden, sprich ob die Originaldateien mit den kopierten Dateien übereinstimmen. Ist dies alles erledigt soll eine Logfile erstellt werden und per E-Mail versendet werden.
Den leichten teil mit dem Kopieren habe ich mit einer Batch Datei gelöst und das funktioniert soweit.
Hier ist mein Quelltext, damit ihr seht wie weit ich bin:
@echo off
xcopy g:\test\*.* h:\safe /e/s/y/d
FOR /F "tokens=1,2 delims=:" %%d IN ('date /t') DO set dat=%%d
FOR /F "tokens=1,2 delims=:" %%i IN ('time /t') DO set zeit=%%i-%%j
rename h:\safe\safe "%dat%%zeit%.Safe"
FOR /F "skip=2 tokens=*" %%c IN ('DIR /O-D /B h:\safe\*safe') DO (rd h:\safe\"%%c" /s/q)
exit
erklärungen in ():
xcopy g:\test\*.* (Start) h:\safe (Ziel) /e/s/y/d (Parameter)
(kopiert das Startverzeichnis zum Zielverzeichnis)
FOR /F "tokens=1,2 delims=:" %%d IN ('date /t') DO set dat=%%d
(kreiert eine Variable "dat" = Datum)
FOR /F "tokens=1,2 delims=:" %%i IN ('time /t') DO set zeit=%%i-%%j
(kreiert eine Variable "zeit" = Uhrzeit)
rename h:\safe\safe "%dat%%zeit%.Safe"
(benennt das soeben kopierte Verzeichnis in "Datum Uhrzeit.Safe" um)
FOR /F "skip=2 tokens=*" %%c IN ('DIR /O-D /B h:\safe\*safe') DO (rd h:\safe\"%%c" /s/q)
(legt fest, dass nur die zwei neusten Verzeichnisse bleiben, und die älteren gelöscht werden. Details:
skip=2 = gibt an, dass die zwei neusten übersprungen werden
h:\safe\*Safe' = gibt die zu prüfenden Verzeichnisse an
rd h:\safe\"%%c" /s/q = das ist der Löschbefehl
Wenn mir jmd helfen könnte wäre ich euch sehr sehr verbunden.
vor allem, muss Bmail vorher eingerichtet werden?
Hallo erstmal
Ich bin neu hier und bin in den letzten Tagen auf der Suche nach Hilfe zu Batch-Skripten immer wieder auf diese Seite gestossen.
Ist echt eine super Ressource. Deshalb habe ich mich kurzum angemeldet.
Besonders die Artikel zu Robocopy haben mich interessiert, da ich selbst auch ein Skript schreiben wollte um meine wichtigen Daten auf einfachste Weise zu sichern.
Vielleicht hat ja sonst noch jemand interesse an einem schnellen und sehr einfach zu handhabendem Backup Tool.
Ich bin natürlich auch froh um jede Anregung oder Verbesserungsvorschläge.
Nun zum eigentlichen Skript:
Es hat halt einige Zeilen, deshalb vielleicht am besten kopieren und in einem externen Editor anschauen. (Ich benutze immer Notepad++ da ich das Syntax-Highlighting sehr schätze!)
Für mein Beispiel muss eine Textdatei mit Namen 'bkpfolders.txt' im selben Verzeichnis sein wie das *.bat file selbst.
Ich habe ebenfalls eine "Batch-Setup-Datei" geschrieben welche das kopieren der benötigten Dateien übernimmt.
Bei Interesse wird diese ebenfalls gepostet.
Nun hoffe ich darauf von euch noch was zu lernen um meine nächsten Skripte (falls es die geben wird) noch besser zu machen.
Merci und Tschüss
ceerotolerance
Ich bin neu hier und bin in den letzten Tagen auf der Suche nach Hilfe zu Batch-Skripten immer wieder auf diese Seite gestossen.
Ist echt eine super Ressource. Deshalb habe ich mich kurzum angemeldet.
Besonders die Artikel zu Robocopy haben mich interessiert, da ich selbst auch ein Skript schreiben wollte um meine wichtigen Daten auf einfachste Weise zu sichern.
Vielleicht hat ja sonst noch jemand interesse an einem schnellen und sehr einfach zu handhabendem Backup Tool.
Ich bin natürlich auch froh um jede Anregung oder Verbesserungsvorschläge.
Nun zum eigentlichen Skript:
Es hat halt einige Zeilen, deshalb vielleicht am besten kopieren und in einem externen Editor anschauen. (Ich benutze immer Notepad++ da ich das Syntax-Highlighting sehr schätze!)
@echo offset LINE=-------------------------------------------------------------------------------title cee Backup Tool v0.4:: immer ins batch verzeichnis wechseln!!cd /D %~d0%~p0color 8E::Ziel des Backups angeben:destpath="\\MEINSERVER\%USERNAME%"cls:MAIN echo %LINE% echo RoboCopy Script um ein inkrementelles Backup von mehreren Ordnern zu erstellen. echo. echo (c) by cee {ceerotolerance} 2008 echo %LINE% echo.:: Funktion :NEXT mit dem Parameter (Inhalt der Zeile) for /F "delims=; usebackq" %%i in (%cd%\bkpfolders.txt) do call :NEXT "%%i"goto :END:NEXT:: %1 ist der erste Parameter!!!set "src=%1"goto :CHECK:CHECK echo checking: %src% if exist %src% goto START goto NOSRC:NOSRC echo Der Pfad %src% existiert nicht! echo. set /P "src=Ordner angeben der gesichert werden soll: " goto CHECK :START :: UP = ein Verzeichnis höher for %%i in (%src%) do set UP=%%~ni%%~xi set dest="%destpath%\BACKUP\%UP%" if not exist %dest% md %dest% echo start backing up to folder: '%dest%' robocopy %src% %dest% /S /ZB /R:3 /W:3:END
Für mein Beispiel muss eine Textdatei mit Namen 'bkpfolders.txt' im selben Verzeichnis sein wie das *.bat file selbst.
Ich habe ebenfalls eine "Batch-Setup-Datei" geschrieben welche das kopieren der benötigten Dateien übernimmt.
Bei Interesse wird diese ebenfalls gepostet.
Nun hoffe ich darauf von euch noch was zu lernen um meine nächsten Skripte (falls es die geben wird) noch besser zu machen.
Merci und Tschüss
ceerotolerance
hi crazyhoesl
könntest du mir vielleicht auch sagen wie man aus einer Batch Datei heraus nach dem Sicherungsvorgang
eine E-Mail ohne B-Mail oder sonstige Programme außer outlook express (lieber noch Outlook 2003)
senden kann.
Ich sichere nämlich jeden Tag meinen USB-STICK und da sollte ich nach jedem Sicherungsvorgang eine Mail zugeschickt bekommen,
ob die Sicherung funktioniert oder nicht funktioniert hat.
Die Log Datei des Sicherungsvorganges mit Robocopy sollte dann im Anhang hinzugefügt werden.
könntest du mir vielleicht auch sagen wie man aus einer Batch Datei heraus nach dem Sicherungsvorgang
eine E-Mail ohne B-Mail oder sonstige Programme außer outlook express (lieber noch Outlook 2003)
senden kann.
Ich sichere nämlich jeden Tag meinen USB-STICK und da sollte ich nach jedem Sicherungsvorgang eine Mail zugeschickt bekommen,
ob die Sicherung funktioniert oder nicht funktioniert hat.
Die Log Datei des Sicherungsvorganges mit Robocopy sollte dann im Anhang hinzugefügt werden.
Mein Script ist nicht inkrementel, aber ich habe mehrere Sicherungen auf einer Platte mit Datum der Sicherung, wobei nach einer Bestimmten Anzahl an Versionen die älteste überschrieben wird.
Das ganze habe ich mir als Vorlage für verschiedene Aufgaben geschrieben hier für 10 Ordner und 5 Versionen:
Vielleicht hilfts Jemanden
[Edit Biber] Codetags ergänzt. [/Edit]
Das ganze habe ich mir als Vorlage für verschiedene Aufgaben geschrieben hier für 10 Ordner und 5 Versionen:
cd c:\
@echo off
echo Back Up wird jetzt erstellt
echo Bitte Fenster offen lassen!
setlocal
REM Datum des Sicherung in Variable sichern *****(XP)*****
set Startdatum=%date%
REM Datum des Sicherung in Variable sichern *****(2000)*****
REM set Startdatum=%date:~3,10%
REM set umben=0
REM **************Falls Netzwerklaufwerke genutzt werden sollen*****************************
REM net use N: \\192.168.8.52\Freigabe passwort /User:Username
REM **************Ordner Pfad zu den Sicherungen (gleiche wie Ziel (ZL))*********************
set "Basis=E:\Sicherung"
REM **************Name der einzelnen Versionen der Sicherung*********************************
set "Ordner=Sicherung_vom_??.??.????"
REM **************Anzahl der Versionen Zahl = Zahl+1 (4= 5 Versionen)************************
set Anzahl=4
REM Überprüfen der Anzahl von Versionen
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /ad /o-n "%Basis%\%Ordner%"') do set umben=%%i
if not %umben% equ 0 ren "%Basis%\%umben%" Sicherung_vom_%Startdatum%
REM ********************Ziel********************
REM Laufwerksbuchstabe für Backupmedium
set ZL=E:\Sicherung
REM Verzeichnis für dieses Backup
set ZV=\Sicherung_vom_%Startdatum%\
REM ********************Quelle 1********************
REM Zu sicherndes Verzeichnis 1
set q1="Pfad\Verzeichnis 1"
REM Name für das BackupVerzeichnis
set n1=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_1
REM ********************Quelle 2********************
REM Zu sicherndes Verzeichnis 2
set q2="Pfad\Verzeichnis 2"
REM Name für das BackupVerzeichnis
set n2=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_2
REM ********************Quelle 3********************
REM Zu sicherndes Verzeichnis 3
set q3="Pfad\Verzeichnis 3"
REM Name für das BackupVerzeichnis
set n3=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_3
REM ********************Quelle 4********************
REM Zu sicherndes Verzeichnis 4
set q="Pfad\Verzeichnis 4"
REM Name für das BackupVerzeichnis
set n4=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_4
REM ********************Quelle 5********************
REM Zu sicherndes Verzeichnis 5
set q5="Pfad\Verzeichnis 5"
REM Name für das BackupVerzeichnis
set n5=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_5
REM ********************Quelle 6********************
REM Zu sicherndes Verzeichnis 6
set q6="Pfad\Verzeichnis 6"
REM Name für das BackupVerzeichnis
set n6=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_6
REM ********************Quelle 7********************
REM Zu sicherndes Verzeichnis 7
set q7="Pfad\Verzeichnis 7"
REM Name für das BackupVerzeichnis
set n7=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_7
REM ********************Quelle 8********************
REM Zu sicherndes Verzeichnis 8
set q8="Pfad\Verzeichnis 8"
REM Name für das BackupVerzeichnis
set n8=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_8
REM ********************Quelle 9********************
REM Zu sicherndes Verzeichnis 9
set q9="Pfad\Verzeichnis 9"
REM Name für das BackupVerzeichnis
set n9=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_9
REM ********************Quelle 10********************
REM Zu sicherndes Verzeichnis 10
set q10="Pfad\Verzeichnis 10"
REM Name für das BackupVerzeichnis
set n10=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_10
REM ********************Kopieren der einzelnen Quellen********************
c:
Echo Die Sicherung wurde um %time% am %date% gestartet > C:\Logfiles\Protokoll.txt
REM Backup Verzeichnis 1
robocopy %q1% %ZL%%ZV%%n1% /MIR /LOG:C:\Logfiles\Verzeichnis_%n1%.log /NP /TEE
REM Backup Verzeichnis 2
robocopy %q2% %ZL%%ZV%%n2% /MIR /LOG:C:\Logfiles\Verzeichnis_%n2%.log /NP /TEE
REM Backup Verzeichnis 3
robocopy %q3% %ZL%%ZV%%n3% /MIR /LOG:C:\Logfiles\Verzeichnis_%n3%.log /NP /TEE
REM Backup Verzeichnis 4
robocopy %q4% %ZL%%ZV%%n4% /MIR /LOG:C:\Logfiles\Verzeichnis_%n4%.log /NP /TEE
REM Backup Verzeichnis 5
robocopy %q5% %ZL%%ZV%%n5% /MIR /LOG:C:\Logfiles\Verzeichnis_%n5%.log /NP /TEE
REM Backup Verzeichnis 6
robocopy %q6% %ZL%%ZV%%n6% /MIR /LOG:C:\Logfiles\Verzeichnis_%n6%.log /NP /TEE
REM Backup Verzeichnis 7
robocopy %q7% %ZL%%ZV%%n7% /MIR /LOG:C:\Logfiles\Verzeichnis_%n7%.log /NP /TEE
REM Backup Verzeichnis 8
robocopy %q8% %ZL%%ZV%%n8% /MIR /LOG:C:\Logfiles\Verzeichnis_%n8%.log /NP /TEE
REM Backup Verzeichnis 9
robocopy %q9% %ZL%%ZV%%n9% /MIR /LOG:C:\Logfiles\Verzeichnis_%n9%.log /NP /TEE
REM Backup Verzeichnis 10
robocopy %q10% %ZL%%ZV%%n10% /MIR /LOG:C:\Logfiles\Verzeichnis_%n10%.log /NP /TEE
REM *****************Falls Netzwerklaufwerke wieder aufgehoben werden sollen****************
REM net use N: /del
echo **************************************************************
echo **************************************************************
echo ****************Backup wurde durchgefuehrt********************
echo **************************************************************
echo **************************************************************
sleep 15
[Edit Biber] Codetags ergänzt. [/Edit]
Probleme gibt es nur bei Ordnern mit sehr vielen kleinen Dateien, da wird Robocopy etwas langsam.
Deshalb habe ich mir mein Script nochmals umgeschrieben für 7zip:
[Edit Biber] Codetags ergänzt. [/Edit]
Deshalb habe ich mir mein Script nochmals umgeschrieben für 7zip:
@echo off
echo Back Up wird jetzt erstellt
echo Bitte Fenster offen lassen!
setlocal
REM Verschiedene Variablen zurücksetzen
set fehler=0
REM Datum des Sicherung in Variable sichern *****(XP)*****
set Startdatum=%date%
REM Datum des Sicherung in Variable sichern *****(2000)*****
REM set Startdatum=%date:~3,10%
REM net use N: \\192.168.8.52\Freigabe passwort /User:Username
REM **************Ordner Pfad zu den Sicherungen (gleiche wie Ziel (ZL))*********************
set "Basis=E:\Sicherung"
REM **************Name der einzelnen Versionen der Sicherung*********************************
set "Ordner=Sicherung_vom_??.??.????"
REM **************Anzahl der Versionen Zahl = Zahl+1 (4= 5 Versionen)************************
set Anzahl=4
REM Überprüfen der Anzahl von Versionen
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /ad /o-n "%Basis%\%Ordner%"') do rmdir /q /s "%Basis%\%%i"
REM ********************Ziel********************
REM Laufwerksbuchstabe für Backupmedium
set ZL=E:\Sicherung
REM Verzeichnis für dieses Backup
set ZV=\Sicherung_vom_%Startdatum%\
REM ********************Quelle 1********************
REM Zu sicherndes Verzeichnis 1
set q1="Pfad\Verzeichnis 1"
REM Name für das BackupVerzeichnis
set n1=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_1
REM ********************Quelle 2********************
REM Zu sicherndes Verzeichnis 2
set q2="Pfad\Verzeichnis 2"
REM Name für das BackupVerzeichnis
set n2=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_2
REM ********************Quelle 3********************
REM Zu sicherndes Verzeichnis 3
set q3="Pfad\Verzeichnis 3"
REM Name für das BackupVerzeichnis
set n3=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_3
REM ********************Quelle 4********************
REM Zu sicherndes Verzeichnis 4
set q="Pfad\Verzeichnis 4"
REM Name für das BackupVerzeichnis
set n4=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_4
REM ********************Quelle 5********************
REM Zu sicherndes Verzeichnis 5
set q5="Pfad\Verzeichnis 5"
REM Name für das BackupVerzeichnis
set n5=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_5
REM ********************Quelle 6********************
REM Zu sicherndes Verzeichnis 6
set q6="Pfad\Verzeichnis 6"
REM Name für das BackupVerzeichnis
set n6=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_6
REM ********************Quelle 7********************
REM Zu sicherndes Verzeichnis 7
set q7="Pfad\Verzeichnis 7"
REM Name für das BackupVerzeichnis
set n7=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_7
REM ********************Quelle 8********************
REM Zu sicherndes Verzeichnis 8
set q8="Pfad\Verzeichnis 8"
REM Name für das BackupVerzeichnis
set n8=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_8
REM ********************Quelle 9********************
REM Zu sicherndes Verzeichnis 9
set q9="Pfad\Verzeichnis 9"
REM Name für das BackupVerzeichnis
set n9=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_9
REM ********************Quelle 10********************
REM Zu sicherndes Verzeichnis 10
set q10="Pfad\Verzeichnis 10"
REM Name für das BackupVerzeichnis
set n10=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_10
REM ********************Kopieren der einzelnen Quellen********************
c:
Echo Die Sicherung wurde um %time% am %date% gestartet > C:\Logfiles\Protokoll.txt
REM ******************** Backup Verzeichnis 1 ********************
7za a %ZL%%ZV%%n1%.zip %q%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 1
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n1% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n1% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
REM ******************** Backup Verzeichnis 2 ********************
7za a %ZL%%ZV%%n2%.zip %q2%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 2
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n2% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n2% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
REM ******************** Backup Verzeichnis 3 ********************
7za a %ZL%%ZV%%n3%.zip %q3%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 3
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n3% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n3% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
7za a %ZL%%ZV%%n4%.zip %q4%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 4
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n4% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n4% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
REM ******************** Backup Verzeichnis 5 ********************
7za a %ZL%%ZV%%n5%.zip %q5%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 5
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n5% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n5% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
REM ******************** Backup Verzeichnis 6 ********************
7za a %ZL%%ZV%%n6%.zip %q6%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 6
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n6% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n6% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
REM ******************** Backup Verzeichnis 7 ********************
7za a %ZL%%ZV%%n7%.zip %q7%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 7
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n7% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n7% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
REM ******************** Backup Verzeichnis 8 ********************
7za a %ZL%%ZV%%n8%.zip %q8%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 8
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n8% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n8% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
REM ******************** Backup Verzeichnis 9 ********************
7za a %ZL%%ZV%%n9%.zip %q9%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 9
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n9% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n9% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
REM ******************** Backup Verzeichnis 10 ********************
7za a %ZL%%ZV%%n10%.zip %Lq10%\* -mx3
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 10
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n10% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 Echo Sicherung um %time% am %date% m i t F E H L E R abgeschlossen vom Verzeichnis %n10% >> C:\Logfiles\Protokoll.txt
if not %errorlevel%==0 set fehler=1
REM *****************Falls Netzwerklaufwerke wieder aufgehoben werden sollen****************
REM net use N: /del
echo Backup wurde durchgeführt
REM Eintrag des Abschlusses in dem Protokoll
Echo Die komplette Sicherung wurde um %time% am %date% abgeschlossen >> C:\Logfiles\Protokoll.txt
REM Umbenennen des Protokolles
rename C:\Logfiles\Protokoll.txt Protokoll%Startdatum%.txt
REM Öffnen des Protokolles bei Fehler
if not %fehler%==0 notepad.exe C:\Logfiles\Protokoll%Startdatum%.txt
echo **************************************************************
echo **************************************************************
echo ****************Backup wurde durchgefuehrt********************
echo **************************************************************
echo **************************************************************
sleep 15
[Edit Biber] Codetags ergänzt. [/Edit]