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。
通常,Robocopy在大多数情况下是更快的替代方案,但最显着的区别是 robocopy 有重试选项,而 xcopy 不会在出现错误时重试。
要验证这一点,请使用开关r:0代替r:1(w: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实际上会产生影响吗?)。
| 归档时间: |
|
| 查看次数: |
4266 次 |
| 最近记录: |