Robocopy 报告低于 100%

Robocopy 报告低于 100%

我正在使用 robocopy 将大量文件(总计约 4TB 的 300,000 个文件)从一个 NAS 驱动器复制到另一个 NAS 驱动器。以下是示例命令:

robocopy \\nas1\myfolder \\nas2\myfolder /E /R:1 /W:5

我之前在各种文件夹和驱动器上执行过数百次此操作,没有任何问题。每次复制完一个文件后,它总是报告已复制 100%,然后再继续复制下一个文件。

但是,我突然收到报告称传输率低于 100% 的提示。通常为 98-99%,但有时低至 30%。见图:

robocopy 文件传输

robocopy 命令仍在运行(预计需要几个小时),所以我还无法确定复制文件的有效性或进行任何检查。

robocopy 在什么情况下会这样做?传输有问题吗?还是它报告了线程中的部分进度?

更新: 小文件 (< 1k) 往往受影响最严重,在许多情况下报告 < 50%。大文件 (> 10MB) 往往报告 98%+

答案1

我相信,如果目标卷的底层块大小与源卷不同,robocopy 将把文件视为不同的大小(即,几字节文件的磁盘大小可能是 4k NTFS,但在 NAS 上只有 1k)

这通常出现在人们从 NTFS 镜像到 NAS 时,但是我只看到关于比较阶段的评论而不是在复制过程中。

我认为您可以告诉 samba 使用特定的块大小,这样您就可以将目标配置为使用与源相同的块大小(如果它们尚不匹配)。

答案2

未经任何测试,推测会发生什么:

  1. 少于 100% 的文件可能已复制完毕,但正在等待稍后处理中的完整性测试(可能在 robocopy 即将完成时)
  2. 低于 100% 的文件可能失败了,正如你所说,5 秒后重试一次,所以网络故障可能会导致
  3. 它同时复制多个文件,并真正列出它已复制的部分文件

您可以尝试以下方法:

  • robocopy /J:使用无缓冲 I/O 进行复制(推荐用于大文件)
  • robocopy /NOOFFLOAD:不使用 Windows复制卸载机制
  • robocopy /z /MT 32 /Log+:<LogFile>
    • /z= 以可重启模式复制文件。在可重启模式下,如果文件复制中断,Robocopy 可以从中断处继续,而不是重新复制整个文件。
    • /MT 32= 创建具有 n 个线程的多线程副本。n 必须是 1 到 128 之间的整数。n 的默认值为 8。为了获得更好的性能,请使用 /log 选项重定向输出。
    • /日志= 创建一个日志文件,有助于跟进任何失败的文件

我发现对调查此问题有帮助的链接:

相关内容