Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

Automatisierte Sicherung per Robocopy - Dienst auf externe Festplatte

Mitglied: crazyhoesl
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:




*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

Content-Key: 68339

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

Ausgedruckt am: 30.11.2021 um 07:11 Uhr

Mitglied: TuXHunt3R
TuXHunt3R 10.09.2007 um 20:56:47 Uhr
Goto Top
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?
Mitglied: crazyhoesl
crazyhoesl 10.09.2007 um 21:02:29 Uhr
Goto Top
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
Mitglied: TuXHunt3R
TuXHunt3R 10.09.2007 um 21:08:30 Uhr
Goto Top
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.
Mitglied: crazyhoesl
crazyhoesl 10.09.2007 um 21:13:58 Uhr
Goto Top
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.
Mitglied: TuXHunt3R
TuXHunt3R 24.09.2007 um 22:19:31 Uhr
Goto Top
Noch eine kleine Verbesserung:


würde ich ersetzen durch:


Sonst habe ich nichts mehr hinzuzufügen....
Mitglied: novieadmin
novieadmin 10.10.2007 um 16:39:28 Uhr
Goto Top
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
Mitglied: crazyhoesl
crazyhoesl 10.10.2007 um 19:13:22 Uhr
Goto Top
du wählst als exe die C:\Windows\system32\cmd.exe
und als Parameter:

/K start C:\Robocopy.bat
Mitglied: SilenZer
SilenZer 22.01.2008 um 11:12:14 Uhr
Goto Top
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:

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?
Mitglied: schluzenbach
schluzenbach 29.02.2008 um 12:35:25 Uhr
Goto Top
Super Tutorial, aber...

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


dann erspart man sich doch das ganze gepinge usw.
Mitglied: ceerotolerance
ceerotolerance 12.03.2008 um 23:54:24 Uhr
Goto Top
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!)


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
Mitglied: Aviator
Aviator 15.04.2008 um 18:02:03 Uhr
Goto Top
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.
Mitglied: TuXHunt3R
TuXHunt3R 16.04.2008 um 21:50:06 Uhr
Goto Top
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.
Mitglied: Jerry95
Jerry95 01.04.2010 um 15:56:12 Uhr
Goto Top
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]
Mitglied: Jerry95
Jerry95 01.04.2010 um 16:01:34 Uhr
Goto Top
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]
Mitglied: bazZ
bazZ 04.05.2011 um 09:26:40 Uhr
Goto Top
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
Heiß diskutierte Beiträge
question
Adminpasswort löschenaleks08Vor 1 TagFrageWindows 79 Kommentare

Bei einem Kollegen hat jemand den Rechner eingerichtet und dabei ein Adminpasswort vergeben. Das Adminpasswort kennt er aber nicht und der Einrichter ist nicht mehr ...

question
Medienwandler für Glasfaser gelöst Reamer76Vor 1 TagFrageHardware9 Kommentare

Guten Tag liebe Admins, ich bräuchte mal Eure Hilfe für die Anschaffung eines Medienwandlers. Wir werden nächsten Monat freigeschaltet, Anbieter ist Wemacom. Ich habe die ...

question
Ethernet-LAN und DSL über Telefonkabel gelöst 150103Vor 1 TagFrageNetzwerke10 Kommentare

Hallo Administrator-Forum, ich habe hier ein ungewöhnliches Szenario, dass ich euch gerne näher bringen würde. Auf einem Grundstück gibt 2 Häuser (H1 und H2). Im ...

question
AD Server von 2012 R2 auf Server 2019 R2 hochgesetzt. Domänenlevel noch 2012 Aber nun geht kein LDAPS . LDAP geht gelöst itititVor 21 StundenFrageWindows Server13 Kommentare

Hallo zusammen, wir haben die Server 2012 R2 mit Server 2019 R2 ersetzt. Neue Server kein Inplace. Die neuen DCs haben IP und Name gleich ...

question
"Nicht identifiziertes Netzwerk" bei VPN VerbindungKatachi29Vor 1 TagFrageDSL, VDSL5 Kommentare

Hallo zusammen, ich habe seit einiger Zeit das Problem, dass, wenn ich mich daheim bei meinem Sophos SSL VPN Client anmelde, immer die Meldung: "Nicht ...

question
Euro Zeichen geht nicht mehrGwaihirVor 18 StundenFrageWindows 1013 Kommentare

Hallo zusammen, bei einem User geht das Euro-Zeichen nicht mehr. Er kann es nur noch über Copy&Paste aus der Zeichentabelle einfügen. Auch STRG+ALT+E klappt nicht. ...

question
Dauernd gesperrter User in der ADChristianIT2021Vor 1 TagFrageWindows Server3 Kommentare

Hallo zusammen, Ich habe ein riesen Problem ich habe einen User der wird immer wieder gesperrt. Über die Eventlgs habe ich schon herausgefunden aus welcher ...

question
Bitlockerpartition versehentlich gelöscht Läppi findet nach Partitiosformatierung mbr gpt die Partition nicht wiederPCChaosVor 16 StundenFrageWindows 1010 Kommentare

Hallo zusammen, Ich habe ein riesen Problem, das mir sonst einfach erschien. Ich hatte eine Bitlocker Partition D: auf meinem C: Laufwerk installiert. Weil Windows ...