Dateisicherung mit Robocopy
Hallo zusammen,
ich bin ganz neu was das Thema programmieren angeht und habe in meiner ersten Woche die Aufgabe erhalten eine Batch Datei zu schreiben in der via robocopy von verschiedenen servern dateien gesichert werden.
Zum testen habe ich Ordner und Dummy Dateien auf meiner Festplatte angelegt und die folgendene Batch Datei geschrieben:
@echo off
cls
rem Test zur Datensicherung
echo Datensicherung der GLT Server >>"G:\98 Sonstiges\Marc\LOGs\log-%date:~0,2%-%date:~3,2%-%date:~6,4%.log"
echo.
rem Variablen definieren
set _14Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _17Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _18Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _19Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _20Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _22Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _23Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _24Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
echo.
set _14Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _17Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _18Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _19Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _20Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _22Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _23Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _24Ziel="G:\98 Sonstiges\Marc\Sicherung"
echo.
set _14Datei="*.*"
set _17Datei="*.*"
set _18Datei="*.*"
set _19Datei="*.*"
set _20Datei="*.*"
set _22Datei="*.*"
set _23Datei="*.*"
set _24Datei="*.*"
echo.
call :copyServer
goto :EOF
:copyServer
set _para=/B /E /R:5 /W:3 /MT:8
set _log=/LOG:"G:\98 Sonstiges\Marc\LOGs\log-%date:~0,2%-%date:~3,2%-%date:~6,4%.log" /TEE /NDL
robocopy %_14Quelle% %_14Ziel% %_14Datei% %_para% %_log%
robocopy %_17Quelle% %_17Ziel% %_17Datei% %_para% %_log%
robocopy %_18Quelle% %_18Ziel% %_18Datei% %_para% %_log%
robocopy %_19Quelle% %_19Ziel% %_19Datei% %_para% %_log%
robocopy %_20Quelle% %_20Ziel% %_20Datei% %_para% %_log%
robocopy %_22Quelle% %_22Ziel% %_22Datei% %_para% %_log%
robocopy %_23Quelle% %_23Ziel% %_23Datei% %_para% %_log%
robocopy %_24Quelle% %_24Ziel% %_24Datei% %_para% %_log%
goto :EOF
:EOF
Mein Chef gab mir gestern als Hinweis das ich doch bitte den Befehl call nutzen soll um alles etwas schöner darzustellen, außerdem sollen alle kopiervorgänge zeitglich ablaufen, dies hatte ich ursprünglich durch das vorsetzten von start vor robocopy machen wollen, soll aber auch hier eine andere Lösung vorbringen.
Nach ausgiebiger Suche komme ich aber einfach nicht weiter, da ich aber schon ein paar Hilfreiche Tipps hier erlesen konnte, hoffe ich nun einfach mal auf euch
Vielen Dank schon mal an alle!
ich bin ganz neu was das Thema programmieren angeht und habe in meiner ersten Woche die Aufgabe erhalten eine Batch Datei zu schreiben in der via robocopy von verschiedenen servern dateien gesichert werden.
Zum testen habe ich Ordner und Dummy Dateien auf meiner Festplatte angelegt und die folgendene Batch Datei geschrieben:
@echo off
cls
rem Test zur Datensicherung
echo Datensicherung der GLT Server >>"G:\98 Sonstiges\Marc\LOGs\log-%date:~0,2%-%date:~3,2%-%date:~6,4%.log"
echo.
rem Variablen definieren
set _14Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _17Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _18Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _19Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _20Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _22Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _23Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
set _24Quelle="G:\98 Sonstiges\Marc\GLT Server Test\xx.xx.x.x"
echo.
set _14Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _17Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _18Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _19Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _20Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _22Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _23Ziel="G:\98 Sonstiges\Marc\Sicherung"
set _24Ziel="G:\98 Sonstiges\Marc\Sicherung"
echo.
set _14Datei="*.*"
set _17Datei="*.*"
set _18Datei="*.*"
set _19Datei="*.*"
set _20Datei="*.*"
set _22Datei="*.*"
set _23Datei="*.*"
set _24Datei="*.*"
echo.
call :copyServer
goto :EOF
:copyServer
set _para=/B /E /R:5 /W:3 /MT:8
set _log=/LOG:"G:\98 Sonstiges\Marc\LOGs\log-%date:~0,2%-%date:~3,2%-%date:~6,4%.log" /TEE /NDL
robocopy %_14Quelle% %_14Ziel% %_14Datei% %_para% %_log%
robocopy %_17Quelle% %_17Ziel% %_17Datei% %_para% %_log%
robocopy %_18Quelle% %_18Ziel% %_18Datei% %_para% %_log%
robocopy %_19Quelle% %_19Ziel% %_19Datei% %_para% %_log%
robocopy %_20Quelle% %_20Ziel% %_20Datei% %_para% %_log%
robocopy %_22Quelle% %_22Ziel% %_22Datei% %_para% %_log%
robocopy %_23Quelle% %_23Ziel% %_23Datei% %_para% %_log%
robocopy %_24Quelle% %_24Ziel% %_24Datei% %_para% %_log%
goto :EOF
:EOF
Mein Chef gab mir gestern als Hinweis das ich doch bitte den Befehl call nutzen soll um alles etwas schöner darzustellen, außerdem sollen alle kopiervorgänge zeitglich ablaufen, dies hatte ich ursprünglich durch das vorsetzten von start vor robocopy machen wollen, soll aber auch hier eine andere Lösung vorbringen.
Nach ausgiebiger Suche komme ich aber einfach nicht weiter, da ich aber schon ein paar Hilfreiche Tipps hier erlesen konnte, hoffe ich nun einfach mal auf euch
Vielen Dank schon mal an alle!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 261284
Url: https://administrator.de/contentid/261284
Ausgedruckt am: 24.11.2024 um 05:11 Uhr
13 Kommentare
Neuester Kommentar
Das mit dem "start" war schon richtig.
Und "call" macht die Sache unglaublich schöner. Ja. Unglaublich ....
Keine Ahnung, was Dein Chef da sehen will. Entscheidend ist doch das Ergebnis?
Und viele Copy Jobs parallel sind u.U. kontraproduktiv, weil sie sich gegenseitig Bandbreite, CPU und Festplatten-IO weg nehmen. Da wäre es vielleicht sinnvoller, statt dessen bei den einzelnen robocopy's die Thread-Anzahl zu erhöhen. (Standard sind meines Wissens 8 Threads) Siehe Schalter "/MT".
E.
Und "call" macht die Sache unglaublich schöner. Ja. Unglaublich ....
Keine Ahnung, was Dein Chef da sehen will. Entscheidend ist doch das Ergebnis?
Und viele Copy Jobs parallel sind u.U. kontraproduktiv, weil sie sich gegenseitig Bandbreite, CPU und Festplatten-IO weg nehmen. Da wäre es vielleicht sinnvoller, statt dessen bei den einzelnen robocopy's die Thread-Anzahl zu erhöhen. (Standard sind meines Wissens 8 Threads) Siehe Schalter "/MT".
E.
moin,
in etwa so
Bitte codetags benutzen
Gruß Phil
in etwa so
@echo off
setlocal
rem Variablen reset
for %%i in (Quelle Ziel Datei) do for /f "delims==" %%s in ('set %%i_ 2^>nul') do set "%%s="
::----------------------------------
::----------------------------------
rem Beginn Einstellungen
::----------------------------------
rem Quellen
set "Quelle_14=G:\Quelle14"
set "Quelle_17=G:\Quelle17"
set "Quelle_18=G:\Quelle18"
set "Quelle_19="
set "Quelle_22="
::----------------------------------
rem Ziele
set "Zpfad=G:\Sicherungen"
set "Ziel_14=%Zpfad%\Ziel14"
set "Ziel_17=%Zpfad%\Ziel17"
set "Ziel_18=%Zpfad%\Ziel18"
set "Ziel_19="
set "Ziel_20="
::-----------------------------------
rem Dateien
rem *.* ist nicht notwendig als Platzhalter
set Datei_14=
set Datei_17=*.doc
set Datei_22=*.txt
::-----------------------------------
rem Logfile
set "Logfile=G:\98 Sonstiges\Marc\LOGs\log-%date:~0,2%-%date:~3,2%-%date:~6,4%.log"
rem xcopy Parameter
set _para=/B /E /R:5 /W:3 /MT:8
set _log=/LOG+:"%Logfile%" /TEE /NDL
rem Ende Einstellungen
::-----------------------------------
::-----------------------------------
rem Beginn Ablauf
if not exist "%logfile%\.." md "%logfile%\.."
echo Beginn Datensicherung der GLT Server >>"%logfile%"
for /f "tokens=2,* delims=_=" %%i in ('set Quelle_ 2^>nul') do if defined Ziel_%%i call robocopy "%%j" "%%Ziel_%%i%%" %%Datei_%%i%% %_para% %_log%
echo Ende Datensicherung der GLT Server >>"%logfile%"
rem Ende Ablauf
Bitte codetags benutzen
Gruß Phil