RoboCopy 比 Xcopy 慢?(Windows 10)

use*_*117 6 windows command-line xcopy robocopy

我一直在备份脚本中使用 xcopy,但当路径名潜入超过 254 个字符的备份集时,xcopy 经常会因“内存不足”而失败。网上的很多建议都说 xcopy 已被 robocopy 弃用,并建议使用 robocopy 代替。

我改用 robocopy,它工作正常,但运行速度明显慢了。这些是大型备份集,xcopy 版本运行了 6 个小时,过夜还可以。但 robocopy 版本运行了 11 个小时,这意味着它第二天早上仍在运行!有没有办法加快 robocopy 的速度,或者有没有办法强制 xcopy 忽略长文件名并继续?这是旧的和新的示例代码:

xcopy S:\SharedFiles E:\NAS\SharedFiles /c /f /i /s /e /k /r /h /y /d /j 1>> C:\utilities\alloutput.txt 2>&1

robocopy S:\SharedFiles E:\NAS\SharedFiles /e /j /np /fp /r:1 /w:1 1>> C:\utilities\alloutput.txt 2>&1

请注意,我在 xcopy 中使用 /C 选项,但这似乎并不能阻止 xcopy 在遇到长路径名时立即结束。

编辑我更新了我的脚本以执行/r:1 /w:1。在我的测试运行中,有 78 个错误需要重试。这做了一些改进,但仍然比 xcopy 版本慢得多。我还尝试过使用和不使用/J,但没有明显的改进。我没有尝试设置线程限制,但 AFAIK xcopy 无论如何都是单线程的,而 robocopy 默认为 8。

Alb*_*bin 1

通常,Robocopy在大多数情况下是更快的替代方案,但最显着的区别是 robocopy 有重试选项,而 xcopy 不会在出现错误时重试。

要验证这一点,请使用开关r:0代替r:1w:0为了安全起见,但这应该没有任何区别)。

除此之外,我还知道以下性能开关

     /COMPRESS : Request SMB network compression during file transfer, if applicable.
            /J : Copy using unbuffered I/O (recommended for large files).
    /NOOFFLOAD : Copy files without using the Windows Copy Offload mechanism.
        /IPG:n : Inter-Packet Gap (ms), to free bandwidth on slow lines.
       /MT[:n] : Multithreaded copying, n = no. of threads to use (1-128)
                 default = 8 threads, not compatible with /IPG and /EFSRAW
                 Redirecting output using /LOG is recommended for even better performance.
Run Code Online (Sandbox Code Playgroud)

根据您的具体情况,专门关闭/打开它们会很有帮助(在您的情况下 - 使用/j实际上会产生影响吗?)。