Czy istnieje sposób na xcopy właśnie zmienione lub nowe pliki?

57

Próbuję wdrożyć witrynę z mojego pulpitu na moim serwerze internetowym, więc teraz robię to:

 xcopy C:\source X:\destination /s

Mój pulpit to komputer z systemem Windows XP i muszę skopiować na maszynę z systemem Windows Server 2008, ale wszystko to kopiuje, a cała witryna jest bardzo duża i zakończenie kopiowania zajmuje naprawdę dużo czasu.

Czy istnieje sposób na skopiowanie nowych lub zaktualizowanych plików? Widzę, że możesz podać datę zmiany, ale chciałem sprawdzić, czy istnieje prostszy sposób na porównanie z plikiem docelowym ...

Ponadto jestem otwarty na korzystanie z czegokolwiek poza xcopy, które również może wykonać tę pracę ...

leora
źródło
5
Możesz także wypróbować Robocopy.
dołączenie

Odpowiedzi:

97

Z dokumentacji XCOPY :

/ d [: mm-dd-rrrr]: Kopiuje pliki źródłowe zmienione tylko w określonym dniu lub później. Jeśli nie podasz wartości mm-dd-rrrr, xcopy kopiuje wszystkie pliki źródłowe, które są nowsze niż istniejące pliki docelowe. Ta opcja wiersza polecenia pozwala aktualizować zmienione pliki.

Tak więc na twoim przykładzie powinien on brzmieć:

xcopy C:\source X:\destination /s /d
znak
źródło
2
„/ d” wydaje się, że musisz podać mu datę. jak wspomniano w pytaniu, nie mam na myśli daty granicznej. Chcę tylko skopiować nowe i zaktualizowane pliki
leora
10
Nie, data jest opcjonalna! Właśnie dlatego jest w nawiasach kwadratowych. Czy rzeczywiście przeczytałeś ten wiersz? Mówi, że robi dokładnie to, co chcesz!
Mark
4
Jedyną rzeczą, na którą należy uważać przy tej odpowiedzi, jest to, że serwer WWW i stacja robocza są ustawione w tym samym czasie! Jeśli oboje nie korzystają z NTP, może to spowodować pominięcie plików lub skopiowanie większej liczby plików, niż to konieczne.
CarlF,
5
Chociaż dokumentacja precyzuje to dokładnie, łatwo przeoczyć, /dponieważ nie jest tak istotne, że data jest opcjonalna, a następnie spójrz na inne opcje i pomyśl, że nie ma rozwiązania. :-)
Stéphane Gourichon
2
Jeśli plik nie istnieje w folderze docelowym, wydaje się, że / D bez określonej daty BĘDZIE go kopiować, co może nie być pożądanym rezultatem.
tbone
24

Robocopy jest również dobrą alternatywą:

Domyślnie Robocopy kopiuje plik tylko wtedy, gdy źródło i miejsce docelowe mają różne znaczniki czasu lub różne rozmiary plików.

Ponadto możesz zrobić znacznie więcej - polecenie dublowania jest przydatne w witrynach, w których również usuwasz pliki.

Matt
źródło
Dziękujemy za wzmiankę o robocopy - zawsze miło jest poznać niektóre z nowych dostępnych narzędzi.
Casper Leon Nielsen
3

Użyj opcji / A. Wszystkie nowe lub zmodyfikowane pliki będą miały ustawiony atrybut archiwizacji.

Sprawdź poniższy link, aby uzyskać szczegółowe informacje:

Składnia polecenia Xcopy i przykłady

Giri
źródło
1
Tak, ale jeśli nie xcopy /M, pliki źródłowe nadal będą miały ustawiony atrybut archiwizacji po ich skopiowaniu i zostaną skopiowane również następnym razem. Wymaga dostępu do zapisu do plików źródłowych.
Nigel Touch
2

Mam zaplanowane następujące zadanie dla plików ~ 80k i folderów ~ 2k:

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

opcja / C kontynuuje kopiowanie, nawet jeśli „odmowa dostępu” do pliku lub folderu z powodu jego otwarcia lub braku uprawnień na koncie usługi, pod którym uruchomisz to zaplanowane zadanie.

„>” zastępuje dziennik za każdym razem, jeśli chcesz dołączyć, możesz użyć potoku „>>”.


źródło
0

Jest rsync , ale nie korzystałem z niego w systemie Windows. Zwykle używam go w systemie Linux:

rsync -avuz src/ remote:dst/

który wysyła tylko aktualizacje (nowe i zmodyfikowane pliki).

jcomeau_ictx
źródło
-1

BitTorrent Sync działa cudownie. Będzie aktualizował się automatycznie po każdej zmianie pliku. Peer to peer. W razie potrzeby zaktualizuj wiele lokalizacji jednocześnie. Łatwy w użyciu.

Jon49
źródło