Nickname
Passwort | vergessen?

237 anonyme User

1 angemeldetes Mitglied


pieh-ejdsch
68315 Mitglieder freuen sich auf Dich!
Top-Aktivitäten
Sehen Sie hier, wer zu den aktivsten Mitgliedern der letzten Woche zählt:
Sponsored Links
In den Bereich Backup wechseln ..

Automatisierte Sicherung per Robocopy - Dienst auf externe Festplatte

Mitglied: crazyhoesl
Geschrieben von crazyhoesl (Level 1 - Frischling)
Erstellt am 10.09.2007, um 19:25:54 Uhr, Permanent-ID: 68339
Dieser Beitrag wurde bisher 29388 mal aufgerufen und gilt als gelöst.
Melden Sie sich mit Ihrem Nicknamen an, um diesen Beitrag zu bewerten!
Neutral0 NeutralDruckenBeobachten
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
Kommentar schreibenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
Diskussionsverlauf (14 Kommentare)