Использование robocopy и исключение нескольких каталогов

60

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

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

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

ПРИМЕЧАНИЕ. Я хочу уточнить, что я хочу копировать реальные файлы, сохраняя при этом структуру каталогов. Я только что проверил, и /createтолько создает пустые файлы. Weird.

GorrillaMcD
источник

Ответы:

92

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

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

Очевидно, что включение конечных слешей препятствует правильному синтаксическому анализу списка каталогов в robocopy, поэтому не включайте конечные слеши в имена каталогов и не забывайте ставить кавычки вокруг каталогов с пробелами в имени.

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

Изменить: После некоторых исследований я немного улучшил команду:

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

Дополнения следующие:

  • /Z позволяет перезапустить работу
  • /LOG:<logfile path> довольно понятно
  • /XF используется для исключения определенных типов файлов, поэтому это не займет много времени
GorrillaMcD
источник
1
Вы всегда можете использовать /?переключатель, чтобы получить справочную информацию для команд консоли Windows. Есть также helpкоманда, которая похожа на manпрограмму Linux , но я не видел, чтобы она использовалась сторонними программами (это может быть - я не знаком с тем, как она работает, или если это вообще возможно).
Бен Ричардс
Привет, спасибо за комментарий. Я думал, что есть helpкоманда, но она, кажется, не активна в среде восстановления Windows (я получил сообщение об ошибке «Нет команды« помощь »найдена»). Robocopy - это команда Windows по умолчанию, которая заменила xcopy и не является сторонней.
GorrillaMcD
1
Я знаю, что это команда Windows, а не третья сторона. Я просто добавил это для справки в будущем, так как вы сказали, что не так хорошо знакомы с командной средой Windows. :)
Бен Ричардс
2
уточнение: /MIR(Зеркало от A до B) уничтожает любые файлы в B, которых нет в A. Это полезно, когда каталог, в который вы копируете, уже существует, и вы хотите, чтобы новая версия (из B) была точной копией A (как это в настоящее время существует).
Шерил Хохман,
4

Я знаю, что это не отвечает на вопрос OP, но всем, кто находится здесь от 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"
weberjn
источник
1

Моим решением для этого было создание файлов .txt, которые содержат файлы или каталоги, которые я хочу включить или исключить. У меня есть эти файлы в подпапке "rcXcludes" в моей папке "Backup". Мой метод именования файлов заключается в следующем. Я предисхожу к ним с помощью «rc» (для robocopy), затем в команде robocopy добавляются некоторые распознаваемые обозначения для приложения или части файловой системы, затем добавляются «B» или «R» (для резервного копирования или восстановления), затем «I» или «X» (для включения или исключения), затем «D» или «F» (для каталога или файла). Я окружаю каждую запись двойными кавычками и пробелом между записями. Файл «Включить» может иметь файлы или каталоги, но каталоги должны иметь обратную косую черту. В файле «Исключить» для каталогов вы не используете обратную косую черту. Любые записи каталога относятся к исходному пути в команде robocopy. Все содержимое любого из этих файлов .txt должно быть в одной строке ине иметь каррейджа возврата строки. В моем пакетном файле я использую команду SET / P для импорта файла .txt в переменную. Затем я использую эти переменные для файлов или после / 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: \ 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"
Чарли С
источник