Robocopy 完整教程(Windows Server 2025 / Win10/11 通用)
## 重要前置说明
✅ **Robocopy 是 Windows 系统自带工具,不需要安装!**
系统路径:`C:\Windows\System32\robocopy.exe`
Windows Server 2008R2 及以上、Win10/11 默认内置,无需下载安装。
> 你的场景:DFS 文件服务器、NTFS权限完整备份、配合 Veeam,替代 FreeFileSync 跨盘同步、保留ACL。
---
## 一、快速验证是否可用
以**管理员身份打开 PowerShell / CMD**
robocopy /?
弹出帮助文档 = 正常可用。
## 二、核心参数对照表(适配你的 DFS 文件服务器场景)
### 最关键参数(复制NTFS权限必备)
| 参数 | 作用 |
|------|------|
| `/MIR` | 镜像模式:目标和源保持一致;新增文件复制、删除目标多余文件(谨慎!) |
| `/COPYALL` | 复制【所有文件信息】:数据、属性、时间戳、**所有者、组、DACL、SACL**(完整NTFS安全权限) |
| `/COPY:DATSOU` | 和 `/COPYALL` 等效;D=数据 A=属性 T=时间 S=安全ACL O=所有者 U=审计SACL |
| `/B` | 备份模式,绕过文件权限限制,可锁定文件(VSS快照文件/被占用文件必备) |
| `/R:3` | 失败重试3次(默认100万次,必须修改) |
| `/W:5` | 重试间隔5秒 |
| `/NP` | 不显示进度百分比(日志整洁) |
| `/LOG:D:\sync_log\robocopy_log.txt` | 输出日志到文件 |
| `/V` | 详细输出,查看哪些文件被复制 |
> ⚠️ 重点:**`/COPYALL` 必须管理员权限运行,否则权限复制失效!**
> ⚠️ SMB共享UNC路径(`\\shuncom.local\dfs`) 无法稳定复制【所有者】,优先使用本地盘符E: D:
## 三、常用模板命令(直接复制使用)
### 模板1:标准镜像备份(推荐你的业务:NVMe E盘 → RAID6 D盘归档)
管理员CMD/PowerShell执行
robocopy E:\DFS_SHARE D:\DFS_BACKUP /MIR /COPYALL /B /R:3 /W:5 /V /LOG:D:\robocopy_log.txt
### 模板2:增量同步【不删除目标多余文件,安全测试用】
robocopy E:\DFS_SHARE D:\DFS_BACKUP /COPYALL /B /R:3 /W:5 /V /LOG:D:\robocopy_log.txt
> 没有 `/MIR`:只会新增/更新文件,不会删除目标目录旧文件,适合初次测试。
### 模板3:只同步新增修改文件,排除部分文件夹
robocopy E:\DFS_SHARE D:\DFS_BACKUP /COPYALL /B /R:3 /W:5 /XD "E:\DFS_SHARE\临时文件" "E:\DFS_SHARE\缓存"
`/XD` 排除指定目录
## 四、返回码判断(脚本自动化关键)
Robocopy退出代码**0~7 均为正常,不是错误**
- 0:无文件需要复制
- 1:文件成功复制
- 8及以上:发生错误(权限失败、磁盘离线等)
PowerShell判断示例:
robocopy E:\DFS_SHARE D:\DFS_BACKUP /MIR /COPYALL /B
$exitCode = $LASTEXITCODE
if($exitCode -ge 8){
Write-Host "同步出现严重错误!"
}else{
Write-Host "同步完成,正常"
}
## 五、适配你环境的【定时自动同步方案】
### 方案1:创建bat脚本,任务计划程序调用,编码选择:ANSI(重点!不要 UTF8)
新建 `DFS_Backup.bat`
@echo off
chcp 936 >nul
setlocal enabledelayedexpansion
:: 路径不要带中文,或者确保ANSI保存;建议后续尽量使用英文目录名规避编码坑
set "Source=\\shuncom.local\dfs\99.顺舟云盘"
set "Target=D:\其他资料备份\Shun-Users\192.168.0.84\Shares\Shun-Users"
set "LogDir=D:\其他资料备份\Shun-Users"
set "LogPath=%LogDir%\robocopy_%date:~0,4%%date:~5,2%%date:~8,2%.log"
:: 自动创建日志目录
if not exist "%LogDir%" mkdir "%LogDir%"
robocopy "%Source%" "%Target%" ^
/MIR /COPY:DATS /B /R:3 /W:5 /V /NP /LOG:"%LogPath%"
:: 退出码判断
set "exitcode=%errorlevel%"
echo.
echo ==============================================
echo Robocopy执行返回码:%exitcode%
echo 0~7 = 正常;>=8 = 异常错误
echo ==============================================
pause
1. 保存脚本
2. **Windows任务计划程序**新建任务
- 勾选【使用最高权限运行】(重中之重,否则ACL权限复制失败)
- 设置触发周期(每日凌晨执行)
- 操作:启动程序,选择这个bat文件- 运行时实时跟踪日志
## 六、重点避坑(对应你FreeFileSync遇到的NTFS权限问题)Get-Content .\robocopy_20260730.log -Wait
1. ❌ **普通权限运行 → /COPYALL失效,NTFS安全属性不复制**
✅ 必须管理员启动CMD/PowerShell,任务计划勾选【最高权限】
2. ❌ 直接同步 `\\shuncom.local\DFS` 网络UNC共享
✅ 优先在文件服务器本机使用本地盘符E:/D:同步;SMB协议限制无法完整迁移文件所有者SID
3. ❌ 目标分区不是NTFS
✅ exFAT/FAT32不支持ACL,权限直接丢失
4. ❌ 目标目录开启权限继承
同步完成后,新文件上层继承权限会覆盖单独设置的文件ACL,需要业务侧规划权限模型
## 七、Robocopy VS FreeFileSync(你的场景对比)
1. Robocopy:Windows原生,NTFS ACL/所有者复制稳定性更强,适合服务器长期自动化备份;
2. FreeFileSync:图形界面友好,但**跨SMB共享复制权限存在缺陷**;
> 建议:图形调试用FreeFileSync,**生产定时自动备份使用Robocopy脚本**
## 八、进阶:搭配VSS,同步被占用/打开的文件
如果文件被用户打开占用,Robocopy默认跳过,可以搭配系统卷影副本,需要我给你完整的VSS+Robocopy一键脚本吗?