robocopy 镜像同步
镜像参数让目标目录与源目录保持完全一致:源里新增的被复制过去,源里修改过的被更新,源里已删除的在目标里也会被删掉。它等价于「包含所有子目录」加上「清理目标中多余内容」两个动作的组合,因此特别适合做备份目录的持续同步与数据搬迁,但也意味着误用的代价很高。稳妥的用法是先做一次预演,把将要复制和将要删除的清单看一遍,确认无误再正式执行,并把过程写入日志留档。
基本信息
| 适用平台 | Windows Vista / Server 2008 及以后,系统自带 |
|---|---|
| 语法 | robocopy 源 目标 /MIR [附加选项] |
| 行为 | 等价于包含空目录复制与清理目标多余项两部分,目标是完全一致 |
| 预演 | 加 /L 只列出将执行的动作而不落盘,只读且安全 |
| 常用配套 | /R: 重试次数、/W: 等待秒数、/Z 断点续传、/MT 多线程、/LOG 与 /TEE 日志 |
| 退出码 | 0-7 属正常,8 及以上表示存在失败 |
典型使用场景
- 定期备份:配合计划任务让备份目录与源保持一致,避免历史垃圾堆积
- 数据迁移:搬迁完成后让两端内容完全对齐,便于切换
- 站点同步:把静态资源目录镜像到另一块盘或另一台服务器的共享目录
- 发布目录同步:用镜像方式去掉上一版本残留的文件
- 磁盘替换:新盘挂载后一次性镜像,比手工挑选文件更可靠
- 排障对比:预演模式下能看到两端差异,用于确认版本是否一致
常用示例
常用示例
:: 预演:只看将要复制与删除的内容,不动数据
robocopy D:\Data E:\Backup\Data /MIR /L /TEE
:: 正式镜像:带重试、断点续传、多线程与日志
robocopy D:\Data E:\Backup\Data /MIR /Z /R:2 /W:2 /MT:16 /LOG:D:\rc.log /TEE
:: 镜像但跳过某些目录
robocopy D:\Data E:\Backup\Data /MIR /XD D:\Data\Cache /XD D:\Data\Temp
:: 镜像并排除特定文件
robocopy D:\Data E:\Backup\Data /MIR /XF *.tmp *.bak
:: 让日志追加而不是覆盖
robocopy D:\Data E:\Backup\Data /MIR /LOG+:D:\rc.log镜像相关选项
| 选项 | 作用 | 说明 |
|---|---|---|
| /MIR | 镜像,目标与源保持一致 | 会删除目标中多余的项,风险最高 |
| /L | 只列出将执行的动作 | 预演必备,建议每次正式执行前先跑 |
| /XD | 排除指定目录 | 缓存与临时目录通常不需要同步 |
| /XF | 排除指定文件 | 排除临时文件与备份文件 |
| /PURGE | 删除目标中源已不存在的项 | 镜像已包含该行为 |
| /MOT | 只在目标有变化时才复制 | 减少无谓写入 |
镜像包含删除动作,且删除发生在目标侧,无法通过撤销恢复。执行前务必确认「源是正确的那一侧」,并用预演模式核对将删除的清单,目标目录不要写成盘符根目录。
做定期备份时建议把日志参数设为追加形式并配合日志轮转,这样一旦发现某个文件在某天被误删,可以从日志里查到具体时间点,再决定是否从更高层备份恢复。