galipoli
Goto Top

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 face-smile

Vielen Dank schon mal an alle!

Content-Key: 261284

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

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: emeriks
emeriks 27.01.2015 um 16:44:35 Uhr
Goto Top
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.
Mitglied: Galipoli
Galipoli 27.01.2015 um 19:11:40 Uhr
Goto Top
Hätte ich ja auch gedacht und funktionieren tut es soweit ja auch. Daher steh ich da gerade, zumindest für mich aktuell vor einer unlösbaren Aufgabe.
Bin für jeden Vorschlag dankbar der es etwas "hübscher" macht!
Mitglied: Endoro
Endoro 28.01.2015 um 16:32:57 Uhr
Goto Top
Hey,
so kann man nichts dazu sagen. Eventuell mit den Realdaten, wenn die einer Struktur (14 17 18 19 20 22 23 24) folgen.
Gruß, Endoro
Mitglied: Galipoli
Galipoli 28.01.2015 um 16:45:51 Uhr
Goto Top
Was meinst du bzw. welche Angaben bräuchtest du?
Mitglied: Endoro
Endoro 28.01.2015 um 17:07:18 Uhr
Goto Top
Hey! Diese Folge (14 17 18 19 20 22 23 24) kommt ja irgendwo her und lässt sich vielleicht generalisieren. Dazu braucht man Originaldaten, um Gesetzmäßigkeiten zu entdecken.

Gruß, Endoro.
Mitglied: Galipoli
Galipoli 28.01.2015 um 19:12:15 Uhr
Goto Top
Hi!

Ah ok, also die Zahlenfolge bezieht sich auf unsere Standorte in Deutschland und finden sich jeweils in der IP Adresse wieder...

Grüße
Mitglied: Endoro
Endoro 28.01.2015 um 20:18:57 Uhr
Goto Top
... was schon mal ein Ansatz wäre.
Gruß, Endoro.
Mitglied: emeriks
emeriks 28.01.2015 aktualisiert um 20:23:41 Uhr
Goto Top
Er meint sowas

for %%z in (14 17 18 19 20 22 23 24) do call :ToDo %%z

goto :EOF

:ToDo

blablabla %1hier %1da /a /b /c /d /e


goto :EOF
Mitglied: Galipoli
Galipoli 28.01.2015 um 21:06:01 Uhr
Goto Top
Danke für eure Hilfe erstmal, allerdings verstehe ich nicht ganz wie ich das in meinem Script unterbringen soll...
Mitglied: pieh-ejdsch
pieh-ejdsch 29.01.2015 aktualisiert um 15:51:31 Uhr
Goto Top
moin,

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
Mitglied: Galipoli
Galipoli 29.01.2015 um 23:18:05 Uhr
Goto Top
Hi Phil,

danke aber ich bin leider an Robocopy gebunden...

Grüße
Mitglied: pieh-ejdsch
Lösung pieh-ejdsch 30.01.2015, aktualisiert am 31.01.2015 um 09:48:48 Uhr
Goto Top
moin Galipoli,

Es wird doch Robocopy verwendet. face-wink
Ist nur ein Verschreiber in Zeile 45 für die Optionen.
In Zeile 58 siehst Du das RC verwendet wird.

Gruß Phil
Mitglied: Galipoli
Galipoli 31.01.2015 um 09:48:39 Uhr
Goto Top
Hi Phil,

danke dir das ist echt Wahnsinn face-smile

Rettet mir das Wochenende!

Viele Grüße