Використання роботокопії та виключення декількох каталогів


60

Я намагаюся скопіювати деякі каталоги з сервера, перш ніж відновити з резервної копії (остання резервна копія була пошкодженою, тому мені доведеться використовувати старіший :(). Я в середовищі відновлення Windows і маю доступ до файлу сервера системи G:\та моїх резервних носіїв інформації, C:\але, оскільки я більше знайомий з Linux, у мене виникають певні проблеми з командним рядком в Windows robocopy.

Я хочу скопіювати декілька каталогів (підтримуючи однакову структуру каталогів) з G: \ в C: \, виключаючи інші (а саме папки Windows та Program Files). Я не можу з'ясувати синтаксис для /XDпараметра. Я сподівався зробити щось на кшталт:

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

ПРИМІТКА. Я хочу уточнити, що я хочу скопіювати фактичні файли, зберігаючи також структуру каталогу. Я щойно перевірив і /createстворює лише порожні файли. Дивно.

Відповіді:


90

Я зрозумів це з невеликою кількістю спроб і помилок і /L(щоб перевірити команду, перш ніж зробити це справді). Команда, в якій я закінчуюсь:

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

Очевидно, в тому числі, косою косою рисою стримує роботокопію від правильного розбору списку каталогів, тому не забудьте включати кінцеві косої риски в назви каталогів і не забудьте ставити цитати навколо каталогів з пробілами в імені.

/MIRВаріант підтримує ту ж структуру каталогів при копіюванні файлів.

Редагувати: Після ще кількох досліджень я трохи вдосконалив команду:

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

Доповнення такі:

  • /Z дозволяє перезапустити роботу
  • /LOG:<logfile path> досить зрозумілий.
  • /XF використовується для виключення певних файлів, тому це не займе так багато часу

1
Ви завжди можете використовувати /?перемикач, щоб отримати довідкову інформацію для команд консолі Windows. Є також helpкоманда, яка схожа на manпрограму Linux , але я не бачив, щоб її використовували сторонні програми (це могло бути - я не знайомий з тим, як це працює, або якщо це навіть можливо).
Бен Річардс

Гей, дякую за коментар. Я подумав, що існує helpкоманда, але вона, здається, не є активною в середовищі відновлення Windows (я отримав помилку типу "Не знайдено жодної команди" довідка "). Робокопія - це команда Windows за замовчуванням, яка замінила xcopy і не є сторонньою.
GorrillaMcD

1
Я знаю, що це команда Windows, а не третя сторона. Я просто зауважив це лише заради подальшої довідки, оскільки ти сказав, що ти не такий знайомий із командним середовищем Windows. :)
Бен Річардс

2
уточнення: /MIR(Дзеркало від A до B) знищує будь-які файли в B, яких немає в A. Це корисно, коли каталог, який ви копіюєте, вже існує, і ви хочете, щоб нова версія (B) була точною копією A (як це існує зараз).
ШерілХоман

4

Я знаю, що це не відповідає на питання ОП, але для когось із google: XD вийде з ладу у файлі завдань, якщо ви використовуєте лапки.

Погано:

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

Добре:

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

Розташуйте стільки виключень, скільки хочете, рядок за рядком, не використовуючи лапок (чи є пробіли чи ні).

Я виявив це за допомогою перемикача командного рядка / SAVE: myjobname, який знімав цитати з моїх цитованих каталогів!


4

ви повинні повторити /XDчастину

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"

1

Моє рішення для цього полягала в створенні .txt файлів, які містять файли або каталоги, які я хочу включити або виключити. Я маю ці файли у підпапці "rcXcludes" у папці "Резервне копіювання". Мій метод іменування файлів полягає в наступному. Я передміщую їх "rc" (для роботокопії), потім деякі розпізнавані позначення програми або частини файлової системи в команді robocopy, потім додаю "B" або "R" (для резервного копіювання або відновлення), потім "I" або "X" (для включення або виключення), потім "D" або "F" (для каталогу або файлу). Я оточую кожен запис подвійними лапки та пробілом між записами. Файл "Включити" може мати файли або каталоги, але в каталогах повинен бути зворотний нахил. У файлі "Виключити" для каталогів ви не використовуєте зворотний нахил. Будь-які записи каталогів відносяться до вихідного шляху в команді robocopy. Весь вміст будь-якого з цих .txt-файлів має бути в одному рядку тане мати каналу зворотної лінії carraige. У своєму пакетному файлі я використовую команду SET / P для імпорту файлу .txt у змінну. Потім я використовую ці змінні для FILES або після / XF або / XD. Наприклад, для резервного копіювання профілю поточного користувача Chrome без копіювання всієї папки "За замовчуванням" я використовую наступне.

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"

У файлі bat у, скажімо, C: \ резервній копії.

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"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.