Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Automatisierte Sicherung per Robocopy - Dienst auf externe Festplatte

Mitglied: crazyhoesl

crazyhoesl (Level 1) - Jetzt verbinden

10.09.2007, aktualisiert 16.04.2008, 47166 Aufrufe, 15 Kommentare

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:

  • 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:

01.
 
02.
Started : Mon Sep 10 16:56:13 2007
03.
 
04.
   Source : \\fileserver\Backups
05.
 
06.
     Dest : \\192.168.102.240\share\
07.
 
08.
-----------------------------------------------------------------------------
09.
 
10.
                Total    Copied   Skipped  Mismatch    FAILED    Extras
11.
 
12.
     Dirs :         1         0         1         0         0         0
13.
 
14.
    Files : *.*
15.
    Files :         2         1         1         0         0         0
16.
 
17.
    Bytes :  287.56 m  280.86 m    6.70 m         0         0         0
18.
    Speed :             7674639 Bytes/sec.
19.
    Speed :             439.146 MegaBytes/min.
20.
-----------------------------------------------------------------------------
21.
 
22.
    Times :   0:00:38   0:00:38                       0:00:00   0:00:00
23.
 
24.
    Ended : Mon Sep 10 16:56:52 2007
25.
 
26.
 
27.
Anzahl der Dateien auf dem Quellsystem:
28.
 
29.
               2 Datei(en)    301.535.920 Bytes
30.
 
31.
 
32.
Anzahl der Dateien auf der Netzwerkfestplatte:
33.
 
34.
               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:



01.
 
02.
::		--------------------------- Variablen leeren ---------------------------
03.
set befehl=
04.
set body=
05.
set Quelle=
06.
set Ziel=
07.
set mailsrv=
08.
set mailaddr=
09.
set mailfrom=
10.
set errorlevel=
11.
 
12.
::		-------------------------------- Variablen setzen ---------------------------------
13.
set Quelle=\\192.168.15.240\Images\ww-file
14.
set Ziel=\\192.168.15.39\share
15.
set Zielip=192.168.15.39
16.
set mailsrv=192.168.15.2
17.
set mailaddr=max.mustermann@firma.de
18.
set mailfrom=Robocopy@firma.de
19.
 
20.
:: 		------------- eventuell alte vorhandeneDateien löschen --------------------
21.
 
22.
del temp.txt
23.
del logfile.log
24.
 
25.
::		---------------------- alle 10 Sekunden nachsehen, ob die Netzwerkfestplatte am Netz hängt -------------------------
26.
:pingstart
27.
cls
28.
sleep 10
29.
ping %Zielip% -n 1
30.
if %errorlevel% == 1 goto pingstart
31.
 
32.
::		---------------------- E-Mail versenden : Netzwerkfestplatte wurde angeschlossen -------------------------------------
33.
bmail.exe -s %mailsrv% -t %mailaddr% -f %mailfrom% -a "Netzwerkfestplatte wurde angeschlossen" -d
34.
 
35.
 
36.
::		--------------------Variablen setzen ----------------------
37.
set befehl=Spiegelung erfolgreich
38.
set body=temp.txt
39.
 
40.
 
41.
::		--------------------- Starten der Robocopy ----------------------
42.
robocopy.exe "%Quelle%" "%Ziel%" /E /PURGE /COPY:DAT /ETA /R:0 /W:0 /LOG:logfile.log
43.
 
44.
 
45.
::		------------------ Errorlevel von Robocopy überprüfen ------------------------
46.
if %errorlevel%==16 set befehl=FEHLER & set body=logfile.log
47.
if %errorlevel%==15 set befehl=FEHLER & set body=logfile.log
48.
if %errorlevel%==14 set befehl=FEHLER & set body=logfile.log
49.
if %errorlevel%==13 set befehl=FEHLER & set body=logfile.log
50.
if %errorlevel%==12 set befehl=FEHLER & set body=logfile.log
51.
if %errorlevel%==11 set befehl=FEHLER & set body=logfile.log
52.
if %errorlevel%==10 set befehl=FEHLER & set body=logfile.log
53.
if %errorlevel%==9 set befehl=FEHLER & set body=logfile.log
54.
if %errorlevel%==8 set befehl=FEHLER & set body=logfile.log
55.
if %errorlevel%==7 set befehl=FEHLER & set body=logfile.log
56.
if %errorlevel%==6 set befehl=FEHLER & set body=logfile.log
57.
if %errorlevel%==5 set befehl=FEHLER & set body=logfile.log
58.
if %errorlevel%==4 set befehl=FEHLER & set body=logfile.log
59.
if %errorlevel%==3 set befehl=FEHLER & set body=logfile.log
60.
if %errorlevel%==2 set befehl=FEHLER & set body=logfile.log
61.
 
62.
 
63.
 
64.
 
65.
 
66.
 
67.
::		------------------------ Bestimmte Zeilen auslesen -------------------------------
68.
sleep 2
69.
find /i "Started" logfile.log >> temp.txt
70.
find /i "Source" logfile.log >> temp.txt
71.
find /i "Dest" logfile.log >> temp.txt
72.
echo. >> temp.txt
73.
echo ----------------------------------------------------------------------------- >> temp.txt
74.
find /i "Skipped" logfile.log >> temp.txt
75.
find /i "Dirs" logfile.log >> temp.txt
76.
find /i "Files" logfile.log >> temp.txt
77.
find /i "Bytes" logfile.log >> temp.txt
78.
echo ----------------------------------------------------------------------------- >> temp.txt
79.
find /i "Times" logfile.log  >> temp.txt
80.
find /i "Ended" logfile.log >> temp.txt
81.
echo. >> temp.txt 
82.
echo. >> temp.txt 
83.
sleep 2
84.
 
85.
 
86.
 
87.
:: 		--------------------------------- Anzeige Anzahl der Daten  auf jedem Medium ---------------------
88.
type temp.txt | find /i /v "---------- LOGFILE.LOG" > temp2.txt
89.
del temp.txt
90.
ren temp2.txt temp.txt
91.
echo Anzahl der Dateien auf dem NAS: >> temp.txt
92.
echo. >> temp.txt
93.
dir "%Quelle%" | find /i "Datei(en)" >> temp.txt
94.
echo. >> temp.txt
95.
echo. >> temp.txt
96.
echo Anzahl der Dateien auf der Buffalo: >> temp.txt
97.
echo. >> temp.txt
98.
dir "%Ziel%" | find /i "Datei(en)" >> temp.txt
99.
 
100.
 
101.
 
102.
::		------------------ Versende Email, das Logfile ist Inhalt des Bodys -------------------
103.
sleep 2
104.
bmail.exe -s %mailsrv% -t %mailaddr% -f %mailfrom% -a "%befehl%" -m %body% -d
105.
 
106.
 
107.
 
108.
::		------------------ Löschen der Logfiles ----------------
109.
sleep 2
110.
 
111.
del temp.txt
112.
del logfile.log
113.
 
114.
::		---------------------- Nun so lange warten, bis die Netzwerkfestplatte nicht mehr im Netz hängt --------------------
115.
:pingend
116.
sleep 10
117.
ping %Zielip% -n 1
118.
if %errorlevel% == 0 goto pingend
119.
 
120.
::		--------------------- Platte ist nicht mehr im Netz, verschicke Info-Mail, gehe zum Start und warte bis Platte wieder da -----------------------------------
121.
bmail.exe -s %mailsrv% -t %mailaddr% -f %mailfrom% -a "Netzwerkfestplatte wurde entfernt" -d
122.
goto pingstart
123.
 
Ich hoffe euch nützt dieses kleine Howto etwas und kann euch den Alltag erleichern.

Euer crazyhoesl
Mitglied: TuXHunt3R
10.09.2007 um 20:56 Uhr
Kompliment, sehr gute Lösung.

Allerdings ist das Mail, dass du alle 10 Sekunden raushaust, übertrieben. Damit füllst du nur die Mailbox. Schreib das Ganze lieber in ein Logfile und schick nur ein Mail, wenn die NAS-Platte nicht erreichbar ist.

Edit: Woher hast du die RunAsSvc.exe?
Bitte warten ..
Mitglied: crazyhoesl
10.09.2007 um 21:02 Uhr
Ich weiß, das mit den E-Mails ist recht brutal, aber es war so gewünscht. Und die Mails werden ja nicht alle 10 Sekunden rausgehauen, sondern nur wenn die Festplatte erreichbar ist dann eine Mail, und wenn sie dann wieder nicht erreichbar ist auch nur eine Mail. Ich gebe aber zu das das recht sinnfrei ist.

Die RunAsSvc gibt es hier:

http://www.pirmasoft.de/runassvc.php
Bitte warten ..
Mitglied: TuXHunt3R
10.09.2007 um 21:08 Uhr
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.
Bitte warten ..
Mitglied: crazyhoesl
10.09.2007 um 21:13 Uhr
Ganz genau so läuft es. Die Mails kommen in einen Unterordner und werden automatisch als gelesen gesetzt. Ist allerdings der Betreff "Fehler" bleibt sie ungelesen.
Bitte warten ..
Mitglied: TuXHunt3R
24.09.2007 um 22:19 Uhr
Noch eine kleine Verbesserung:

01.
:: 		------------- eventuell alte vorhandeneDateien löschen --------------------
02.
 
03.
del temp.txt
04.
del logfile.log
würde ich ersetzen durch:

01.
if exist temp.txt del temp.txt
02.
if exist logfile.log del logfile.log
Sonst habe ich nichts mehr hinzuzufügen....
Bitte warten ..
Mitglied: novieadmin
10.10.2007 um 16:39 Uhr
Hallo, wie kann ich bei RunAsSrv die Batch-Datei auswählen ?
RunAsSrv bietet nur ".exe"-Dateien zur Auswahl...

Vielen Dank schonmal im Voraus für die Info...

gruss novieadmin
Bitte warten ..
Mitglied: crazyhoesl
10.10.2007 um 19:13 Uhr
du wählst als exe die C:\Windows\system32\cmd.exe
und als Parameter:

/K start C:\Robocopy.bat
Bitte warten ..
Mitglied: SilenZer
22.01.2008 um 11:12 Uhr
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?
Bitte warten ..
Mitglied: schluzenbach
29.02.2008 um 12:35 Uhr
Super Tutorial, aber...

wäre es nicht möglich, das Backup zum Beispiel mit autorun zu starten?

01.
[autorun]
02.
OPEN=sicherung.bat
dann erspart man sich doch das ganze gepinge usw.
Bitte warten ..
Mitglied: ceerotolerance
12.03.2008 um 23:54 Uhr
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!)


@echo off
set LINE=-------------------------------------------------------------------------------
title cee Backup Tool v0.4
:: immer ins batch verzeichnis wechseln!!
cd /D %~d0%~p0
color 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
Bitte warten ..
Mitglied: Aviator
15.04.2008 um 18:02 Uhr
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.
Bitte warten ..
Mitglied: TuXHunt3R
16.04.2008 um 21:50 Uhr
Dann pack die Bmail.exe doch auf den USB-Stick, dann hast du sie immer dabei. Musst halt den Pfad im Script anpassen.

Grundsätzlich kann man nicht einfach so aus Outlook Express raus ein Mail schicken.
Bitte warten ..
Mitglied: Jerry95
01.04.2010 um 15:56 Uhr
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:

01.
cd c:\
02.
@echo off
03.
 
04.
echo Back Up wird jetzt erstellt
05.
echo Bitte Fenster offen lassen!
06.
setlocal
07.
 
08.
REM Datum des Sicherung in Variable sichern *****(XP)*****
09.
set Startdatum=%date%
10.
 
11.
REM Datum des Sicherung in Variable sichern *****(2000)*****
12.
REM set Startdatum=%date:~3,10%
13.
 
14.
REM set umben=0
15.
 
16.
 
17.
REM **************Falls Netzwerklaufwerke genutzt werden sollen*****************************
18.
REM net use N: \\192.168.8.52\Freigabe passwort /User:Username
19.
 
20.
REM **************Ordner Pfad zu den Sicherungen (gleiche wie Ziel (ZL))*********************
21.
set "Basis=E:\Sicherung"
22.
 
23.
REM **************Name der einzelnen Versionen der Sicherung*********************************
24.
set "Ordner=Sicherung_vom_??.??.????"
25.
 
26.
REM **************Anzahl der Versionen Zahl = Zahl+1 (4= 5 Versionen)************************
27.
set Anzahl=4
28.
REM Überprüfen der Anzahl von Versionen
29.
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /ad /o-n "%Basis%\%Ordner%"') do set umben=%%i
30.
if not %umben% equ 0 ren "%Basis%\%umben%" Sicherung_vom_%Startdatum%
31.
 
32.
REM ********************Ziel********************
33.
REM Laufwerksbuchstabe für Backupmedium
34.
set ZL=E:\Sicherung
35.
REM Verzeichnis für dieses Backup
36.
set ZV=\Sicherung_vom_%Startdatum%\
37.
 
38.
REM ********************Quelle 1********************
39.
REM Zu sicherndes Verzeichnis 1
40.
set q1="Pfad\Verzeichnis 1"
41.
REM Name für das BackupVerzeichnis
42.
set n1=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_1
43.
 
44.
REM ********************Quelle 2********************
45.
REM Zu sicherndes Verzeichnis 2
46.
set q2="Pfad\Verzeichnis 2"
47.
REM Name für das BackupVerzeichnis
48.
set n2=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_2
49.
 
50.
REM ********************Quelle 3********************
51.
REM Zu sicherndes Verzeichnis 3
52.
set q3="Pfad\Verzeichnis 3"
53.
REM Name für das BackupVerzeichnis
54.
set n3=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_3
55.
 
56.
REM ********************Quelle 4********************
57.
REM Zu sicherndes Verzeichnis 4
58.
set q="Pfad\Verzeichnis 4"
59.
REM Name für das BackupVerzeichnis
60.
set n4=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_4
61.
 
62.
REM ********************Quelle 5********************
63.
REM Zu sicherndes Verzeichnis 5
64.
set q5="Pfad\Verzeichnis 5"
65.
REM Name für das BackupVerzeichnis
66.
set n5=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_5
67.
 
68.
REM ********************Quelle 6********************
69.
REM Zu sicherndes Verzeichnis 6
70.
set q6="Pfad\Verzeichnis 6"
71.
REM Name für das BackupVerzeichnis
72.
set n6=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_6
73.
 
74.
REM ********************Quelle 7********************
75.
REM Zu sicherndes Verzeichnis 7
76.
set q7="Pfad\Verzeichnis 7"
77.
REM Name für das BackupVerzeichnis
78.
set n7=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_7
79.
 
80.
REM ********************Quelle 8********************
81.
REM Zu sicherndes Verzeichnis 8
82.
set q8="Pfad\Verzeichnis 8"
83.
REM Name für das BackupVerzeichnis
84.
set n8=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_8
85.
 
86.
REM ********************Quelle 9********************
87.
REM Zu sicherndes Verzeichnis 9
88.
set q9="Pfad\Verzeichnis 9"
89.
REM Name für das BackupVerzeichnis
90.
set n9=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_9
91.
 
92.
REM ********************Quelle 10********************
93.
REM Zu sicherndes Verzeichnis 10
94.
set q10="Pfad\Verzeichnis 10"
95.
REM Name für das BackupVerzeichnis
96.
set n10=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_10
97.
 
98.
REM ********************Kopieren der einzelnen Quellen********************
99.
c:
100.
Echo Die Sicherung wurde um %time% am %date% gestartet > C:\Logfiles\Protokoll.txt
101.
REM Backup Verzeichnis 1
102.
robocopy %q1% %ZL%%ZV%%n1% /MIR /LOG:C:\Logfiles\Verzeichnis_%n1%.log /NP /TEE
103.
REM Backup Verzeichnis 2
104.
robocopy %q2% %ZL%%ZV%%n2% /MIR /LOG:C:\Logfiles\Verzeichnis_%n2%.log /NP /TEE
105.
REM Backup Verzeichnis 3
106.
robocopy %q3% %ZL%%ZV%%n3% /MIR /LOG:C:\Logfiles\Verzeichnis_%n3%.log /NP /TEE
107.
REM Backup Verzeichnis 4
108.
robocopy %q4% %ZL%%ZV%%n4% /MIR /LOG:C:\Logfiles\Verzeichnis_%n4%.log /NP /TEE
109.
REM Backup Verzeichnis 5
110.
robocopy %q5% %ZL%%ZV%%n5% /MIR /LOG:C:\Logfiles\Verzeichnis_%n5%.log /NP /TEE
111.
REM Backup Verzeichnis 6
112.
robocopy %q6% %ZL%%ZV%%n6% /MIR /LOG:C:\Logfiles\Verzeichnis_%n6%.log /NP /TEE
113.
REM Backup Verzeichnis 7
114.
robocopy %q7% %ZL%%ZV%%n7% /MIR /LOG:C:\Logfiles\Verzeichnis_%n7%.log /NP /TEE
115.
REM Backup Verzeichnis 8
116.
robocopy %q8% %ZL%%ZV%%n8% /MIR /LOG:C:\Logfiles\Verzeichnis_%n8%.log /NP /TEE
117.
REM Backup Verzeichnis 9
118.
robocopy %q9% %ZL%%ZV%%n9% /MIR /LOG:C:\Logfiles\Verzeichnis_%n9%.log /NP /TEE
119.
REM Backup Verzeichnis 10
120.
robocopy %q10% %ZL%%ZV%%n10% /MIR /LOG:C:\Logfiles\Verzeichnis_%n10%.log /NP /TEE
121.
 
122.
REM *****************Falls Netzwerklaufwerke wieder aufgehoben werden sollen****************
123.
REM net use N: /del
124.
 
125.
echo **************************************************************
126.
echo **************************************************************
127.
echo ****************Backup wurde durchgefuehrt********************
128.
echo **************************************************************
129.
echo **************************************************************
130.
sleep 15
Vielleicht hilfts Jemanden

[Edit Biber] Codetags ergänzt. [/Edit]
Bitte warten ..
Mitglied: Jerry95
01.04.2010 um 16:01 Uhr
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:

01.
@echo off
02.
echo Back Up wird jetzt erstellt
03.
echo Bitte Fenster offen lassen!
04.
 
05.
setlocal
06.
 
07.
REM Verschiedene Variablen zurücksetzen
08.
set fehler=0
09.
 
10.
REM Datum des Sicherung in Variable sichern *****(XP)*****
11.
set Startdatum=%date%
12.
 
13.
REM Datum des Sicherung in Variable sichern *****(2000)*****
14.
REM set Startdatum=%date:~3,10%
15.
 
16.
REM net use N: \\192.168.8.52\Freigabe passwort /User:Username
17.
 
18.
REM **************Ordner Pfad zu den Sicherungen (gleiche wie Ziel (ZL))*********************
19.
set "Basis=E:\Sicherung"
20.
 
21.
REM **************Name der einzelnen Versionen der Sicherung*********************************
22.
set "Ordner=Sicherung_vom_??.??.????"
23.
 
24.
REM **************Anzahl der Versionen Zahl = Zahl+1 (4= 5 Versionen)************************
25.
set Anzahl=4
26.
 
27.
REM Überprüfen der Anzahl von Versionen
28.
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /ad /o-n "%Basis%\%Ordner%"') do rmdir /q /s "%Basis%\%%i"
29.
 
30.
REM ********************Ziel********************
31.
REM Laufwerksbuchstabe für Backupmedium
32.
set ZL=E:\Sicherung
33.
REM Verzeichnis für dieses Backup
34.
set ZV=\Sicherung_vom_%Startdatum%\
35.
 
36.
REM ********************Quelle 1********************
37.
REM Zu sicherndes Verzeichnis 1
38.
set q1="Pfad\Verzeichnis 1"
39.
REM Name für das BackupVerzeichnis
40.
set n1=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_1
41.
 
42.
REM ********************Quelle 2********************
43.
REM Zu sicherndes Verzeichnis 2
44.
set q2="Pfad\Verzeichnis 2"
45.
REM Name für das BackupVerzeichnis
46.
set n2=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_2
47.
 
48.
REM ********************Quelle 3********************
49.
REM Zu sicherndes Verzeichnis 3
50.
set q3="Pfad\Verzeichnis 3"
51.
REM Name für das BackupVerzeichnis
52.
set n3=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_3
53.
 
54.
REM ********************Quelle 4********************
55.
REM Zu sicherndes Verzeichnis 4
56.
set q="Pfad\Verzeichnis 4"
57.
REM Name für das BackupVerzeichnis
58.
set n4=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_4
59.
 
60.
REM ********************Quelle 5********************
61.
REM Zu sicherndes Verzeichnis 5
62.
set q5="Pfad\Verzeichnis 5"
63.
REM Name für das BackupVerzeichnis
64.
set n5=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_5
65.
 
66.
REM ********************Quelle 6********************
67.
REM Zu sicherndes Verzeichnis 6
68.
set q6="Pfad\Verzeichnis 6"
69.
REM Name für das BackupVerzeichnis
70.
set n6=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_6
71.
 
72.
REM ********************Quelle 7********************
73.
REM Zu sicherndes Verzeichnis 7
74.
set q7="Pfad\Verzeichnis 7"
75.
REM Name für das BackupVerzeichnis
76.
set n7=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_7
77.
 
78.
REM ********************Quelle 8********************
79.
REM Zu sicherndes Verzeichnis 8
80.
set q8="Pfad\Verzeichnis 8"
81.
REM Name für das BackupVerzeichnis
82.
set n8=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_8
83.
 
84.
REM ********************Quelle 9********************
85.
REM Zu sicherndes Verzeichnis 9
86.
set q9="Pfad\Verzeichnis 9"
87.
REM Name für das BackupVerzeichnis
88.
set n9=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_9
89.
 
90.
REM ********************Quelle 10********************
91.
REM Zu sicherndes Verzeichnis 10
92.
set q10="Pfad\Verzeichnis 10"
93.
REM Name für das BackupVerzeichnis
94.
set n10=Name dieser Sicherung ohne Leerstellen z.B. Ordnername, in diesem Falle Verzeichnis_10
95.
 
96.
REM ********************Kopieren der einzelnen Quellen********************
97.
c:
98.
Echo Die Sicherung wurde um %time% am %date% gestartet > C:\Logfiles\Protokoll.txt
99.
 
100.
REM ******************** Backup Verzeichnis 1 ********************
101.
7za a %ZL%%ZV%%n1%.zip %q%\* -mx3
102.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 1
103.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n1% >> C:\Logfiles\Protokoll.txt
104.
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
105.
if not %errorlevel%==0 set fehler=1
106.
 
107.
REM ******************** Backup Verzeichnis 2 ********************
108.
7za a %ZL%%ZV%%n2%.zip %q2%\* -mx3
109.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 2
110.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n2% >> C:\Logfiles\Protokoll.txt
111.
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
112.
if not %errorlevel%==0 set fehler=1
113.
 
114.
REM ******************** Backup Verzeichnis 3 ********************
115.
7za a %ZL%%ZV%%n3%.zip %q3%\* -mx3
116.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 3
117.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n3% >> C:\Logfiles\Protokoll.txt
118.
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
119.
if not %errorlevel%==0 set fehler=1
120.
 
121.
7za a %ZL%%ZV%%n4%.zip %q4%\* -mx3
122.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 4
123.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n4% >> C:\Logfiles\Protokoll.txt
124.
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
125.
if not %errorlevel%==0 set fehler=1
126.
 
127.
REM ******************** Backup Verzeichnis 5 ********************
128.
7za a %ZL%%ZV%%n5%.zip %q5%\* -mx3
129.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 5
130.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n5% >> C:\Logfiles\Protokoll.txt
131.
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
132.
if not %errorlevel%==0 set fehler=1
133.
 
134.
REM ******************** Backup Verzeichnis 6 ********************
135.
7za a %ZL%%ZV%%n6%.zip %q6%\* -mx3
136.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 6
137.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n6% >> C:\Logfiles\Protokoll.txt
138.
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
139.
if not %errorlevel%==0 set fehler=1
140.
 
141.
REM ******************** Backup Verzeichnis 7 ********************
142.
7za a %ZL%%ZV%%n7%.zip %q7%\* -mx3
143.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 7
144.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n7% >> C:\Logfiles\Protokoll.txt
145.
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
146.
if not %errorlevel%==0 set fehler=1
147.
 
148.
REM ******************** Backup Verzeichnis 8 ********************
149.
7za a %ZL%%ZV%%n8%.zip %q8%\* -mx3
150.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 8
151.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n8% >> C:\Logfiles\Protokoll.txt
152.
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
153.
if not %errorlevel%==0 set fehler=1
154.
 
155.
REM ******************** Backup Verzeichnis 9 ********************
156.
7za a %ZL%%ZV%%n9%.zip %q9%\* -mx3
157.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 9
158.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n9% >> C:\Logfiles\Protokoll.txt
159.
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
160.
if not %errorlevel%==0 set fehler=1
161.
 
162.
REM ******************** Backup Verzeichnis 10 ********************
163.
7za a %ZL%%ZV%%n10%.zip %Lq10%\* -mx3
164.
REM Fehlerabfrage und Protokollerstellung von Verzeichnis 10
165.
if %errorlevel%==0 Echo Sicherung um %time% am %date% ohne Fehler abgeschlossen vom Verzeichnis %n10% >> C:\Logfiles\Protokoll.txt
166.
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
167.
if not %errorlevel%==0 set fehler=1
168.
 
169.
REM *****************Falls Netzwerklaufwerke wieder aufgehoben werden sollen****************
170.
REM net use N: /del
171.
 
172.
echo Backup wurde durchgeführt
173.
 
174.
REM Eintrag des Abschlusses in dem Protokoll
175.
Echo Die komplette Sicherung wurde um %time% am %date% abgeschlossen >> C:\Logfiles\Protokoll.txt
176.
 
177.
REM Umbenennen des Protokolles
178.
rename C:\Logfiles\Protokoll.txt Protokoll%Startdatum%.txt
179.
 
180.
REM Öffnen des Protokolles bei Fehler
181.
if not %fehler%==0 notepad.exe C:\Logfiles\Protokoll%Startdatum%.txt
182.
 
183.
echo **************************************************************
184.
echo **************************************************************
185.
echo ****************Backup wurde durchgefuehrt********************
186.
echo **************************************************************
187.
echo **************************************************************
188.
sleep 15

[Edit Biber] Codetags ergänzt. [/Edit]
Bitte warten ..
Mitglied: bazZ
04.05.2011 um 09:26 Uhr
Hallo Liebe Leute,

echt klasse die Backup Lösung.
Allerdings hätte ich noch ein zwei Fragen die aber den Rahmen des Forums sprengen würden.
Könnte mir da jemand mal helfen per PN oder Instant Messenger?

Gruss
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Robocopy Backup Script
Tipp von kunert0345Batch & Shell9 Kommentare

Backupscript zum Erstellen monatlicher Backups und zur täglichen Aktualisierung der monatlichen Backups:

Batch & Shell

Robocopy mit Powershell und Fortschrittsanzeige

Anleitung von SamTrexBatch & Shell2 Kommentare

Die Aufgabe Ich sichere von Zeit zu Zeit verschiedene Verzeichnisse von unserem Familien-Server auf mehrere externe Festplatten weg. In ...

Windows 10

Netzwerkweit auf Win10 Pro per ISO-Datei updaten - automatisiert und ohne Internet

Tipp von DerWoWussteWindows 1038 Kommentare

Moin. Die Sache ist erfreulich einfach. Man nehme ein aktiviertes Win8.1 oder Win7. Dann beschaffe man sich eine Win10 ...

Neue Wissensbeiträge
iOS
WatchChat für Whatsapp
Tipp von Criemo vor 13 StundeniOS

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 1 TagiOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 3 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 3 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Heiß diskutierte Inhalte
Exchange Server
Exchange Server 2010: Keine Eingehenden E-MAils
gelöst Frage von gabeBUExchange Server17 Kommentare

Hallo Zusammen Ich habe das kurzen auf dem Exchange 2010 Server das Problem, dass ich keine externen E-Mails mehr ...

Server
Server in zwei verschiedene Netzwerke einbinden
gelöst Frage von BennyFServer13 Kommentare

Hallo zusammen, bei uns im Haus sind im Erdgeschoss die Geschäftsräume und ab dem 1. Stock sind unsere privaten ...

Windows Netzwerk
Kerio. Kann keine Mails empfangen aber senden. Wer ist schuld. Kerio oder Windows domäne?
Frage von frosch2Windows Netzwerk13 Kommentare

Hallo, es existiert ein Problem bei uns mit dem mailen. Alle bestehenden Nutzer können mailen. Raus wie rein. Neuen ...

Netzwerkmanagement
Ticketsystem für eine Kommune gesucht
gelöst Frage von akovisNetzwerkmanagement11 Kommentare

Ich suche aktuell ein Ticketsystem für eine Kleinstadt von 13000 Einwaohnern. Das System soll alle Anfragen aus verschiedenen Kanälen ...