操作场景
该任务指导您在 Windows 云服务器上,将源文件存储(Cloud File Storage,CFS)文件系统中的数据拷贝至目标 CFS 文件系统。适用于 CFS 实例间数据迁移、文件系统类型切换、跨地域数据搬迁等场景。本文推荐使用 robocopy 工具完成数据拷贝,支持断点续传和增量同步。
前提条件
已创建源 CFS 文件系统和目标 CFS 文件系统,操作步骤详见 创建文件系统及挂载点。
已创建 Windows 云服务器,详见 快速配置 Windows 云服务器,且与源和目标 CFS 文件系统在同一 VPC 下,或通过云联网等方式使源和目标 CFS 所在 VPC 互通。
已在 Windows 云服务器安全组开放对源、目的文件系统 IP 地址出入流量的相关端口,具体信息如下:
网络协议 | 端口方向 | 文件系统协议类型 | 开放端口号 |
TCP | 出+入 | SMB/CIFS | 445 |
TCP | 出+入 | NFS 3.0 | 111、892、2049 |
已在源、目的文件系统的权限组中开放 Windows 云服务器的 IP 地址对源、目的文件系统进行读写,配置详见 权限管理。
说明:
Windows 客户端不支持挂载 Turbo 标准型、Turbo 性能型,同时不支持使用 NFS 4.0协议挂载。
注意事项
拷贝过程中建议暂停源端的写入操作,或者同时写入目的文件系统和源文件系统相同路径,来保证数据一致性。
大文件量迁移时,建议通过
/MT 参数增加 robocopy 并行线程数以提升效率,建议设置为8 - 32。跨可用区拷贝可能影响性能,建议源 CFS 和目标 CFS 与 Windows 云服务器在同一可用区。
拷贝完成后,请验证数据完整性再进行业务切换,确认业务正常后方可删除源文件系统。
操作步骤
步骤1:挂载源和目标 CFS 文件系统
步骤2:使用 robocopy 拷贝数据(推荐)
推荐使用 robocopy 工具进行数据拷贝。robocopy 是 Windows 内置的可靠文件复制工具,可绕过 Windows 空间预检机制直接触发 CFS 底层扩容,同时支持断点续传、增量同步和多线程加速。
注意:
Windows 直接拖拽或使用 Ctrl+C 复制文件到 CFS 文件系统时,系统会预检目标空间是否充足。若 CFS 新创建,初始容量 10GiB,需要传输 10GiB 以上的大文件,预检不通过会导致拷贝失败,且无法触发 CFS 底层自动扩容。使用 robocopy 可绕过此预检机制。
以管理员身份运行 cmd,根据您的使用场景选择以下命令快速执行。以下命令中,S:\\ 指代源文件系统,T:\\ 指代目的文件系统,您可根据需要指定子目录路径。
快速拷贝(最简命令)
适合小数据量快速迁移,仅复制所有文件和子目录。
robocopy S:\\ T:\\ /E
带重试、多线程和日志的拷贝命令
适合大多数迁移场景,包含断点重试、多线程加速和日志记录。
robocopy S:\\ T:\\ /E /COPY:DAT /DCOPY:T /R:5 /W:10 /MT:8 /V /LOG:copylog.txt /TEE
镜像同步(增量同步)
使目标端与源端完全一致(会删除目标端中源端不存在的文件),适合增量同步或定期同步。
robocopy S:\\ T:\\ /E /COPY:DAT /DCOPY:T /R:5 /W:10 /MT:8 /MIR /V /LOG:synclog.txt /TEE
注意:
跨协议类型拷贝文件系统内数据时,建议使用
/COPY:DAT 仅复制数据、属性和时间戳,尽量不要使用 /COPYALL 参数。/COPYALL 会尝试复制所有文件信息(包括 ACL、Owner 等安全信息),由于权限不兼容或协议差别,使用 /COPYALL 可能导致拷贝失败。/MIR 参数会删除目标端中源端不存在的文件,实现镜像同步。请确认目标端无需保留的独有文件后再使用此参数。如需仅新增不删除,可使用 /XO(排除较旧文件)替代 /MIR。参数说明
根据使用场景,可按需调整以下参数:
参数 | 说明 | 适用场景 |
/E | 复制包含空目录在内的所有子目录 | 基础参数,所有场景必用 |
/MIR | 镜像同步,使目标端与源端完全一致(含删除) | 增量同步/定期同步 |
/COPY:DAT | 复制文件数据(D)、属性(A)、时间戳(T) | 跨协议拷贝必用 |
/DCOPY:T | 复制目录时间戳 | 保留目录时间信息 |
/R:5 | 失败重试次数为5次 | 网络不稳定时建议使用 |
/W:10 | 重试间隔为10秒 | 配合 /R 使用 |
/MT:8 | 使用8个线程并行复制,可根据机器性能调整(建议8 - 32) | 大文件量迁移时提升效率 |
/V | 输出详细日志,包含跳过文件的说明 | 排查问题时使用 |
/LOG:file | 将日志输出到指定文件 | 建议始终使用 |
/TEE | 同时在控制台和日志文件中输出进度 | 监控拷贝进度 |
/XO | 排除较旧文件,仅复制源端新增或更新的文件 | 仅增量不删除 |
/XX | 排除多余文件,不删除目标端已有文件 | 保护目标端数据 |
/IS | 包含相同文件,覆盖目标端已存在的文件 | 强制覆盖 |
步骤3:验证数据完整性
1. 在 Windows 云服务器中执行以下命令,对比源和目标文件数量。
dir S:\\ /s /a-d | find "File(s)"dir T:\\ /s /a-d | find "File(s)"
2. 在 Windows 云服务器中执行以下命令,对比源和目标目录大小。
dir S:\\ /s | find "Dir(s)"dir T:\\ /s | find "Dir(s)"
3. 确认文件数量和目录大小一致后,数据拷贝完成。
说明:
若文件数量或大小不一致,请检查 robocopy 日志文件中是否有错误记录,修复后重新执行增量同步。
步骤4:卸载文件系统
数据拷贝完成并验证无误后,卸载源和目标 CFS 文件系统。
执行以下命令,卸载源和目标 CFS 文件系统。
net use S: /delnet use T: /del
执行以下命令,卸载源和目标 CFS 文件系统。
umount S:umount T: