Gibt es eine Möglichkeit, nur geänderte oder neue Dateien zu kopieren?

56

Ich versuche gerade, eine Website von meinem Desktop auf meinem Webserver bereitzustellen.

 xcopy C:\source X:\destination /s

Mein Desktop ist ein Windows XP-Computer, und ich muss auf einen Windows Server 2008-Computer kopieren. Dadurch wird jedoch alles kopiert, und die gesamte Site ist sehr groß. Das Kopieren dauert sehr lange.

Gibt es eine Möglichkeit, nur neue oder aktualisierte Dateien zu kopieren? Ich sehe, Sie können ein geändertes Datum übergeben, aber ich wollte sehen, ob es eine einfachere Möglichkeit gibt, es mit der Zieldatei zu vergleichen ...

Außerdem bin ich offen für alles, was außerhalb von xcopy funktioniert ...

leora
quelle
5
Sie können auch Robocopy ausprobieren.
Joerage

Antworten:

96

Aus der XCOPY- Dokumentation :

/ d [: mm-tt-jjjj]: Kopiert Quelldateien, die am oder nach dem angegebenen Datum geändert wurden. Wenn Sie keinen MM-TT-JJJJ-Wert angeben, kopiert xcopy alle Quelldateien, die neuer als die vorhandenen Zieldateien sind. Mit dieser Befehlszeilenoption können Sie geänderte Dateien aktualisieren.

In Ihrem Beispiel sollte es also lauten:

xcopy C:\source X:\destination /s /d
Kennzeichen
quelle
2
Das "/ d" scheint, als müssten Sie ihm ein Datum geben. Wie in der Frage erwähnt, habe ich keinen Stichtag im Sinn. Ich möchte nur über neue und aktualisierte Dateien
kopieren
10
Nein, das Datum ist optional! Deshalb steht es in eckigen Klammern. Hast du diese Zeile tatsächlich gelesen? Es heißt, es macht genau das, was Sie wollen!
Mark
4
Das Einzige, worauf Sie bei dieser Antwort achten müssen, ist, dass der Webserver und Ihre Workstation auf die gleiche Zeit eingestellt sind! Wenn nicht beide NTP verwenden, können entweder Dateien fehlen oder mehr Dateien als nötig kopiert werden.
CarlF
5
Obwohl die Dokumentation dies genau angibt, ist es leicht zu übersehen, /dda das Datum nicht so wichtig ist, dass es optional ist. Schauen Sie sich dann die anderen Optionen an und denken Sie, dass es keine Lösung gibt. :-)
Stéphane Gourichon
1
Wenn eine Datei nicht im Zielordner vorhanden ist, wird sie anscheinend von / D ohne angegebenes Datum kopiert, was möglicherweise nicht das gewünschte Ergebnis ist.
Tbone
24

Robocopy ist auch eine gute Alternative:

Standardmäßig kopiert Robocopy eine Datei nur, wenn Quelle und Ziel unterschiedliche Zeitstempel oder unterschiedliche Dateigrößen haben.

Außerdem können Sie noch viel mehr - der Befehl mirror ist praktisch für Websites, auf denen Sie auch Dateien löschen.

Matt
quelle
Vielen Dank, dass Sie robocopy erwähnt haben. Es ist immer schön, einige der neuen Dienstprogramme kennenzulernen.
Casper Leon Nielsen
3

Verwenden Sie die Option / A. Für alle neuen oder geänderten Dateien ist das Archivattribut festgelegt.

Überprüfen Sie den folgenden Link für Details:

Xcopy-Befehlssyntax und Beispiele

Giri
quelle
1
Ja, aber wenn Sie dies nicht tun xcopy /M, haben die Quelldateien nach dem Kopieren immer noch das Archivattribut gesetzt und werden auch beim nächsten Mal kopiert. Erfordert Schreibzugriff auf die Quelldateien.
Nigel Touch
2

Ich habe folgende Aufgabe für ~ 80k Dateien und ~ 2k Ordner geplant:

xcopy \\sourceserver\share\ Q:\backuptarget\folder\ /i /d /y /he /C /EXCLUDE:C:\backup\list.txt > C:\backup\backup.log

Mit der Option / C wird die Kopie fortgesetzt, auch wenn der Zugriff auf Dateien oder Ordner verweigert wird, da diese geöffnet sind oder keine Berechtigung für das Dienstkonto besitzen, unter dem Sie diese geplante Aufgabe ausführen.

Das ">" überschreibt das Protokoll jedes Mal, wenn Sie es anhängen möchten. Sie können die ">>" Pipe verwenden.


quelle
0

Es gibt Rsync , aber ich habe es unter Windows nicht verwendet. Ich benutze es normalerweise unter Linux wie folgt:

rsync -avuz src/ remote:dst/

das sendet nur Updates (neue und geänderte Dateien).

jcomeau_ictx
quelle
-1

BitTorrent Sync funktioniert wunderbar. Es wird automatisch aktualisiert, wenn Sie eine Datei ändern. Peer-To-Peer. Aktualisieren Sie bei Bedarf mehrere Standorte gleichzeitig. Einfach zu verwenden.

Jon49
quelle