Täglicher Sync von A nach B mit Robocopy
Hallo,
ich habe ein Win 2003 System (WHS) mit max. 2TB gespiegelten Daten (internen Platten).
Als Backup-Platte verwende ich eine externe eSATA-Platte (2TB).
Ein geplantes Batchfile (täglich 17:00 Uhr) soll alle DATEN von d:\ nach e:\ syncen (analog rsync):
robocopy.exe "%Quelle%" "%Ziel%" /MIR /COPYALL /ETA /R:0 /W:0 /LOG:logfile.log
Im Prinzip funktioniert das schon ganz gut, aber einige Dinge sollen besser laufen:
Die Logfile ist mir zu lang - wie kann man die Ausgabe ins logfile so begrenzen, dass folgende Infos weggeschrieben werden:
- kurze Statistik, wie lange dauert es, wieviel Ordner/Files sind betroffen (keine Details)
- Block PURGE: was wurde im Ziel gelöscht
- Block COPY: was wurde kopiert (nur die Folder/Files, die wirklich verändert wurden, sonst nichts)
Im Resultat also eine möglichst kleine Logfile mit allen relevanten Infos.
Vielen Dank und Gruß
ich habe ein Win 2003 System (WHS) mit max. 2TB gespiegelten Daten (internen Platten).
Als Backup-Platte verwende ich eine externe eSATA-Platte (2TB).
Ein geplantes Batchfile (täglich 17:00 Uhr) soll alle DATEN von d:\ nach e:\ syncen (analog rsync):
robocopy.exe "%Quelle%" "%Ziel%" /MIR /COPYALL /ETA /R:0 /W:0 /LOG:logfile.log
Im Prinzip funktioniert das schon ganz gut, aber einige Dinge sollen besser laufen:
Die Logfile ist mir zu lang - wie kann man die Ausgabe ins logfile so begrenzen, dass folgende Infos weggeschrieben werden:
- kurze Statistik, wie lange dauert es, wieviel Ordner/Files sind betroffen (keine Details)
- Block PURGE: was wurde im Ziel gelöscht
- Block COPY: was wurde kopiert (nur die Folder/Files, die wirklich verändert wurden, sonst nichts)
Im Resultat also eine möglichst kleine Logfile mit allen relevanten Infos.
Vielen Dank und Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 160009
Url: https://administrator.de/contentid/160009
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
9 Kommentare
Neuester Kommentar
hi
nur einmal ein kleiner tipp:
wenn du 1. und 2. und 3. willst,
dann benutz kein robocopy sondern schreib selber ein programm...
sorry das musste einfach raus
warum willst du alles ändern???
die log datei ist zu lang... musst du halt ein wenig scrollen
Punkt 2 und 3
steht ja gekürzt ganz unten
und alles was du willst steht ja im log, must du einfach suchen
Grüsse
Switcher
nur einmal ein kleiner tipp:
wenn du 1. und 2. und 3. willst,
dann benutz kein robocopy sondern schreib selber ein programm...
sorry das musste einfach raus
warum willst du alles ändern???
die log datei ist zu lang... musst du halt ein wenig scrollen
Punkt 2 und 3
steht ja gekürzt ganz unten
und alles was du willst steht ja im log, must du einfach suchen
Grüsse
Switcher
Moin,
du benutzt ja nur ein Logfile und das wird immer wieder neu geschrieben - von daher macht das "so" eigentlich keinen Sinn.
Trotzdem... ein paar Demozeilen zum spielen - jeder dir noch unbekannte Befehl kennt /?
Ich vermute, mit den gesammelten Infos hast du schon den gröbsten Weg geschafft - wenns wo klemmt und du /? wirklich nicht weiterhelfen sollte...
Wir sind hier und freuen uns immer, wenn die Lehrschnippsel es geschafft haben einen leeren Kopf mit Wissen und Interesse zu füllen.
ich schreibe leider keine kompletten Bätche mehr - da ist der Lernerfolg meistens für Allerwertesten
Gruß
du benutzt ja nur ein Logfile und das wird immer wieder neu geschrieben - von daher macht das "so" eigentlich keinen Sinn.
Trotzdem... ein paar Demozeilen zum spielen - jeder dir noch unbekannte Befehl kennt /?
robocopy.exe "%Quelle%" "%Ziel%" /MIR /COPYALL /ETA /R:0 /W:0 /LOG:logfile.log
- Du schaust dir das Llogfile genauer an und stellstg fest - deine Infos sind nach einer Reihe von --- Zeichen zu finden
find /n "--" logfile.log
- Du schaust genauer und es ist der letzte Block mit einer Zeile mit ganz vielen "---" wenn man jetzt die Zeilennummer verhackstückeln könnte, wäre ja schon der nächste Ansatz.
for /f "delims=[:]" %a in ('find /n "--" E:\test\logfile.ini') do set info=%a
- ok jetzt hat man die Zeilenzahl - wie weiter?
more +%info% logfile.log
- aha und nun?
- vielleicht in ein neues anderes Logfile schreiben?
more +%info% logfile.log>neues.log - oder das logfile gleich mit Datum benamsen? - dazu gibts ein mit viel Mühe geschriebenes und nicht umsonst gelobtes Tut vom Meister Biber - Batch und Datum - empfehle ich dir an dieser Stelle (spätestens)
echo %date% %time% >>alteslog.log
more +%info% logfile.log>>alteslog.log
more +%info% logfile.log>>alteslog.log
Ich vermute, mit den gesammelten Infos hast du schon den gröbsten Weg geschafft - wenns wo klemmt und du /? wirklich nicht weiterhelfen sollte...
Wir sind hier und freuen uns immer, wenn die Lehrschnippsel es geschafft haben einen leeren Kopf mit Wissen und Interesse zu füllen.
ich schreibe leider keine kompletten Bätche mehr - da ist der Lernerfolg meistens für Allerwertesten
Gruß
Moin go4java,
dir ist aber bekannt, dass RoboCopy auch ein paar Parameter zum Eindampfen/Verschlanken des Logs vorgesehen hat?
Beispiel:
Hast du denn die schon mal angetestet?
Und zum Thema "Log enthält zu viele Details/ist zu lang"..
Frisst das denn Heu? Oder geht die Kapazität der 3,5"-Diskette zur Neige?
Mein Ansatz wäre bei Logdateien, doch lieber ein paar Details zuviel in Petto zu haben - was ich schnell wissen was will wie "Enthält die Logdatei die Strings "Failed" , "Denied" ,"Skipped", "Error" oder ähnliches - das greif ich doch eh mit einen "FindStr"-Befehl ab und scroll nicht mit einem Editor durch den Mist..
Deshalb lieber die "normal-ausführliche" Logdatei - und bei zu klärenden Problemen sogar die /verbose-Variante.
ich hab schon mehr Zeit verplempert mit kurzen knackigen Logdateien, bei denen im Fehlerfall der Programmierer nur vorgesehen hatte, ein höchst informatives "Fehler -Programm wird beendet" rauszuschreiben oder gar als letzte Meldung im Logfile "Programm gestartet am 03.02.2011 um 10:24..." und das wars.
Grüße
Biber
dir ist aber bekannt, dass RoboCopy auch ein paar Parameter zum Eindampfen/Verschlanken des Logs vorgesehen hat?
Beispiel:
> RoboCopy /???
....
...
Logging options
/L : List only - don't copy, timestamp or delete any files.
/NP : No Progress - don't display % copied.
/LOG:file : Output status to LOG file (overwrite existing log).
/LOG+:file : Output status to LOG file (append to existing log).
UNILOG and UNILOG+ will output to a unicode logfile ##
/TS : Include Source file Time Stamps in the output.
/FP : Include Full Pathname of files in the output.
/NS : No Size - don't log file sizes.
/NC : No Class - don't log file classes.
/NFL : No File List - don't log file names.
/NDL : No Directory List - don't log directory names.
/TEE : Output to console window, as well as the log file.
/NJH : No Job Header.
/NJS : No Job Summary.
...
Hast du denn die schon mal angetestet?
Und zum Thema "Log enthält zu viele Details/ist zu lang"..
Frisst das denn Heu? Oder geht die Kapazität der 3,5"-Diskette zur Neige?
Mein Ansatz wäre bei Logdateien, doch lieber ein paar Details zuviel in Petto zu haben - was ich schnell wissen was will wie "Enthält die Logdatei die Strings "Failed" , "Denied" ,"Skipped", "Error" oder ähnliches - das greif ich doch eh mit einen "FindStr"-Befehl ab und scroll nicht mit einem Editor durch den Mist..
Deshalb lieber die "normal-ausführliche" Logdatei - und bei zu klärenden Problemen sogar die /verbose-Variante.
ich hab schon mehr Zeit verplempert mit kurzen knackigen Logdateien, bei denen im Fehlerfall der Programmierer nur vorgesehen hatte, ein höchst informatives "Fehler -Programm wird beendet" rauszuschreiben oder gar als letzte Meldung im Logfile "Programm gestartet am 03.02.2011 um 10:24..." und das wars.
Grüße
Biber
aber was erwartest du denn???
du müsstes diverse schleifen haben, die dir alles berechnen und filtern, also wenn du ca. 3 Tage hast um eine "perfekte" Log-Datei zu haben kannst du das ja gerne machen, aber für was????
Warum musst du wissen was gelöscht und was kopiert wurde???
und ausserdem steht ja wirklich alles im Log
gelöscht heisst *Extra Datei
kopiert ist alles was Prozent hat
and alles andere ist schon vorhanden
Grüsse
du müsstes diverse schleifen haben, die dir alles berechnen und filtern, also wenn du ca. 3 Tage hast um eine "perfekte" Log-Datei zu haben kannst du das ja gerne machen, aber für was????
Warum musst du wissen was gelöscht und was kopiert wurde???
und ausserdem steht ja wirklich alles im Log
gelöscht heisst *Extra Datei
kopiert ist alles was Prozent hat
and alles andere ist schon vorhanden
Grüsse
ok aber was raubt dir mehr zeit?
2 min pro log,
oder
3 Tage skript schreiben
2 min pro log,
oder
3 Tage skript schreiben
Kleine Anmerkung zu deiner Parameterkombination.
Wenn du du doch mit /NFL und /NDL schon sagst "no file lyrics" und "no dir lyrics"...
Was vermutest du denn, welchen Einfluss bei nicht angezeigten Dateien und Ordnern
die zusätzlichen Spaltenausblendungen /NC und /NS haben könnten?.
Zusätzlich allerdings würde ich den Header weglassen mit /NJH.
Di kannst das Ganze gefahrlos simulieren am CMD-Prompt mit zwei zusätzlichen Schaltern
Beispiel (wenn du vorher %quelle% und %ziel% geSETzt hast
...dann siehst du gleich, wie viele Log-Zeilen übrig bleiben würden.
Wenn du du doch mit /NFL und /NDL schon sagst "no file lyrics" und "no dir lyrics"...
Was vermutest du denn, welchen Einfluss bei nicht angezeigten Dateien und Ordnern
die zusätzlichen Spaltenausblendungen /NC und /NS haben könnten?.
Zusätzlich allerdings würde ich den Header weglassen mit /NJH.
Di kannst das Ganze gefahrlos simulieren am CMD-Prompt mit zwei zusätzlichen Schaltern
- /L für /LassMaSehenWasPassierenWürde und
- /TEE.
Beispiel (wenn du vorher %quelle% und %ziel% geSETzt hast
robocopy.exe "%Quelle%" "%Ziel%" /L /MIR /COPYALL /ETA /R:0 /W:0 /LOG:logfile.log /NS /NC /NFL /NDL /tee|findstr /n .