具有Mir参数的Robocopy最大量距

时间:2019-06-03 22:46:30

标签: powershell command-line powershell-4.0 robocopy

我正在使用从源到目的地的Robocopy。

以下内容将移动所有文件。

Step 1: robocopy c:\Source C:\Destination /MIR

现在当我在步骤中执行第二个命令时,应使用/ MIR参数将2019年1月1日之前的任何内容从目标位置删除,但这不会发生(2019年1月之后的文件仍保留在文件夹中,而不是使用/ MIR删除命令)。我该如何解决这个问题?在20190101之前删除任何内容?

Step 2: robocopy c:\Source C:\Destination /MIR /maxage:19000101 /minage:20190101" 

1 个答案:

答案 0 :(得分:1)

这似乎是奇怪的行为,因为您可能会认为您要做的事情比2019年1月1日早,并且使用/MIR开关,或更具体地说是使用/PURGE /E开关,以删除多余的目录。

此操作不起作用的原因是,即使/MINAGE命令按预期运行,/MIR开关也仅影响选择复制的文件

说我们有2个文件,比1月1日早1个,另外1个新。当我们运行标准的\MIR命令时:

Robocopy.exe C:\Source C:\Destination /MIR 

两个文件均按预期复制。

2 files Copied

如果我们向目标添加一个额外的文件,然后重新运行:

Robocopy.exe C:\Source C:\Destination /MIR 

我们得到了预期的删除多余文件的信息:

2 files Skipped
1 files Extras

然后我们添加/MINAGE并运行:

Robocopy.exe C:\Source C:\Destination /MIR /MAXAGE:20190101

我们将看到:

2 files Skipped

为了更好地说明正在发生的事情以及为什么“跳过”文件,我们添加另一个参数,包括“跳过\IS

Robocopy.exe C:\Source C:\Destination /MIR /IS /MINAGE:20190101

我们得到:

1 files Copied
1 files Skipped

这意味着\MINAGE过滤掉了我们要复制的内容。如果我们清除目录并重新运行,则可以更好地了解发生了什么:

Remove-Item C:\Destination -Force
Robocopy.exe C:\Source C:\Destination /MIR /MINAGE:20190101

我们得到:

1 files Copied
1 files Skipped

它复制了较旧文件,而不是较新文件。这意味着当遍历源文件中的文件时,它使用/MINAGE参数仅找出需要复制什么文件,而不是哪些文件我需要删除

此行为的原因是因为/MINAGE用于具有慢速网络链接的大型目录或较小的目标计算机,我们只对复制较新的文件感兴趣,而不一定需要全部文件。

要突出显示“复制而不是删除”,如果我们添加2个额外的文件,其中一个较旧,一个较新,然后使用/MINAGE重新运行,并包括相同的/IS开关以进行说明:

Robocopy.exe C:\Source C:\Destination /MIR /IS /MINAGE:20190101

我们得到:

1 files Copied
1 files Skipped
2 files Extras

这突显了/MIR的意思是...嗯... 镜像。此处的其他参数只是告诉它复制的内容。

  • 它看到了/MINAGE,并复制了相同的文件(/IS)。
  • 它看到了/MINAGE,并从副本中跳过了较旧的文件。
  • 它看到了/MIR,并删除了原本不应该存在的Extra文件。无论Extra文件的使用期限如何

简单的解决方案是仅复制所有内容。从一个空目录开始,仅复制早于2019年1月1日的文件:

Remove-Item C:\Destination -Force
Robocopy.exe C:\Source C:\Destination /E /MINAGE:20190101