Korzystanie z robocopy i wykluczanie wielu katalogów

60

Próbuję skopiować niektóre katalogi z serwera przed przywróceniem z kopii zapasowej (moja najnowsza kopia zapasowa była uszkodzona, więc muszę użyć starszej wersji :(). Jestem w środowisku odzyskiwania systemu Windows i mam dostęp do pliku serwera system G:\i moje nośniki kopii zapasowych C:\. Ale ponieważ jestem bardziej zaznajomiony z Linuksem, mam problem z wierszem poleceń w systemie Windows robocopy.

Chcę skopiować wiele katalogów (zachowując tę ​​samą strukturę katalogów) z G: \ do C: \, jednocześnie wykluczając inne (mianowicie foldery Windows i Program Files). Nie mogę zrozumieć składni /XDopcji. Miałem nadzieję zrobić coś takiego:

robocopy G: C:\backup /CREATE /XD "dir1","dir2", ...

UWAGA: Chcę wyjaśnić, że chcę skopiować rzeczywiste pliki, jednocześnie zachowując strukturę katalogów. Właśnie sprawdziłem i /createtworzę tylko puste pliki. Dziwne.

GorrillaMcD
źródło

Odpowiedzi:

90

Zrozumiałem to z niewielką próbą i błędem oraz /L(aby przetestować polecenie przed wykonaniem go naprawdę). Polecenie, które kończę to:

robocopy G: C:\backup /MIR /XD G:\dir1 "G:\dir 2" G:\dir3 ...

Najwyraźniej uwzględnienie końcowych ukośników powstrzymuje robocopy przed prawidłowym analizowaniem listy katalogów, więc pamiętaj, aby nie uwzględniać ukośników końcowych w nazwach katalogów i pamiętaj, aby umieszczać cudzysłowy wokół katalogów ze spacjami w nazwie.

/MIROpcja utrzymuje taką samą strukturę katalogów podczas kopiowania plików.

Edycja: Po kilku dalszych badaniach poprawiłem nieco polecenie:

robocopy G: C:\backup /MIR /Z /LOG:C:\todaysdate-backup.log /XF *.iso *.log *.au /XD G:\dir1 ...

Dodatki są następujące:

  • /Z umożliwia ponowne uruchomienie zadania
  • /LOG:<logfile path> jest dość oczywiste.
  • /XF służy do wykluczania niektórych rodzajów plików, więc nie trwa to długo
GorrillaMcD
źródło
1
Zawsze możesz użyć /?przełącznika, aby uzyskać pomoc dotyczącą poleceń konsoli Windows. Jest też helppolecenie podobne do manprogramu Linuksa , ale nie widziałem, aby było używane przez programy innych firm (może być - nie jestem zaznajomiony z tym, jak to działa, a nawet jeśli to możliwe).
Ben Richards
Hej, dzięki za komentarz. Myślałem, że istnieje helppolecenie, ale wydaje się, że nie jest ono aktywne w środowisku odzyskiwania systemu Windows (otrzymałem błąd typu „Nie znaleziono pomocy dla polecenia”). Robocopy to domyślne polecenie systemu Windows, które zastąpiło xcopy i nie jest programem zewnętrznym.
GorrillaMcD
1
Wiem, że to polecenie systemu Windows, a nie firma zewnętrzna. Umieściłem to tutaj tylko dla odniesienia w przyszłości, ponieważ powiedziałeś, że nie znasz tak dobrze środowiska poleceń Windows. :)
Ben Richards
2
wyjaśnienie: /MIR(Odbicie lustrzane od A do B) niszczy wszystkie pliki w B, które nie są obecne w A. Jest to przydatne, gdy katalog, do którego kopiujesz, już istnieje i chcesz, aby nowa wersja (B) była dokładną kopią A (jak obecnie istnieje).
SherylHohman
4

Wiem, że to nie odpowiada na pytanie OP, ale każdemu tutaj z Google: XD nie powiedzie się w pliku zadania, jeśli użyjesz cudzysłowów.

Zły:

::
:: Exclude These Directories :
::
    /XD     :: eXclude Directories matching these names
        "Temporary Internet Files"

Dobry:

::
:: Exclude These Directories :
::
    /XD     :: eXclude Directories matching these names
        Temporary Internet Files

Umieść tyle wykluczeń, ile chcesz, wiersz po wierszu, bez cudzysłowów (bez spacji).

Sposób, w jaki to odkryłem, polegał na użyciu przełącznika wiersza poleceń / SAVE: moja nazwa_obsługi, który usunął cytaty z moich cytowanych katalogów!

Chris
źródło
4

musisz powtórzyć tę /XDczęść

C:\>robocopy "C:\Users\weberjn\Google Drive" "u:\Google Drive" /e /dcopy:t /copy:DT /r:0 /XD "C:\Users\weberjn\Google Drive\photos" /XD "C:\Users\weberjn\Google Drive\Google Photos"
weberjn
źródło
1

Moim rozwiązaniem było utworzenie plików .txt zawierających pliki lub katalogi, które chcę uwzględnić lub wykluczyć. Mam te pliki w podfolderze „rcXclude” w folderze „Backup”. Moja metoda nazywania plików jest następująca. Przedmawiam je słowem „rc” (dla robocopy), następnie rozpoznawalną notacją dla aplikacji lub części systemu plików w poleceniu robocopy, następnie dołączam „B” lub „R” (dla Backup lub Restore), a następnie „I” lub „X” (w przypadku dołączania lub wykluczania), a następnie „D” lub „F” (w przypadku katalogu lub pliku). Każdy wpis otaczam podwójnymi cudzysłowami i odstępami między wpisami. Plik „Dołącz” może zawierać pliki lub katalogi, ale katalogi muszą mieć końcowy ukośnik odwrotny. W pliku „Wyklucz” dla katalogów nie używasz końcowego ukośnika odwrotnego. Wszelkie pozycje katalogu są względne do ścieżki źródłowej w poleceniu robocopy. Cała zawartość każdego z tych plików .txt musi znajdować się w jednym wierszu inie mieć linii powrotu linii ładunkowej. W moim pliku wsadowym używam polecenia SET / P, aby zaimportować plik .txt do zmiennej. Następnie używam tych zmiennych dla PLIKÓW lub po / XF lub / XD. Na przykład, aby wykonać kopię zapasową profilu Chrome bieżącego użytkownika bez kopiowania całego folderu „Domyślny”, używam następujących.

rcChromeBIF.txt  
"Bookmarks" "Custom Dictionary.txt" "Extension Cookies" "Favicons" "History" "Login Data" "Preferences" "Top Sites" "Visited Links" "Web Data" "Databases\" "Extensions\" "Local Storage\" "Plugin Data\" "User Scripts\" "User StyleSheets\"

rcChromeBXF.txt  
"Bookmarks.bak" "ChromeDWriteFontCache" "Cookies" "Cookies-journal" "Current Session" "Current Tabs" "Extension Cookies-journal" "Favicons-journal" "Google Profile.ico" "History Provider Cache" "History-journal" "Last Session" "Last Tabs" "Login Data-journal" "Network Action Predictor" "Network Action Predictor-journal" "Network Persistent State" "Origin Bound Certs" "Origin Bound Certs-journal" "QuotaManager" "QuotaManager-journal" "README" "Secure Preferences" "Shortcuts" "Shortcuts-journal" "Top Sites-journal" "TransportSecurity" "Web Data-journal"

rcChromeBXD.txt  
"Application Cache" "Cache" "data_reduction_proxy_leveldb" "Extension State" "File System" "GPUCache" "IndexedDB" "JumpListIcons" "JumpListIconsOld" "Local Extension Settings" "Media Cache" "Pepper Data" "Platform Notifications" "Service Worker" "Session Storage" "Storage" "Thumbnails" "Web Applications"

W pliku nietoperza w powiedzmy C: \ Backup.

REM ChromeBak.bat
SET chromeprofdir=Google\Chrome\User Data\Default
SET /P rcChrmBIF=<C:\Backup\rcXcludes\rcChromeBIF.txt
SET /P rcChrmBXF=<C:\Backup\rcXcludes\rcChromeBXF.txt
SET /P rcChrmBXD=<C:\Backup\rcXcludes\rcChromeBXD.txt
robocopy "%LOCALAPPDATA%\%chromeprofdir%" "H:\ChromeBackup\%chromeprofdir%" %rcChrmBIF% /E /ZB /COPY:DAT /DCOPY:T /MT:4 /XJ /XF %rcChrmBXF% /XD %rcChrmBXD% /R:10 /W:2 /TBD /NP /V /TS /Log+:"H:\ChromeBackup\ChromeBackup.log"
Charlie C.
źródło