ROBOCOPY命令执行增量备份


31

ROBOCOPY文档使我不知所措。我想将本地文件增量备份到网络驱动器(M)。我希望它尽可能快地运行,没有日志文件,并且在屏幕上显示的文字尽可能少。我的文件都放在一个文件夹(MyFolder)中,该文件夹具有许多嵌套的子文件夹。“增量”是指“仅复制新内容或更改的内容”。我不想删除目标中的任何历史文件,但是如果我更改了文件,则只需要更新的版本。而且,如果我没有更改文件,那么我不想将其复制到现有的备份文件上。下面是正确的吗?(正在运行Win7 Enterprise。)

robocopy C:\MyFolder M:\MyFolder /z /np /xo /e

请,除了robocopy外没有其他建议。我不允许安装任何东西。而且我不在乎安全性。我有这个人(无论我是否想要)。;-)


1
您需要/ s或/ e选项来复制子目录。
David Marshall

@DavidMarshall:哎呀。我真的知道 添加。所以,我现在好吗?
dmm

是。我一直在使用类似的东西。
David Marshall

现在进行测试。屏幕上仍然有很多东西。在以后的运行中,如何摆脱它?
dmm 2014年

3
可以在性能上产生重大差异的一种选择是进行多线程传输。 /MT[:N] 我有一个4核CPU,所以我通常在8-16的范围内使用一些线程。我估计每个内核有2-4个线程。当然,您应该在硬件上使用不同的值进行测试。当您有很多小文件时,多线程将为您提供最大的帮助。如果您的大型文件数量很少,则几乎没有太大帮助。
Zoredache 2014年

Answers:


40

几年来,我已经成功使用以下脚本的变体:

robocopy C:\source M:\destination /MIR /FFT /R:3 /W:10 /Z /NP /NDL

参数说明

  • /MIR选项(等效于/E /PURGE)代表“镜像”,是最重要的选项。它会将源文件夹视为“主”文件夹,从而导致其覆盖目标端的所有更改,这对于备份非常有用。

  • /FFT这是一个非常重要的选项,因为在比较文件时间戳时它可以有2秒的差异,因此计算机和备份设备之间的微小时钟差异无关紧要。即使文件修改时间未完全同步,这也将确保仅复制修改过的文件。

  • /R:3如果连接失败,则/W:10指定重试次数,并指定两次重试之间的等待时间为10秒。通过网络进行备份时,这些选项非常有用。

  • /Z 以“重启模式”复制文件,因此中断后可以继续部分复制的文件。

  • /NP/NDL抑制一些调试输出,您还可以添加/NS/NC/NFL以进一步减少输出量(见文档获取详细信息)。但是,我建议在第一次运行时打印一些调试输出,以确保一切正常。

其他用户提到的其他有用参数

  • /XJD不包括目录的“连接点”,符号链接,这些符号链接可能会导致诸如备份期间无限循环之类的问题。有关详细信息,请参见Brian的评论。

  • /MT[:N]使用多线程,可以加快许多小文件的传输。对于N,在普通计算机上应为内核数量的2-4倍。Zoredache对原始问题发表了评论。

根据Granger的评论进行编辑:

如果您确实要保留目标上而不是源上存在的文件,只需将/MIR选项替换为/E。但是,强烈建议/MIR您在要使用目标进行增量备份时使用。否则,任何在源处被重命名或移动的文件都将使目标杂乱无章,这意味着您将得到重复的文件。我通常在目标文件夹中创建一个子文件夹“ backup”,其中包含源文件夹树的1:1副本。这样,您仍然可以保留备份文件夹旁边的历史文件,并在以后安全地删除或重新组织它们。


此命令是否允许复制具有权限的文件?robocopy C:\ source M:\ destination / MIR / FFT / R:3 / W:10 / Z / NP / NDL
Shabeer Sher

4
/ MIR(/ PURGE)除外,它将删除目标位置上不再存在的文件。所问的问题明确指出是想要的。
Granger

@Shabeer否,Robocopy默认情况下仅复制数据(D),属性(A)和时间戳(T)。必须使用“ / copy:<value>”参数指定其他值,例如,包括ACL权限的“ / copy:DATS”。但是,由于我复制到基于Linux的NAS,对我来说这没有多大意义。
pederpansen

1
@Brian感谢您的提示。我从未遇到过交汇点的问题,但我想避免万一避免它们也不会有任何伤害。在我的答案中添加了它。
pederpansen '16

1
@pederpansen:复制用户文件夹(或复制整个驱动器)时,往往会发生这种情况。通常,应用程序数据文件夹是罪魁祸首,因为出于应用程序兼容性原因,它具有一个连接点。如果要查看示例无限路径,请尝试从命令提示符运行“ cd C:\ Users \ [USERFOLDER] \ AppData \ Local \ Application Data \ application data \ application data \”。这个工程即使是在Windows 10
布赖恩

8

我喜欢使用以下内容:

robocopy "C:\Users\<user>" "F:\robocopy\<user>" /XJD /R:0 /XA:SH /E /ZB /XO /XD "Downloads" "AppData" /LOG:robocopy.log /TEE

我以管理员身份运行此文件,因此备份模式(/b选项)可以复制使用中的文件。

与备份的增量性质无关的其他选项包括:

/XD 从备份中排除目录。

/XJD 排除交汇点(“我的音乐”)。

/R:0 将失败尝试的重试设置为0。

/XA:SH 跳过隐藏文件和系统文件。

要删除尽可能多的日志记录信息,请附加以下选项/NP /NS /NDL /NFL /NC

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.