后台带权限迁移NTFS文件系统——Robocopy和XCP小心得

一、背景

最近遇到一个CIFS文件数据迁移的测试。

用户用户使用AD域环境,要求在不同的存储设备之间迁移Windows桌面中使用的CIFS数据(域账号不变)。

用户要求NTFS权限必须正确,并且是后台拷贝加最后割接。(不是让每个用户自行登录手动拷贝。)

本文记录异构存储环境下怎么做数据迁移的一些心得,涉及两种工具——微软的Robocopy和Netapp的XCP。

二、工具介绍

Robocopy

Robocopy 是windows server 2003以后就集成在系统的工具,使用它的目的通常就是为了需求复杂的拷贝,比如本次用户要求的复制NTFS权限。

img

如上图,随便打开自己电脑,打开CMD,输入Robocopy,发现可以使用。

XCP

XCP是Netapp公司的一种命令行拷贝工具。是可以免费使用的(但需要申请license)。

img

如上图,网址为:xcp.netapp.com。

三、重要结论

1、Windows 2012和Windows 2008中的Robocopy差异,建议2008。

Windows 2012下只要用上Robocopy 的/copy:S参数,哪怕文件没有任何改变,仍然会把所有文件再拷贝一遍。Windows 2008 下,如果文件未发生变化,则不会拷贝。

如果一定要是Windows 2012做迁移。可以采用配合方案:割接开始后,先用XCP 加-acl -nodata参数进行拷贝/同步,再使用robocopy /copy:DAT进行配合做最后更新。(不能/copy:DATS)

2、Robocopy拷贝的带权限信息的文件,如未发生变化,XCP能识别,不会重复拷贝。

3、只用XCP一种工具也可以实现割接前的常规数据拷贝和割接时的最后验证。

注:为了数据完整和安全性,还是推荐最终用Robocopy验证。

四、Robocopy参数精讲

范本:Robocopy /e /zb /COPY:DATSOU /mt \share_source\fs1 \share_destination\fs2 /r:0 /w:0

1、/e /z /b

img

img

必备参数

2、/COPY:DATSOU

img

img

这里的SOU就是本案例中要增加的权限的关键。这里是可以单独指定的。

3、/mt

img

加/MT参数可以大大提高同步速度,建议开启。

4、/r /w

img

可以设置为0,加快单次扫描的速度。在割接之前,同步是要进行多次的。

五、XCP参数精讲

范本:XCP sync -acl -nodata – noatime -fallback-user domain\user1 -fallback-group “domain\Domain Users” \share_source\fs1 \share_destination\fs2 -parallel 32 -l

1、-acl

加这个参数才会拷贝权限。

2、-nodata、-noatime(类似的,还可以-noctime等)

不比较源文件和目的文件的内容,好处是能够加快执行速度。这个设置会忽略源文件和新文件大小相同、但实际内容不同的情况。举例,某次拷贝时,假设1个txt文件中有一个参数是10ms,拷贝完成。后期,若原文件被修改为12ms,再次同步时,会忽略这个文件。但有例外,如果原始文件的size变化了(比如在原始txt文件中再多加一行内容),则会识别和重新拷贝。

3、-fallback-user、-fallback-group

如果设置了-ACL,这两个参数是必选的,它的本意是应用于这个场景:执行XCP的用户未加入域,而目的地址是有域的,需要在此定义拷贝完之后的域用户和用户组身份信息。

对于本次测试,域用户不变,这两个参数是可以任意设置为不相关的内容,不会影响运行结果。

4、-parallel 32

设置并发线程,默认是8,迁移主机的cpu配置,适当调高这个数字,可以加快扫描和拷贝的速度。设置16个就会在任务管理器看到16个XCP.exe进程。

实际测试中,设为32和16差异不大,都比8明显快。

5、-l

输出拷贝信息

六、其它信息

1、XCP安装需要VC++库,在下载文件中会包含。

2、除本文所提到XCP、Robocop外,还有Fastcopy、HDS厂商的CMT等工具,也可实现带权限后台拷贝。

七、信息扫盲

最后,对于初级人士,我写了一点知识扫盲。

带权限迁移

NTFS权限是微软的文件系统格式,从NT以后就一直沿用至今了。和本测试的相关点在于权限。随便打开一个文件夹邮件点属性,然后点安全。这里可以看到gujin这个用户对这个文件有完全控制权限,这样gujin就可以对它做读取、修改、删除等操作,如下图所示。

img

与此类似,用户公司中的每个员工原始只对自己个人,或者所隶属的用户组能访问的文件有访问权限权限,彼此之间是不能交叉访问的。如果迁移项目做完,但是权限信息丢失了,比如所有文件都变成everyone可访问,那无疑是失败的结果。

普通拷贝的局限——谁拷贝,权限就是谁的。

如果用具有高级权限的账号(比如说administrator)普通拷贝某用户A的数据,从旧存储位置拷贝到新存储位置。会发现新存储上的这份文件的所有者是administrator,A是没有权限的。

如果A用户自己映射新、旧两个位置,拷贝文件,权限是可以保留的。但这种方法过于繁琐,可行性太差。

此条目发表在IT技术分类目录,贴了, 标签。将固定链接加入收藏夹。