Mittwoch, 27. April 2011

Robocopy und Blanks in Ordnernamen

Das Tool "ROBOCOPY" eignet sich toll, um z.B. ganze Ordnerstrukturen auf externe Datenträger zu spiegeln. Bei erneuten Durchgängen werden nur immer die neue Dateien kopiert. Immer wieder stolpere ich und andere über Probleme, wenn die zu kopierenden Ordner Leerzeichen enthalten.

Hier ein funktionierendes Beispiel:

set source="C:\Program Files (x86)\CAMSTUDIO" 
set dest="E:\BACKUP\Program Files (x86)\CAMSTUDIO" 
robocopy %source% %dest% /E /W:1 /R:1 /PURGE /SEC


Durch die Verwendung von Variablen wird das ganze übersichlicher. 
Das Zielverzeichnis muss nicht existieren.
Wichtig: Am Ende von Quell und Zielordner darf kein Backslash stehen, sonst schlägt der ROBOCOPY -Befehl schief.

Wie überwacht man das ganze nun einigermassen geschickt? Man könnte ROBOCOPY ein Log-File schreiben lassen und dieses dann auswerten. Aber wer macht das schon?

Eine einfache, wenn auch primitive Kontrolle bietet der DU-Befehl, der aus der Linux-/Unix-Welt bekannt ist. Ich verwende die Variante von Sysinternals: http://technet.microsoft.com/de-de/sysinternals/bb896651

So abgeändert würde das Sript so aussehen:

set log="c:\windows\bat\BACKUPLOG.BDS"
del %log%

REM DIESEN TEIL FÜR JEDEN ZU SICHERNDEN ORDNER WIEDERHOLEN
REM ******************************************************
set source="N:\FERIEN\USA" 
set dest="W:\FERIEN\USA" 
robocopy %source% %dest% /E /W:1 /R:1 /PURGE /SEC
echo BACKUP von %source% auf %dest% >> %log%
echo -------------------------------------------------------------->> %log%
echo * Quelle: %source% >> %log%
du -q %source% >> %log%
echo * Ziel: %dest% >> %log%
du -q %dest% >> %log%
REM ******************************************************
REM STOP WIEDERHOLUNG


ncftpput -u <FTPUSER> -p <FTPPASSWORT> <FTPSERVER>.  . %log%

Die Log-Datei sieht dann z.B. so aus:

BACKUP von "N:\FERIEN\USA"   auf "W:\FERIEN\USA"  
--------------------------------------------------------------
* Quelle: "N:\FERIEN\USA"  
Files:        53
Directories:  6
Size:         61'867'484 bytes
Size on disk: 61'867'484 bytes

* Ziel: "W:\FERIEN\USA"  
Files:        53
Directories:  6
Size:         61'867'484 bytes
Size on disk: 61'867'484 bytes


Das ganze könnte man jetzt z.B. parsen und gg. einen Alarm ausgeben. Will man mehrere Ordner sichern, wiederholt man einfach den entsprechend markierten Absatz. Will man mehrere Generationen sichern, macht man einfach mehrere Skripte, die man z.B. jede 1., 2. ... Woche aufruft.

Will man nun als Admin sich die Logdatei auch noch zusenden lassen, so kann man dies mit ncftpput ( http://www.ncftp.com/download/ ) machen.

Die Syntax hierfür ist
ncftpput -u <FTPUSER> -p <FTPPASSWORT> <FTPSERVER>. <HOCHZULADENDE DATEI>

Als <HOCHZULADENDE DATEI> sind auch Wildcards erlaubt.

Keine Kommentare:

Kommentar veröffentlichen