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
解释：
1. `E:\DFS_SHARE` 源目录（NVMe三副本存储本地路径）
2. `D:\DFS_BACKUP` 备份目标（RAID6机械归档盘）
3. `/MIR` 镜像同步（源删除的文件，目标同步删除；测试环境先用模板2！）
### 模板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文件
运行时实时跟踪日志
Get-Content .\robocopy_20260730.log -Wait
## 六、重点避坑（对应你FreeFileSync遇到的NTFS权限问题）
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一键脚本吗？