首页/系统/Windows 运维速查/robocopy 基础用法
CMD 常用命令74 条

robocopy 基础用法

Windows 自带的健壮文件复制工具:支持重试、断点续传、多线程与完整日志;退出码语义特殊,脚本判断要特别注意。

Windows 运维速查系统更新于 2026-10-13

robocopy 是什么

robocopy(Robust File Copy)是 Windows 自带的目录复制与同步工具,随系统内置在 %SystemRoot%\System32 下,用来替代 xcopy 在长路径、权限与失败重试上的短板。它按目录树比对源与目标,只搬运有差异的部分,支持多线程、断点续传、失败重试与完整日志,是 Windows 侧做数据迁移、定期备份、增量同步的首选。与 copy、xcopy 最大的差别在结果表达:robocopy 用退出码位图汇报,0 到 7 都算正常,写脚本时必须按位理解而不是照搬「非 0 即失败」。

基本信息

适用平台Windows Vista / Server 2008 及以后,Windows 7 起参数最全
语法robocopy 源 目标 [文件...] [选项]
常用选项/E 含空目录、/MT[:n] 多线程、/R:n 重试次数、/W:n 重试间隔秒、/Z 断点续传、/MIR 镜像、/L 预演、/LOG: 写日志
退出码0-7 属正常范围,8 及以上表示至少一处失败
权限复制到受保护目录、保留所有者与 ACL 时需要管理员

典型使用场景

  • 服务器数据迁移:整盘整目录搬到新盘,用 /MT 提速并加 /LOG 留审计记录
  • 定期增量备份:配合任务计划每天跑一次 /E,只同步有变化的文件
  • 目录镜像:用 /MIR 让备份目录与源保持完全一致(会删除目标里多余的项)
  • 大批小文件复制:几十万个小文件用资源管理器极慢,多线程能显著缩短时间
  • 保留权限复制:需要带上 ACL、所有者与时间戳时,替代 copy 与 xcopy
  • 移动数据:/MOVE 在一次作业里完成复制与删除源,省去手工清理

常用示例

常用示例
:: 基础复制:整树含空目录,失败重试 2 次、每次间隔 2 秒
robocopy D:\Src D:\Dst /E /R:2 /W:2
:: 多线程加日志,适合大批量迁移
robocopy D:\Src D:\Dst /E /MT:16 /LOG:D:\copy.log /TEE
:: 预演:只列出将要复制的文件,不落盘
robocopy D:\Src D:\Dst /E /L /V
:: 镜像同步(目标多余文件会被删除)
robocopy D:\Src D:\Dst /MIR /R:2 /W:2
:: 移动:复制成功后删除源文件
robocopy D:\Src D:\Dst /E /MOVE

退出码速查

退出码含义脚本处理
0源与目标一致,没有文件需要复制视为成功
1有文件被成功复制视为成功
2目标里存在源中没有的额外项纯复制可忽略,镜像场景要关注
31 与 2 同时成立视为成功
4检测到不匹配的文件或目录核对清单,可能需要人工确认
8有文件复制失败(被占用、无权限等)按失败处理,查日志定位
16严重错误,作业未能完成按失败处理,先解决路径或权限
robocopy 默认重试次数极高、间隔也很长:遇到被占用的文件时会反复等待,脚本看起来像卡死。请显式写 /R:2 /W:2 之类的参数,跨网络复制时尤其重要。
/MIR 与 /MOVE 都会造成删除:/MIR 清掉目标里多余的项,/MOVE 在成功后删除源文件。执行前先用 /L 预演核对清单,并确认源与目标没有写反。
日志三兄弟配合使用:/LOG:文件 每次覆盖写,/LOG+:文件 追加,/TEE 让内容同时输出到控制台。自动化任务里建议用 /LOG+ 保留历史,便于事后追溯。

文件选择开关

开关作用适用场景
/E复制所有子目录,含空目录整树迁移的默认搭配,保证目录结构完整
/S复制子目录但跳过空目录只关心有内容的目录时使用
/MIR等价于 /E 加 /PURGE,令目标与源一致镜像备份,会删除目标里多余的内容
/MOV 与 /MOVE/MOV 成功后删源文件,/MOVE 连目录一起清理数据搬迁,省去手工删除源
/XO 与 /XN排除较旧文件 / 排除较新文件防止用旧版本覆盖新版本,避免误覆盖
/XD 与 /XF排除指定目录 / 排除指定文件跳过缓存、临时文件与页面文件等无意义内容
重试策略按链路质量调:局域网内 /R:1 /W:1 就够,跨专线或跨云复制建议 /R:3 /W:5 并叠加 /Z 断点续传,链路抖动后可从中断处继续,而不是整文件重传。

易错点

  • 用 if errorlevel 1 判断 robocopy 会把「复制成功(退出码 1)」报成失败,正确阈值是 %ERRORLEVEL% GEQ 8,PowerShell 里对应 $LASTEXITCODE -ge 8
  • 漏写 /R 与 /W 时,遇到被占用的文件会按默认的超长重试策略空转,脚本表面假死,务必显式设小值
  • 源与目标写反再叠加 /MIR,会在几秒内清空目标目录内容;镜像类操作必须先用 /L 预演并二次核对路径
  • 复制数据库文件、正在滚动的日志会得到不完整副本,这类数据要用卷影快照或先停写再复制
  • /MT 与 /Z 同时使用时多线程会被限制,超大批量复制要在速度与断点续传之间取舍

数据来源与参考

  • Microsoft Learn:robocopy
  • Microsoft Learn:Robocopy exit codes

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌