使用robocopy并排除多个目录


60

我正在尝试从服务器复制某些目录,然后再从备份还原(我的最新备份已损坏,因此我必须使用旧的:()。我在Windows Recovery Environment中,可以访问服务器的文件系统G:\和备份媒体C:\。但是,由于我对Linux更加熟悉,因此我在Windows中的命令行方面遇到了一些麻烦,特别是robocopy

我想将多个目录(保持相同的目录结构)从G:\复制到C:\,同时排除其他目录(即Windows和Program Files文件夹)。我无法弄清楚该/XD选项的语法。我希望做这样的事情:

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

注意:我想澄清一下,我也想在复制实际文件的同时保持目录结构。我刚刚检查了一下,/create只创建了空文件。奇怪的。

Answers:


90

我通过一些反复试验弄清楚了这个问题/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 用于排除某些文件类型,因此不需要很长时间

1
您始终可以使用该/?开关来获取Windows控制台命令的帮助信息。还有一个help命令,与Linux man程序类似,但是我还没有看到第三方程序使用它(可能是-我不熟悉它的工作方式,或者甚至可能)。
本·理查兹

嘿,谢谢你的评论。我以为有help命令,但是在Windows恢复环境中似乎没有激活(我收到了类似“找不到命令'help'”之类的错误)。Robocopy是Windows的默认命令,替换了xcopy,不是3rd-party。
GorrillaMcD 2012年

1
我知道这是Windows命令,而不是第三方。我只是把它放在这里只是为了将来参考,因为您说您对Windows的命令环境不太熟悉。:)
本·理查兹

2
澄清:(从/MIRA到B的镜像)销毁B中A中不存在的所有文件。当要复制到的目录已经存在,并且您希望新版本(B的版本)与A的副本完全相同时,这很有用。 (当前存在)。
SherylHohman

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"

1

我的解决方案是创建.txt文件,其中包含要包含或排除的文件或目录。这些文件位于“备份”文件夹下的子文件夹“ rcXcludes”中。我命名文件的方法如下。我给它们加上“ rc”(对于robocopy),然后在robocopy命令中为应用程序或文件系统的一部分提供一些可识别的符号,然后附加“ B”或“ R”(对于“备份或还原”),然后附加“ I”或“ X”(用于包含或排除),然后是“ D”或“ F”(用于目录或文件)。我用双引号将每个条目括起来,并在条目之间留一个空格。“包含”文件可以具有文件或目录,但是目录必须带有尾部反斜杠。在目录的“排除”文件中,不要使用结尾的反斜杠。任何目录条目都相对于robocopy命令中的源路径。这些.txt文件中任何一个的全部内容必须在一行上,并且没有回程换行。在批处理文件中,我使用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:\ 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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.