校验分三层做
第一层是数量与容量:目标端与源端的文件数与总占用应当一致,差异能在秒级内发现。第二层是权限、属主与时间戳:这些属性不会体现在文件数上,却直接决定迁移后的可用性。第三层是内容校验和,代价最高,通常只对关键目录或抽样文件执行。再加上一个前提:迁移窗口内业务侧应冻结写入,否则差异会持续产生,校验永远无法收敛。
基本信息
| 适用平台 | Windows 与 Linux 文件服务器之间的搬迁 |
|---|---|
| 数量比对 | 文件计数与目录计数 |
| 容量比对 | 占用汇总与目录级差异 |
| 属性比对 | 权限清单、属主与时间戳 |
| 内容校验 | 抽样或关键目录的校验和 |
校验项与代价
| 校验项 | 方法 | 代价 |
|---|---|---|
| 文件数量 | 两端计数并比对 | 低 |
| 容量占用 | 目录级汇总比对 | 低到中 |
| 差异清单 | 试运行模式列出差异 | 中,不需复制 |
| 权限与属主 | 导出权限清单逐项比对 | 中 |
| 内容校验和 | 抽样或全量计算 | 高,随数据量线性增长 |
分层校验示例
分层校验示例
# 第一层:数量与容量
find /src -type f | wc -l; du -sh /src
find /dst -type f | wc -l; du -sh /dst
# 第二层:差异清单(不实际复制)
rsync -naHAX --delete --itemize-changes /src/ /dst/ | head -n 40
robocopy D:\src E:\dst /MIR /L /COPYALL /NP
# 第三层:抽样校验和比对
diff <(cd /src && sha256sum ./key/*.tar) <(cd /dst && sha256sum ./key/*.tar)权限清单比对
权限清单比对
# Windows:分别导出源端与目标端的权限清单
icacls D:\src /save src_acl.txt /T /C
icacls E:\dst /save dst_acl.txt /T /C
# Linux:导出 ACL 并比对摘要
getfacl -R -p /src > src_acl.txt
getfacl -R -p /dst > dst_acl.txt
wc -l src_acl.txt dst_acl.txt迁移期间若业务仍在写入,一致性校验只能作为过程监控而不可能收敛。可行做法是:先做一轮全量复制与校验,再在窗口内做一次增量同步冻结写入,最后只校验增量部分,可以显著缩短必须停写的时间。
符号链接、稀疏文件与硬链接在不同工具下有不同处理方式:有的展开为实际内容、有的保留链接,结果是容量与文件数都对不上。校验前先明确这些特殊对象的处理策略,并把预期差异写入清单,避免把设计差异当成失败。