Robocopy PURGE(或MIR)选项不会删除正在使用的文件而不会报告错误

时间:2017-05-08 19:52:30

标签: tfs robocopy

在TFS版本中,有一个名为" Windows Machine File Copy"的发布步骤。在封面下,它使用robocopy将文件从源复制到目标。

以下是它使用的选项:

*.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /MT:8 /R:1000000 /W:30 

此前的发布步骤是停止Windows服务,这可以正常工作。在剧本结束时甚至还有3秒的延迟。我认为我们已将此服务编码为在关机期间完成所有通信,因此完成时间超过3秒。发生这种情况时,某些文件正在使用中。 Robocopy似乎对它复制的文件工作正常,但* EXTRA文件是一个不同的故事,它们不会被删除而不会被重试 - 只是留在那里。此外,尽管日志中存在大量错误,但最后的报告显示没有错误。

2017-05-08T15:37:07.7528791Z -------------------------------------------------------------------------------
2017-05-08T15:37:07.7528791Z    ROBOCOPY     ::     Robust File Copy for Windows                              
2017-05-08T15:37:07.7528791Z -------------------------------------------------------------------------------
2017-05-08T15:37:07.8622643Z   Started : Monday, May 8, 2017 10:37:07 AM
2017-05-08T15:37:07.8622643Z    Source : F:\Source
2017-05-08T15:37:07.8622643Z      Dest : \\myserver\E$\destination\
2017-05-08T15:37:07.8622643Z     Files : *.*
2017-05-08T15:37:07.8622643Z        
2017-05-08T15:37:07.8622643Z   Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /MT:8 /R:1000000 /W:30 
2017-05-08T15:37:07.8622643Z ------------------------------------------------------------------------------
2017-05-08T15:37:09.0185873Z      *EXTRA File         269824    \\myserver\E$\epay\destination\HtmlAgilityPack.pdb
2017-05-08T15:37:09.5186163Z      *EXTRA File         321024    \\myserver\E$\destination\Common.pdb
2017-05-08T15:37:09.5186163Z 2017/05/08 10:37:09 ERROR 5 (0x00000005) Deleting Extra File \\myserver\E$\destination\Common.pdb
2017-05-08T15:37:09.5186163Z Access is denied.

您可以清楚地看到错误,但报告未显示任何错误,并且发布步骤成功导致我们的版本中存在潜在问题。

2017-05-08T15:37:46.8492207Z                Total    Copied   Skipped  Mismatch    FAILED    Extras 
2017-05-08T15:37:46.8492207Z     Dirs :         1         1         0         0         0         0 
2017-05-08T15:37:46.8492207Z    Files :        54        54         0         0         0        49 
2017-05-08T15:37:46.8492207Z    Bytes :    8.45 m    8.45 m         0         0         0    8.55 m 
2017-05-08T15:37:46.8492207Z    Times :   0:01:49   0:00:25                       0:00:00   0:00:13

正如我所提到的,它并没有尝试重试失败的删除,但是它会重试复制由于我在日志中看到的相同错误而失败的文件。

有没有办法告诉robocopy重试失败的删除并报告错误,如果无法删除任何文件?我已阅读所有文档,但无法找到与此问题相关的任何内容或可能的解决方法。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用错误代码?

https://ss64.com/nt/robocopy-exit.html

低于%ERRORLEVEL% 8的任何内容似乎都是您想要的级别。

从robocopy-exit.html复制粘贴:

ROBOCOPY \\Server1\reports \\Server2\backup *.*
IF %ERRORLEVEL% LSS 8 goto finish

Echo Something failed & goto :eof

:finish
Echo All done, no fatal errors.

答案 1 :(得分:0)

“Extra”文件是目标文件夹中的文件,但不在源文件夹中。根据这一点,我想知道“Common.pdb”是由您的发布服务器上的任何服务/应用程序生成的,而不是您的构建/发布,这意味着您可能没有权限删除此文件。并且robocopy错误0x00000005通常也是由权限问题引起的。因此,您需要转到“Common.pdb”文件的路径以检查权限,并尝试使用您在Windows计算机文件复制任务中配置的帐户手动删除它。