go4java
Goto Top

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ß

Content-ID: 160009

Url: https://administrator.de/forum/taeglicher-sync-von-a-nach-b-mit-robocopy-160009.html

Ausgedruckt am: 23.12.2024 um 10:12 Uhr

90776
90776 02.02.2011 um 23:44:03 Uhr
Goto Top
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
60730
60730 03.02.2011, aktualisiert am 18.10.2012 um 18:45:43 Uhr
Goto Top
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 /?

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

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ß
Biber
Biber 03.02.2011 um 08:02:39 Uhr
Goto Top
Moin go4java,

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
go4java
go4java 03.02.2011 um 08:50:56 Uhr
Goto Top
Danke zusammen, wenn auch der Ton z.T. nicht besonders freundlich ist.
Schaue mir Eure Hinweise an. Gruß
90776
90776 03.02.2011 um 17:44:07 Uhr
Goto Top
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
go4java
go4java 03.02.2011 um 18:20:58 Uhr
Goto Top
...also, meine Erwartung ist und war lediglich, das Logfile auf eine für mich erforderliche Länge zurückzuschneiden, mit einem Detail-Output ausschließlich das DELTA beinhaltend. Ein "Dashboard" auf einen Blick. Meine Freizeit ist sehr begrenzt und ich kann und will mich nicht mit den Augen durch ein unleserliches Logfile durchwühlen - wenn anderen das File gefällt, bitteschön. Gruß
90776
90776 03.02.2011 um 18:39:27 Uhr
Goto Top
ok aber was raubt dir mehr zeit?

2 min pro log,

oder

3 Tage skript schreiben
go4java
go4java 03.02.2011 um 21:00:00 Uhr
Goto Top
Lösung war die Anwendung der erweiterten Parameter:
robocopy.exe "%Quelle%" "%Ziel%" /MIR /COPYALL /ETA /R:0 /W:0 /LOG:logfile.log /NS /NC /NFL /NDL
Biber
Biber 03.02.2011 um 21:35:43 Uhr
Goto Top
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
  • /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 .
...dann siehst du gleich, wie viele Log-Zeilen übrig bleiben würden.