backup script mit robocopy - verbersserungsvorschläge bzw. tipps
Hallo Community.
Bin neu hier und stell mich erstmal vor:
Alex H. , 25, Hobby-Entwickler, zurzeit für nen kleinen OnlineShop tätig.
Also ich habe die Aufgabe ein Backup Script zu schreiben. Daten von einem Samba-Linux Server sollen gesichert werden.
Anforderungen:
- Daten von Linuxserver sollen auf USB-Platte gesichert werden
- möglichst vollautomatisch zu definierten Zeiten
Da ich freie Hand bei der Umsetzung habe habe ich folgende Option gewählt:
- ich nutze Windows (robocopy)! Kenne mich mit Linux nur beschränkt aus...
- ich werde die Datensicherung von einem Windows Client starten lassen der Zugriffsrechte auf den Linux-Server hat
- die USB-Platte wird bei meiner Lösung an den Windows Client und nicht den Linux-Server angschlossen.
- das ganze wird als geplanter Task ausgeführt
So nun habe ich nach einiger Recherche ein lauffähiges Script zusammengeschustert, was eigentlich von jeder Quelle zu jedem Ziel "sichert".
Die Quell und Zielangabe erfolgt per config.ini Datei. Die wichtigsten Fehler habe ich selbst definiert und lasse alle aktionen des Scripts in eine *.csv LOG-Datei speichern, so formatiert das man sie in Excel öffnen kann. Das Script kompiliere ich mit Shareware zu ner *.exe.
QuellCode:
Es läuft zwar und macht was ich will aber es ist ein Wirrwar aus VB-Script und Shell Programm... wäre nett wenn mir da jemand ein paar Hinweise geben könnte. Was ist zu verbessern, was ok?
Und noch eine vielleicht unverschämte Frage: Was kann für sowas verlangen? Bin neu im Geschäft und auf Erfahrungssuche... ;)
mfg.daarther
Bin neu hier und stell mich erstmal vor:
Alex H. , 25, Hobby-Entwickler, zurzeit für nen kleinen OnlineShop tätig.
Also ich habe die Aufgabe ein Backup Script zu schreiben. Daten von einem Samba-Linux Server sollen gesichert werden.
Anforderungen:
- Daten von Linuxserver sollen auf USB-Platte gesichert werden
- möglichst vollautomatisch zu definierten Zeiten
Da ich freie Hand bei der Umsetzung habe habe ich folgende Option gewählt:
- ich nutze Windows (robocopy)! Kenne mich mit Linux nur beschränkt aus...
- ich werde die Datensicherung von einem Windows Client starten lassen der Zugriffsrechte auf den Linux-Server hat
- die USB-Platte wird bei meiner Lösung an den Windows Client und nicht den Linux-Server angschlossen.
- das ganze wird als geplanter Task ausgeführt
So nun habe ich nach einiger Recherche ein lauffähiges Script zusammengeschustert, was eigentlich von jeder Quelle zu jedem Ziel "sichert".
Die Quell und Zielangabe erfolgt per config.ini Datei. Die wichtigsten Fehler habe ich selbst definiert und lasse alle aktionen des Scripts in eine *.csv LOG-Datei speichern, so formatiert das man sie in Excel öffnen kann. Das Script kompiliere ich mit Shareware zu ner *.exe.
QuellCode:
@echo off
echo ---------------------------
echo BackupScript OnlineShop
echo by Alexander H. 2008
echo with Robocopy ;)
echo ---------------------------
set Datum=%date%;%time:~0,2%.%time:~3,2%.%time:~6,2%
for /f "delims== tokens=1,2" %%i in ('findstr "Quelle" config.ini') do @set Quelle=%%j
for /f "delims== tokens=1,2" %%i in ('findstr "Ziel" config.ini') do @set Ziel=%%j
set "ZielOrdner=%Ziel%%date:~-10,2%_%date:~-7,2%_%date:~-4%_BackupW24"
if not exist %Ziel% if not exist %Quelle% goto :Fehler1
if not exist %Ziel% if exist %Quelle% goto :Fehler2
if not exist %Quelle% if exist %Ziel% goto :Fehler3
if exist %Ziel% if exist %Quelle% goto :CreateAdminLog
:CreateAdminLog
if exist Adminlog.csv goto :Spaceman
if not exist Adminlog.csv echo Datum ;Uhrzeit ;Quelle ;Ziel ;Meldung1 ;Meldung2 ;Tipp ;Groesse Quelle (MB) ;Groesse Ziel (MB) (vor Backup) %*>> Adminlog.csv
goto :Spaceman
:Spaceman
FOR /F "tokens=3 delims= " %%i in ('dir %Ziel% /-c') do set frei=%%i
set /a ZielMBfrei=%frei:~,-3%/1024
set "FS=GetFolderSize.vbs
echo WScript.Echo Int(CreateObject("Scripting.FileSystemObject").GetFolder(WScript.Arguments(0)).Size/1024/1024+.99)>%FS%
for /f %%i in ('cscript //nologo %FS% "%Quelle%"') do set QuelleMB=%%i
if %ZielMBfrei% GEQ %QuelleMB% goto :Robocopy
if %ZielMBfrei% LSS %QuelleMB% goto :Fehler4
:Robocopy
robocopy %Quelle% %ZielOrdner% /MIR /LOG+:Copylog.txt /TEE
goto :Erfolg
set Meldung1=Backup nicht erfolgreich.
:Fehler1
echo %Datum% ;%Quelle% ;%Ziel% ;%Meldung1% ;Fehler 1: Quelle und Ziel nicht erreicht. ;Netzlaufwerk und Freigabe prüfen (auf Server angemeldet?), USB-Platte anschließen ; ; %*>> Adminlog.csv
goto :Ende_F
:Fehler2
echo %Datum% ;%Quelle% ;%Ziel% ;%Meldung1% ;Fehler 2: Ziel-HD nicht erreicht. ;Ziel-HD und Verbindung pruefen ; ; %*>> Adminlog.csv
goto :Ende_F
:Fehler3
echo %Datum% ;%Quelle% ;%Ziel% ;%Meldung1% ;Fehler 3: Quell-HD nicht erreicht. ;Netzlaufwerk und Freigabe prüfen (auf Server angemeldet?,LAN-Kabel defekt?) ; ; %*>> Adminlog.csv
goto :Ende_F
:Fehler4
echo %Datum% ;%Quelle% ;%Ziel% ;%Meldung1% ;Fehler 4: Zuwenig Speicherplatz auf Zieldatenträger. ;Platz schaffen (siehe naechste Spalte) ;%QuelleMB%MB-min benoetigt ;%ZielMBfrei%MB-real vorhanden%*>> Adminlog.csv
goto :Ende_F
:Erfolg
set /a StillFree=%ZielMBfrei%-%QuelleMB%
echo %Datum% ;%Quelle% ;%Ziel% ;Backup erfolgreich ;%QuelleMB%MB von %Quelle% nach %ZielOrdner% kopiert ;Freier Speicher auf %Ziel% nach Backup: %StillFree%MB ;%QuelleMB%MB-min benoetigt ;%ZielMBfrei%MB-real(vor Backup) %*>> Adminlog.csv
goto Ende_E
:Ende_E
cls
echo Backup erfolgreich ausgefuehrt am %date% um %time:~0,2%.%time:~3,2%.%time:~6,2%
echo Es wurden %QuelleMB%MB von %Quelle% nach %ZielOrdner% uebertragen. (Infos siehe AdminLog.csv)
echo Freier Speicher auf %Ziel% nach Backup: %StillFree%MB
echo (email@web.de)
pause
goto :TheEnd
:Ende_F
echo Backup abgebrochen am %date% um %time:~0,2%.%time:~3,2%.%time:~6,2%
echo Backup nicht erfolgreich - ein Fehler ist aufgetreten.(Infos siehe AdminLog.csv)
echo (email@web.de)
pause
goto :TheEnd
:TheEnd
if exist GetFolderSize.vbs del GetFolderSize.vbs
Es läuft zwar und macht was ich will aber es ist ein Wirrwar aus VB-Script und Shell Programm... wäre nett wenn mir da jemand ein paar Hinweise geben könnte. Was ist zu verbessern, was ok?
Und noch eine vielleicht unverschämte Frage: Was kann für sowas verlangen? Bin neu im Geschäft und auf Erfahrungssuche... ;)
mfg.daarther
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93190
Url: https://administrator.de/forum/backup-script-mit-robocopy-verbersserungsvorschlaege-bzw-tipps-93190.html
Ausgedruckt am: 02.06.2025 um 19:06 Uhr
2 Kommentare
Neuester Kommentar

wiso machst du es nicht ganz in VB?
Oder hast du nur Grundkenntnisse?, denn so finde ich es wirklich etwas "unaufgeräumt", das ist aber nur der optische Faktor, wenn es funktioniert, dann gehts klar. Man muss sich nur zurechtfinden (auch anderen, falls du deine Arbeit mal abgibst)
Naja, wenn du große Datenmengen sicher musst, stellt deine Lösung natürlich nen Engpass dar, weil zuerst alles von der Linux-Platte durchs Netzwerk auf den XP-PC muss, und der muss es dann auf seine USB-HDD schreiben... Aber ohne Linux-Kenntnisse (also für Skripte und so) wird sich das nicht ändern lassen.
Wiso mit Shareware kompilieren? Wiso überhaupst kompilieren?
Also ich (als VB.NET'ler) hät da ne schöne Konsolen-Anwendung gemacht, weil man die Übersichtlichkeit und Verstädnlichkeit um mehrere 1000% steigern kann (sofern man die Sprache kann
)
Hast schon mal nach Backup und Linux gegoogelt?
Das springt mir dabei ins Auge:
http://www.tecchannel.de/storage/backup/402533/index6.html
mfg
Kriechi
Oder hast du nur Grundkenntnisse?, denn so finde ich es wirklich etwas "unaufgeräumt", das ist aber nur der optische Faktor, wenn es funktioniert, dann gehts klar. Man muss sich nur zurechtfinden (auch anderen, falls du deine Arbeit mal abgibst)
Naja, wenn du große Datenmengen sicher musst, stellt deine Lösung natürlich nen Engpass dar, weil zuerst alles von der Linux-Platte durchs Netzwerk auf den XP-PC muss, und der muss es dann auf seine USB-HDD schreiben... Aber ohne Linux-Kenntnisse (also für Skripte und so) wird sich das nicht ändern lassen.
Wiso mit Shareware kompilieren? Wiso überhaupst kompilieren?
Also ich (als VB.NET'ler) hät da ne schöne Konsolen-Anwendung gemacht, weil man die Übersichtlichkeit und Verstädnlichkeit um mehrere 1000% steigern kann (sofern man die Sprache kann
Hast schon mal nach Backup und Linux gegoogelt?
Das springt mir dabei ins Auge:
http://www.tecchannel.de/storage/backup/402533/index6.html
mfg
Kriechi