命令是干什么的
长时间的文件复制任务需要可追溯:/LOG 把结果写入日志、/LOG+ 追加写入、/TEE 同时输出到屏幕,/R 与 /W 控制失败重试的次数与间隔,/MT 启用多线程、/IPG 以包间隔降低带宽占用。这套参数组合起来,才是一份可自动化又可控速的复制任务。
默认重试参数的危险
robocopy 默认 /R:1000000 /W:30,即失败后重试一百万次、每次间隔 30 秒。一旦遇到被占用的文件,任务会在这里卡住极长时间,表现为没有报错但一直不结束。长任务必须显式设置 /R 与 /W,把重试收敛到可接受的范围。
基本信息
| 适用平台 | Windows Vista / Server 2008 及以后(robocopy 系统内置) |
|---|---|
| 日志参数 | /LOG:文件、/LOG+ 追加、/NFL 与 /NDL 精简、/TEE 同步显示 |
| 节流参数 | /R:重试次数、/W:重试间隔秒、/IPG:包间隔毫秒、/MT 多线程 |
| 退出码 | 0-7 均属正常,8 及以上才表示有失败 |
典型使用场景
- 跨盘或跨机房的大批量数据迁移,需要事后核对复制结果
- 定期同步任务要留日志,便于比对每次的差异
- 业务高峰期复制需限制带宽占用,避免影响线上服务
- 海量小文件复制通过多线程提升整体吞吐
- 被占用文件较多的场景,收窄重试次数以避免任务卡死
常用示例
常用示例
robocopy D:\Big E:\Big /E /Z /R:3 /W:5 /MT:16 /IPG:10 /LOG:E:\copy.log /TEE
:: 追加到同一日志,便于按日累积
robocopy D:\Big E:\Big /E /R:2 /W:2 /LOG+:E:\copy.log
:: 精简日志:不记录文件名与目录名,只保留统计
robocopy D:\Big E:\Big /E /NFL /NDL /NP /LOG:E:\brief.log
:: 结果码 0-7 都算成功,8 及以上才是失败参数读法
| 参数 | 作用 | 注意 |
|---|---|---|
| /LOG:文件 | 写入日志并覆盖 | 长任务必配,便于事后核对 |
| /LOG+:文件 | 追加写入日志 | 适合按日累积同一份日志 |
| /TEE | 同时输出到屏幕 | 交互执行时便于观察进度 |
| /NFL /NDL | 不记录文件名与目录名 | 日志体积显著变小 |
| /R:n | 失败重试次数 | 默认值极大,必须显式收窄 |
| /W:n | 重试间隔秒数 | 与 /R 配合控制卡顿时长 |
| /MT | 多线程复制 | 大文件多时提速明显 |
| /IPG:n | 包间隔毫秒 | 用于限制带宽占用 |
robocopy 退出码 0-7 均属正常范围,8 及以上才表示有文件复制失败,脚本判断要注意这个口径。
被占用文件较多时 /Z 支持断点续传式重试,但会降低速度,只在确实需要的场景启用。