移动和复制为什么权限不一样
同一个卷内移动文件,本质只是改路径(重命名),对象的权限条目被完整保留;一旦跨卷或跨机器,移动就变成「复制后删除」,新对象按目标目录的继承规则重新获得权限,原有的显式授权全部丢失。复制在任何情况下都遵循继承规则。这解释了大量「在 D 盘好好的,复制到 E 盘就打不开」的工单:问题不在文件,而在目标目录给的权限不同。
基本信息
| 适用平台 | Windows 的 NTFS 卷(FAT32/exFAT 不支持权限) |
|---|---|
| 同卷移动 | 保留原有权限与所有者(重命名语义) |
| 跨卷移动 | 按复制处理,新对象继承目标父目录权限 |
| 复制 | 继承目标父目录权限,显式 ACE 不随文件带走 |
| 保留权限的迁移 | robocopy 加 /COPYALL(含权限、所有者与审核信息) |
| 补齐权限 | robocopy /SECFIX 对已有目录重新套用安全设置 |
典型使用场景
- 文件服务器扩容:跨卷迁移后权限全乱,需要按保留权限的方式重做
- 用户投诉处理:拖拽复制后打不开,解释清楚继承规则并给出正确迁移方式
- 部门目录重组:大批目录换位置,必须提前规划目标目录的权限继承
- 备份与恢复:从备份还原时需要一并还原权限,避免全量重新授权
- 跨机器迁移:不同域或不同机器的账户无法解析,要提前规划账户映射
常用示例
常用示例
REM 跨卷迁移并保留权限(推荐)
robocopy D:\Src E:\Dst /E /COPYALL /R:2 /W:2 /XJ /NP /LOG:D:\migrate.log
REM 只复制数据不留源文件(移动语义)
REM robocopy D:\Src E:\Dst /E /COPYALL /MOVE /R:2 /W:2 /LOG:D:\move.log
REM 对已复制过去的目录补齐权限
robocopy D:\Src E:\Dst /E /SECFIX /R:2 /W:2
REM 同卷内移动:用 move 或 Move-Item 即可,权限随对象保留
REM Move-Item -LiteralPath D:\A\data -Destination D:\B\data
REM 迁移后核对两边权限
REM icacls E:\Dst\data | findstr /i "DOMAIN\\Group"操作与权限结果对照
| 操作 | 权限结果 | 注意 |
|---|---|---|
| 同卷移动 | 保留原 ACL 与所有者 | 最接近「什么都没变」 |
| 跨卷移动 | 继承目标目录权限 | 原显式授权丢失,需重新授权 |
| Ctrl+C 后粘贴 | 继承目标目录权限 | 最常见的工单来源 |
| robocopy /COPYALL | 复制权限、所有者与审核信息 | 需管理员;跨域时账户需可解析 |
| 复制到 FAT32/exFAT | 无任何 NTFS 权限概念 | 权限、加密与压缩属性一并丢弃 |
| 网络共享间复制 | 取决于协议与工具 | SMB 会按目标端继承规则处理 |
同卷移动是元数据操作,几乎瞬时完成;跨卷移动会真的读写全部数据,大目录可能耗时很久且中途中断会留下「源与目标各有一半」的中间状态,因此迁移优先用支持断点与日志的复制工具。
跨域或跨机器复制时,源 ACL 里的账户在目标环境可能不存在,权限条目会变成无法解析的 SID:迁移前先确认目标域存在对应账户,或按目标环境的账户体系重新授权。
迁移前后核对
迁移前后核对
icacls D:\Src\data | Select-String -Pattern 'DOMAIN' # 源目录的关键权限条目
icacls E:\Dst\data | Select-String -Pattern 'DOMAIN' # 目标目录的对应条目
(Get-Acl E:\Dst\data).Access | Where-Object { $_.IdentityReference -like 'S-1-5-*' } # 找出未解析 SID
Get-ChildItem E:\Dst -Recurse -File | Measure-Object # 校验文件数量与总量是否与源一致用资源管理器拖拽做大目录的跨卷移动有风险:中途失败或取消会留下部分已复制、部分已删除的混乱状态,清理与恢复都麻烦。大批量迁移一律用带日志与重试参数的命令行工具。