NTFS权限迁移与共享权限迁移

适用于:Windows 10 神州网信政府版

1.概要:

在一些场景下,例如,本机更换磁盘,将原文件夹由D盘迁移至E盘,或者跨设备迁移,将旧设备上面D盘文件夹,迁移至新设备上面E盘文件夹,可能旧设备上面配置了很多文件夹权限,希望一起迁移过去,此时就需要执行文件内容+权限的迁移。

2.操作步骤/更多信息:

迁移NTFS权限

使用xcopy、robocopy、icacls完成NTFS权限迁移。

xcopy

相比copy命令,xcopy可以实现更加灵活的拷贝控制,例如控制,只拷贝某些类型的文件,只拷贝某日期后修改过的文件,只拷贝文件目录结构,可拷贝文件夹及子文件夹内容,拷贝文件属性及权限,重启模式拷贝,基于标记进行筛选过滤,结合bat实现文件增量复制等。

xcopy Z:\it E:\it /O /X /E /H /K

NTFS权限可以完整无缝权限过来,目标文件夹的安全设置将被继承,共享状态丢失。

命令说明

Xcopy 源文件或源文件夹  目标文件或目标文件夹,目标文件夹是否存在皆可

注 : 实测X copy可以接受映射为网盘的路径,也直接接受UNC路径。

/O           复制文件所有权和ACL 信息。

/X           复制文件审核设置(隐含 /O)。

/E           复制目录和子目录,包括空目录。与 /S /E 相同。可以用来修改 /T。

/H           也复制隐藏文件和系统文件。

/K           复制属性。

robocopy

robocopy兼备xcopy的功能,但是robocopy做到了比xcopy更好的性能,更灵活的管理。

robocopy可以使用多个线程进行复制,在重试逻辑上面,robocopy除了可以做到重启模式,还可以做到在一定时间内,默认30秒,出现网络中断,不会导致复制中断,复制会在这个时间内继续次数尝试,直到成功复制。

xcopy对于复制时间筛选只能做到,复制指定修改时间之后的文档 ,而robocopy可以做到监视达到指定修改次数,或修改文件多长时间后再进行复制,复制时可以对来源或目标的文件夹层级,属性,时间做更多灵活的筛选和控制,达到指定需求在进行复制。

robocopy对于自动化增量复制的处理也更加强大和方便,robocopy默认情况下复制,如果检测到目录已复制过,下次复制则会仅复制增量部分,可以支持将编写的robocpy命令生成任务计划 多次运行,可以输出详细的日志,复制过程可以显示复制进度。

robocopy \\192.168.1.3\it e:\it /e /efsraw /copyall

NTFS权限可以完整无缝权限过来,共享状态丢失。

命令说明

robocopy 源文件或源文件夹  目标文件或目标文件夹,目标文件夹是否存在皆可

/COPY:复制标记: 要复制的文件内容(默认为 /COPY:DAT)。  (复制标记: D=数据,A=属性,T=时间戳,S=安全=NTFS ACL,O=所有者信息,U=审核信息 )。

/COPYALL : 复制所有文件信息(等同于 /COPY:DATSOU)

/E : 复制子目录,包括空的子目录。

/S : 复制子目录,但不复制空的子目录。

/EFSRAW : 在 EFS RAW 模式下复制所有加密的文件。

注:

如不添加/E 或/S参数,默认robocopy不会去复制源文件子目录及子目录内容。

如果希望复制加密属性,请一定要添加/EFSRAW参数,如不添加,RoboCopy会陷入重试状态。

robocopy可以接受映射为网盘的路径,也直接接受UNC路径。

建议执行robocopy或者xcopy的账户,至少要对源端文件夹NTFS权限以及共享权限具备更改权限,对于目标文件夹具备写入权限,建议最好临时将迁移账户加成NTFS完全控制权限,迁移完成再将权限去掉。

icacls

icacls工具用于显示或修改指定文件上的随机访问控制列表 (DACL),并将存储的 DACL 应用于指定目录中的文件。可以利用icacls工具将NTFS ACL备份,当文件迁移完成后,将ACL直接还原给文件目录和文件。

icacls c:\windows\* /save AclFile.txt /T
将 c:\windows 及其子目录下所有文件的ACL 保存到 AclFile。

icacls c:\windows\ /restore AclFile.txt
将还原 c:\windows 及其子目录下存在的 AclFile 内所有文件的 ACL。

命令说明

\* 代表备份原路径下文件+子目录+子目录文件权限。

/Save 要将acl文件保存到的文件,可以是txt文件。

/T 遍历所有子文件夹,以匹配文件/目录。这将适用权限的改变,在非常大的目录结构这可能需要一些时间。

通过注册表迁移共享权限

Windows共享权限存在注册表如下位置:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares

将此注册表项导出为reg文件。

在注册表编辑器中可以看到当前设备上的所有共享:

点击Security项,可以看到对应共享的权限设置,保存为注册表的二进制值。

源共享文件夹迁移后导入对应的共享权限注册表文件。

如果源共享文件夹迁移过来之后存放路径保持不变, 则不需要修改注册表键值, 如果迁移之后的存放路径有变化,则需要自己修改对应的注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares项中对应的Path路径,如图所示修改Users的共享路径:

关闭注册表编辑器,重新启动服务器,迁移共享权限成功。