Polecenie ROBOCOPY, aby wykonać przyrostową kopię zapasową

31

Jestem przytłoczony dokumentacją ROBOCOPY. Chcę wykonać przyrostową kopię zapasową moich plików lokalnych na dysku sieciowym (M). Chcę, aby działał tak szybko, jak to możliwe, bez pliku dziennika i jak najmniej tekstu na ekranie. Moje pliki znajdują się gdzieś w jednym folderze (MyFolder), który ma wiele zagnieżdżonych podfolderów. Przez „przyrostowy” rozumiem „kopiuj tylko to, co nowe lub zmienione”. Nie chcę usuwać żadnych historycznych plików w miejscu docelowym, ale jeśli zmieniłem plik, chcę tylko nowszą wersję. A jeśli nie zmieniłem pliku, nie chcę go kopiować na istniejącym pliku kopii zapasowej. Czy poniżej jest poprawne? (Uruchamianie Win7 Enterprise.)

robocopy C:\MyFolder M:\MyFolder /z /np /xo /e

Proszę nie sugerować niczego poza robocopy. Nie wolno mi niczego instalować. I nie dbam o bezpieczeństwo. Mam do tego ludzi (czy tego chcę, czy nie). ;-)

dmm
źródło
1
Potrzebujesz opcji / s lub / e, aby skopiować podkatalogi.
David Marshall
@DavidMarshall: oops. Właściwie to wiedziałem. Dodany. Czy jestem teraz dobry?
dmm,
Tak. Użyłem czegoś podobnego.
David Marshall
Testuję to teraz. Na ekranie wciąż jest napisanych kilka rzeczy. Jak się go pozbyć w przyszłych biegach?
dmm,
3
Jedną z opcji, która może znacząco wpłynąć na wydajność, jest przesyłanie wielowątkowe. /MT[:N] Mam 4-rdzeniowy procesor, więc zwykle używam czegoś w szał 8-16 dla mojej liczby wątków. Liczę 2-4 wątki na rdzeń. Z pewnością powinieneś przetestować z różnymi wartościami na swoim sprzęcie. Wielowątkowość najbardziej pomaga, gdy masz dużo małych plików. Jeśli masz niewielką liczbę dużych plików, nie pomoże to prawie tak samo.
Zoredache,

Odpowiedzi:

40

Od kilku lat z powodzeniem używam wariantu następującego skryptu:

robocopy C:\source M:\destination /MIR /FFT /R:3 /W:10 /Z /NP /NDL

Parametry wyjaśnione

  • /MIROpcja (odpowiednik /E /PURGE) oznacza „lustro” i jest najważniejszym rozwiązaniem. Uważa twój folder źródłowy za „główny”, co powoduje, że zastępuje on wszelkie zmiany po stronie docelowej, co jest przydatnym ustawieniem dla kopii zapasowej.

  • /FFTjest bardzo ważną opcją, ponieważ pozwala na 2-sekundową różnicę podczas porównywania znaczników czasu plików, tak że niewielkie różnice zegara między komputerem a urządzeniem kopii zapasowej nie mają znaczenia. Zapewni to kopiowanie tylko zmodyfikowanych plików, nawet jeśli czasy modyfikacji plików nie są dokładnie zsynchronizowane.

  • /R:3określa liczbę ponownych prób, jeśli połączenie nie powiedzie się, i /W:10określa czas oczekiwania między kolejnymi próbami wynoszący 10 sekund. Są to przydatne opcje podczas tworzenia kopii zapasowej przez sieć.

  • /Z kopiuje pliki w „trybie restartu”, więc częściowo skopiowane pliki mogą być kontynuowane po przerwie.

  • /NPi /NDLtłumić jakieś wyjście debugowania, można dodatkowo dodać /NS, /NC, /NFLw celu dalszego zmniejszenia ilości produkcji (patrz dokumentacja dla szczegółów). Sugerowałbym jednak wydrukowanie danych wyjściowych debugowania podczas pierwszych uruchomień, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.

Dodatkowe przydatne parametry wspomniane przez innych użytkowników

  • /XJDnie obejmuje „punktów połączenia” dla katalogów, dowiązań symbolicznych, które mogą powodować problemy, takie jak nieskończone pętle podczas tworzenia kopii zapasowej. Szczegóły w komentarzach Briana .

  • /MT[:N]korzysta z wielowątkowości i może przyspieszyć przesyłanie wielu małych plików. W przypadku N wartość 2-4 razy większa niż liczba rdzeni powinna zostać wykonana na normalnej maszynie. Skomentowane przez Zoredache w pierwotnym pytaniu.

Edytuj w odpowiedzi na komentarz Granger:

Jeśli naprawdę chcesz zachować pliki istniejące w miejscu docelowym, ale nie po stronie źródłowej, po prostu zamień /MIRopcję na /E. Jednak zdecydowanie zalecamy użycie, /MIRgdy chcesz użyć miejsca docelowego do tworzenia przyrostowych kopii zapasowych. W przeciwnym razie wszystkie pliki, których nazwy zostały zmienione lub przeniesione u źródła, zagracają miejsce docelowe, co oznacza, że ​​otrzymujesz duplikaty. Zwykle tworzę podfolder „kopię zapasową” w miejscu docelowym, który zawiera kopię 1: 1 mojego drzewa folderów źródłowych. W ten sposób możesz nadal przechowywać pliki historyczne obok folderu kopii zapasowej i bezpiecznie je usuwać lub ponownie porządkować.

pederpansen
źródło
Czy to polecenie pozwala na kopiowanie plików z uprawnieniami? robocopy C: \ source M: \ destination / MIR / FFT / R: 3 / W: 10 / Z / NP / NDL
Shabeer Sher
4
Tyle że / MIR (/ PURGE) usunie pliki w miejscu docelowym, które już nie istnieją w źródle. W zadanym pytaniu wyraźnie stwierdzono, że nie było to pożądane.
Granger,
@Shabeer Nie, Robocopy domyślnie kopiuje tylko dane (D), atrybuty (A) i znaczniki czasu (T). Inne wartości należy określić za pomocą parametru „/ copy: <value>”, np. „/ Copy: DATS” w celu uwzględnienia uprawnień ACL. Ale ponieważ kopiuję na NAS z systemem Linux, nie ma to dla mnie większego sensu.
pederpansen
1
@Brian Dzięki za podpowiedź. Nigdy nie miałem problemów z punktami połączenia, ale myślę, że uniknięcie ich na wszelki wypadek nie zaszkodzi. Dodałem to w mojej odpowiedzi.
pederpansen 26.04.16
1
@pederpansen: Zdarza się to podczas kopiowania folderów użytkowników (lub kopiowania całego dysku). Zwykle winowajcą jest folder danych aplikacji, ponieważ ma on punkt połączenia ze względu na kompatybilność aplikacji. Spróbuj uruchomić „cd C: \ Users \ [USERFOLDER] \ AppData \ Local \ Application Data \ application data \ application data \” z wiersza poleceń, jeśli chcesz zobaczyć przykładową nieskończoną ścieżkę. Działa to nawet w systemie Windows 10.
Brian
8

Lubię używać następujących:

robocopy "C:\Users\<user>" "F:\robocopy\<user>" /XJD /R:0 /XA:SH /E /ZB /XO /XD "Downloads" "AppData" /LOG:robocopy.log /TEE

Uruchamiam to jako Administrator, więc tryb kopii zapasowej ( /bopcja) może tworzyć kopie używanych plików.

Inne opcje niezwiązane z przyrostowym charakterem tworzenia kopii zapasowych to:

/XD aby wykluczyć katalogi z kopii zapasowej.

/XJD aby wykluczyć punkty połączeń („Moja muzyka”).

/R:0 aby ustawić ponawianie prób nieudanych prób na 0.

/XA:SH pomijać ukryte i systemowe pliki.

Aby usunąć jak najwięcej informacji o logowaniu, dołącz następujące opcje /NP /NS /NDL /NFL /NC.

Vince
źródło