# Robocopy 完整教程（Windows Server 2025 / Win10/11 通用）

\## 重要前置说明  
✅ \*\*Robocopy 是 Windows 系统自带工具，不需要安装！\*\*  
系统路径：`C:\\Windows\\System32\\robocopy.exe`  
Windows Server 2008R2 及以上、Win10/11 默认内置，无需下载安装。  
&gt; 你的场景：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` | 详细输出，查看哪些文件被复制 |

&gt; ⚠️ 重点：\*\*`/COPYALL` 必须管理员权限运行，否则权限复制失效！\*\*  
&gt; ⚠️ 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
```

&gt; 没有 `/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. 1. 保存脚本  
    2. \*\*Windows任务计划程序\*\*新建任务  
     - 勾选【使用最高权限运行】（重中之重，否则ACL权限复制失败）  
     - 设置触发周期（每日凌晨执行）  
     - 操作：启动程序，选择这个bat文件
2. 运行时实时跟踪日志  
    ```
    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共享复制权限存在缺陷\*\*；  
&gt; 建议：图形调试用FreeFileSync，\*\*生产定时自动备份使用Robocopy脚本\*\*

\## 八、进阶：搭配VSS，同步被占用/打开的文件  
如果文件被用户打开占用，Robocopy默认跳过，可以搭配系统卷影副本，需要我给你完整的VSS+Robocopy一键脚本吗？