Robocopy:使用/ mir来总结两个作业

时间:2016-02-20 17:21:55

标签: windows batch-file cmd synchronization robocopy

我有多个驱动器,我想用robocopy同步到另一个驱动器。以下结构:

E:\
 - ServerFolders
 -- A
 -- B

F:\
 - ServerFolders
 -- C
 -- D

这是我使用的命令:

robocopy E: G: /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /log+:"C:\Users\Administrator\Desktop\logs\backup_%date%.log" /XD "System Volume Information" "Recycler"
robocopy F: G: /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /log+:"C:\Users\Administrator\Desktop\logs\backup_%date%.log" /XD "System Volume Information" "Recycler"

正如您所看到的,我制作了两个calles并希望保留所有时间戳。如果某些内容已从E:F:中删除,则该内容也应在G:上删除。

现在的结果是,如果备份完成,则E:的所有内容都不再可用。我认为这是因为/mir,删除了不再存在的文件夹。我想要的是以下内容:

G:\
 - ServerFolders
 -- A
 -- B
 -- C
 -- D

我需要改变什么?如果我指定子文件夹ServerFolders,则会出现同样的问题。此外,每次添加新文件夹时都必须更改脚本。

修改

我唯一想到的就是每个文件夹都这样做:

set source1=%fromHDD1%\ServerFolders\A
set source2=%fromHDD1%\ServerFolders\B
set source3=%fromHDD2%\ServerFolders\C
set target1=%to%\ServerFolders\A
set target2=%to%\ServerFolders\B
set target3=%to%\ServerFolders\C

robocopy %source1% %target1% /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /XD "System Volume Information" "Recycler"
robocopy %source2% %target2% /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /XD "System Volume Information" "Recycler"
robocopy %source3% %target3% /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /XD "System Volume Information" "Recycler"

有没有更简单的方法?

1 个答案:

答案 0 :(得分:1)

  

有没有更简单的方法?

TL; DR:没有。

Robocopy无法将两个源驱动器的内容汇总到一个目标文件夹中,并且仍然将每个子文件夹镜像回原始源驱动器。

要做到这一点,Robocopy必须在其他地方保留子文件夹到源驱动器的映射,并且它没有这样的功能。因此,您必须维护Robocopy的映射,这是您在编辑中建议的。

顺便说一句,如果Robocopy假设有这样一个功能,如果两个源驱动器上显示相同的子文件夹名称(但内容不同),您会期望它做什么? (例如,有E:\ServerFolders\XF:\ServerFolders\X。)

如果您可以放宽摘要规则,那么显而易见的替代方法是在G:上为每个源驱动器创建子文件夹。例如。使用目的地G:\ServerFolders\DriveF\A, B, ...G:\ServerFolders\DriveG\C, D, ...

如果您使用支持它们的Windows版本,则可以考虑通过创建library来展示G:\ServerFolders\DriveFG:\ServerFolders\DriveG的摘要内容。或者,您可以通过为每个子目录创建和维护links目录来获得相同的效果。