54

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

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

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

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

4 ответа4

83

Я понял это с небольшим методом проб и ошибок и /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 используется для исключения определенных типов файлов, поэтому это не занимает много времени
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, который убрал кавычки из моих каталогов, указанных в кавычках!

3

Вы должны повторить часть /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" в моей папке "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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .