@Glytzhkof empfahl Robocopy in seiner Antwort und es passte perfekt zu meinen Bedürfnissen.
tl; dr
C:\>robocopy.exe source target /l /e /zb /xx /xl /fp /ns /nc /ndl /np /njh /njs C:\source\foo\bar\b.txt
Details und Erklärung der Optionen
Robocopy (Wikipedia) scheint für die Windows-Systemadministration weit verbreitet zu sein. ist gut dokumentiert (TechNet); wird als mehr als eine Verschleierung bezüglich Stack Overflow, Server Fault und natürlich hier bei Super User diskutiert ; sorgt für eine bestimmte Funktion, anstatt zu versuchen, ein Mehrzweckwerkzeug zu sein (das zu Aufblasen und Bugs neigt); Und außerdem stellt sie diese spezifische Funktion seit 1997 zur Verfügung. Für mich tragen all diese Faktoren zu "Transparenz" bei, obwohl sie geschlossen sind, und beruhigen mich.
Robocopy ist Teil einer Reihe von Tools, die derzeit als Windows Server 2003 Resource Kit Tools bekannt sind . Nach dem Herunterladen und Installieren habe ich das Szenario in meiner Frage neu erstellt und es versucht:
C:\>robocopy.exe source target /l /e /zb ------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows ------------------------------------------------------------------------------- Started : Thu May 01 09:08:20 2014 Source : C:\source\ Dest : C:\target\ Files : *.* Options : *.* /L /S /E /COPY:DAT /ZB /R:1000000 /W:30 ------------------------------------------------------------------------------ 0 C:\source\ 1 C:\source\foo\ *EXTRA Dir -1 C:\target\foo\baz\ 2 C:\source\foo\bar\ *EXTRA File 1 d.txt Newer 5 b.txt New File 1 c.txt ------------------------------------------------------------------------------ Total Copied Skipped Mismatch FAILED Extras Dirs : 3 0 3 0 0 1 Files : 3 2 1 0 0 1 Bytes : 7 6 1 0 0 1 Times : 0:00:00 0:00:00 0:00:00 0:00:00 Ended : Thu May 01 09:08:20 2014
Sieht gut aus! Lassen Sie mich die Optionen erläutern:
/l
listet Aktionen auf, ohne sie tatsächlich auszuführen./e
Schließt Unterverzeichnisse ein, aber im Gegensatz dazu/s
auch leere Verzeichnisse./zb
Kopien im "Neustart" -Modus und bei Zugriff verweigert, "Backup" -Modus; es scheint der sicherste Ansatz zu sein; Lesen Sie hier mehr .
Ich habe keine der kopierbezogenen Optionen benötigt, da ich eigentlich keine Aktionen durchführe.
Als nächstes mussten wir nur noch weitere Schalter hinzufügen, um die gewünschte Ausgabe zu erhalten:
C:\>robocopy.exe source target /l /e /zb /xx /xl /fp /ns /nc /ndl /np /njh /njs C:\source\foo\bar\b.txt
Lassen Sie uns noch einmal die Optionen durchgehen.
Zunächst kümmerte ich mich nur um modifizierte Dateien und Ordner, also:
/xx
schließt "zusätzliche" Dateien und Verzeichnisse aus, dh solche, die nur im Ziel vorhanden sind./xl
schließt "einsame" Dateien und Verzeichnisse aus, die nur in der Quelle vorhanden sind.
Zweitens wollte ich relative Pfade (oder zumindest vollständige Pfade, nicht nur Namen):
/fp
ermöglicht volle Pfade (nicht überraschend gab es keine Option für relative Pfade).
Drittens wollte ich so viel Flusen wie möglich entfernen, und ich war angenehm überrascht, als ich herausfand, dass alles entfernbar war:
/ns
unterdrückt Dateigrößen./nc
unterdrückt Klassen, zNewer
./ndl
unterdrückt Verzeichnisnamen./np
unterdrückt die Ausgabe des Kopierfortschritts./njh
unterdrückt den Auftragskopf./njs
unterdrückt die Jobzusammenfassung.
Und da hast du es!
Für meine Zwecke (Erstellen von versionierten Backups geänderter Dateien) wurde mir klar, dass ich eigentlich auch gerne den Zeitstempel jeder modifizierten Datei hätte. Einfach hinzufügen /ts
:
C:\>robocopy.exe source target /l /e /zb /xx /xl /fp /ns /nc /ndl /np /njh /njs /ts 2014/05/01 15:20:42 C:\source\foo\bar\b.txt