robocopy 备份模式是什么
robocopy 默认只搬文件内容与时间戳,不搬 ACL;要做“完整备份式”复制,得用 /COPYALL 把数据、属性、时间戳、所有者和审核信息一起搬过去。/B(备份模式)让复制以备份权限读取文件,从而越过“拒绝访问”的 ACL 限制——这需要账户持有本机的备份操作员权限,管理员默认具备。两者组合是文件服务器迁移的常见起手式。
基本信息
| 适用平台 | Windows Vista 起内置;Server 2008 及以后通用 |
|---|---|
| 权限相关 | /COPYALL = D A T S O U 全量;/SEC 只带 ACL;/SECFIX 只修目标 ACL |
| 备份模式 | /B 备份模式,/ZB 先常规失败再自动切备份模式 |
| 用途标记 | /MIR 镜像删除多余文件,仅同步目录时用 |
| 重要提醒 | robocopy 退出码 0-7 都算成功,≥8 才是失败 |
| 日志 | /LOG 文件 /TEE /NP 控制日志输出 |
典型使用场景
- 文件服务器迁移:连权限和所有者一起搬到新卷
- 给共享目录做完整备份,要求还原后权限不变
- 跳过个别“拒绝访问”的文件,保证整体复制能跑完
- 迁移后用 /SECFIX 只补权限,不重新搬数据
- 跨卷搬大量小文件,比资源管理器复制更稳更快
常用示例
常用示例
robocopy D:\Share E:\Share /E /COPYALL /ZB /R:2 /W:2 /LOG:D:\rc.log # 完整复制含权限,失败快速放过
robocopy D:\Share E:\Share /E /SECFIX /L /LOG:D:\fix.log # /L 只列结果不实际写入,先演练
robocopy D:\Share E:\Share /E /SEC /B /MT:16 # 只带 ACL,多线程加速
robocopy D:\Share E:\Share /MIR /Z /R:0 /W:0 # 镜像同步,不重试不等待
robocopy D:\Share E:\Share /E /COPYALL /XF *.tmp /XD cache # 排除临时文件与缓存目录
if %ERRORLEVEL% LSS 8 echo 复制成功/COPYALL 与权限读法
| 字符 | 搬什么 | 漏掉的后果 |
|---|---|---|
| D | 数据内容 | 文件为空或不完整 |
| A | 文件属性 | 只读、隐藏位丢失 |
| T | 时间戳 | 增量备份误判为全部更新 |
| S | ACL 安全描述符 | 目标权限退回继承,出现越权或无法访问 |
| O | 所有者 | 所有者被改成执行复制的人 |
| U | 审核信息 | 审计规则丢失,合规检查不过 |
robocopy 的成功退出码是 0 到 7(8 表示有文件失败),脚本里必须显式判断,否则会把“有文件没复制成功”当成顺利完成。
/MIR 会删除目标端多出来的文件,源端若挂了部分目录,目标端对应数据会被一起删掉;正式跑之前先带 /L 演练并确认源端完整。