迁移机制及流程

最近更新时间: 2023-03-22 09:41:33

1.迁移机制原理
COS 迁移工具是有状态的,已经迁移成功的会记录在 db 目录下,以 KV 的形式存储在 leveldb 文件中。每次迁移前对要迁移的路径,先查找下 db 中是否存在, 如果存在,且属性和 db 中存在的一致, 则跳过迁移,否则进行迁移。这里的属性根据迁移类型的不同而不同,对于本地迁移,会判断 mtime。对于其他云存储迁移与 Bucket 复制,会判断源文件的 etag 和长度是否与 db 一致。因此,我们参照 db 中是否有过迁移成功的记录,而不是查找 COS,如果绕过了迁移工具,通过别的方式(如 COSCMD 或者控制台)删除修改了文件,那么运行迁移工具由于不会察觉到这种变化,是不会重新迁移的。
2.迁移流程步骤
1.读取配置文件,根据迁移 type,读取相应的配置分节,并执行参数的检查。
2.根据指定的迁移类型,扫描对比 db 下对所要迁移文件的标识,判断是否允许上传。
3.迁移执行过程中会打印执行结果,其中 inprogress 表示迁移中,skip 表示跳过,fail 表示失败,ok 表示成功, condition_not_match 表示因不满足迁移条件而跳过的文件(如 lastmodifed 和 excludes)。失败的详细信息可以在 log 的 error 日志中查看。
4.整个迁移结束后会打印统计信息,包括累积的迁移成功量,失败量,跳过量,耗时。对于失败的情况,请查看 error 日志,或重新运行,因为迁移工具会跳过已迁移成功的,对未成功的会重新迁移。