适用于: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的共享路径:
关闭注册表编辑器,重新启动服务器,迁移共享权限成功。