前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用腾讯云CDM进行数据迁移后的数据校验

使用腾讯云CDM进行数据迁移后的数据校验

原创
作者头像
ictfox
修改2022-08-24 17:05:49
1.7K0
修改2022-08-24 17:05:49
举报
文章被收录于专栏:对象存储COS对象存储COS

1、需求描述

在CDM做数据迁移的过程中,客户基本述求都是要校验下数据是否完整迁移到腾讯云COS上?

常见的校验步骤有:

1)客户本地获取文件数和占用空间

  • 通过find命令获取本地文件数
  • 通过du命令获取占用空间

2)客户获取腾讯云COS上的文件数和占用空间

  • 通过控制台/COS工具/ListObjects接口获取COS上的对象数
  • 通过控制台/COS工具/ListObjects获取COS所有对象的总Size

但在上述的校验步骤中,也会遇到如下的困难:

1)客户操作步骤较多,需要专业的技术能力

2)文件数经常对不上

  • find命令指定参数可能漏掉隐藏文件
  • cp整个目录,或rsync从本地目录拷贝到CDM时会迁移隐藏文件
  • CDM迁移上云,各隐藏文件也会迁移上云

3)占用空间也经常对不上

  • 本地du命令获取的空间大小有放大(Block对齐)
  • COS上对象size精确到Byte
  • 隐藏文件占用COS空间

4)找不到哪些文件不一致

  • 文件数和占用空间对不上时,需要所有文件和对象做一遍对比,来找出不一致的文件

2、解决方案

CDM的迁移步骤一般为如下几步:

1)客户启动收到的CDM设备,并根据指示把设备提供的NFS服务共享目录mount到本地;

2)客户把本地文件或目录拷贝到mountpoint目录;(cp或rsync命令)

3)客户把CDM设备邮递到腾讯云指定园区;(客户期望上传的COS Bucket园区)

4)腾讯侧通过迁移工具把CDM上的文件上传到COS Bucket;(可以指定前缀)

针对CDM的迁移过程,我们提出了如下的数据校验方案:

1)获取客户拷贝到CDM设备的单文件或目录里的所有文件信息,包括文件path和size

2)获取迁移到COS Bucket上的对象信息,包括对象的key和size

3)基于上面两个步骤获取的信息做对比,输出差异

3、数据校验示例

文件:dir-files-info.py

  • 功能

获取指定目录下所有文件的信息,写入dir-files.info

只支持第一级目录的统计

  • 两种使用方式

1)当前目录执行,获取当前目录下所有文件的信息

https://github.com/ictfox/tools 上所有文件为例,本地目录名为ictfox-tools

在本地目录下执行,输出的所有目录和文件以./开头。

代码语言:txt
复制
# python3 cdm-migration-check/dir-files-info.py ./
Write log to file: ./dir-files.info

# cat ./dir-files.info
All directory info:
./ftp-to-cos,4,44955
./cdm-migration-check,3,16787

All files info:
./dir-files.info,0
./cos-auth-analyse-py3.py,15087
./cos-auth-analyse-py2.py,14958
./ftp-to-cos/grafana-dashboard.json,12930
./ftp-to-cos/README.md,1488
./ftp-to-cos/ftp-to-cos-agent.py,19395
./ftp-to-cos/ftp-to-cos-master.py,11142
./README.md,8
./cdm-migration-check/dir-files-info.py,1992
./cdm-migration-check/cdm-mig-check.py,5933
./cdm-migration-check/README.md,2862

目录部分各字段含义:目录名称,目录中文件数,总大小 文件部分各字段含义:文件路径,文件大小

2)指定目录执行,获取指定目录下所有文件的信息

同样以 https://github.com/ictfox/tools 上所有文件为例,本地目录名为ictfox-tools

在上层目录执行,指定目录为ictfox-tools,则输出的所有目录和文件以ictfox-tools开头。

代码语言:txt
复制
# python3 ictfox-tools/cdm-migration-check/dir-files-info.py ictfox-tools
Write log to file: ./dir-files.info

# cat dir-files.info
All directory info:
ictfox-tools/ftp-to-cos,4,44955
ictfox-tools/cdm-migration-check,3,16787

All files info:
ictfox-tools/dir-files.info,460
ictfox-tools/cos-auth-analyse-py3.py,15087
ictfox-tools/cos-auth-analyse-py2.py,14958
ictfox-tools/ftp-to-cos/grafana-dashboard.json,12930
ictfox-tools/ftp-to-cos/README.md,1488
ictfox-tools/ftp-to-cos/ftp-to-cos-agent.py,19395
ictfox-tools/ftp-to-cos/ftp-to-cos-master.py,11142
ictfox-tools/README.md,8
ictfox-tools/cdm-migration-check/dir-files-info.py,1992
ictfox-tools/cdm-migration-check/cdm-mig-check.py,5933
ictfox-tools/cdm-migration-check/README.md,2862

【备注】若迁移源为指定多个目录,则需要执行多次脚本,获取每个目录的文件信息。

文件:cdm-mig-check.py

  • 功能

对比原始目录文件信息和COS Bucket上的对象信息,输出不一致的文件对比信息。

  • 使用方式

1)全量对比

  • 目录关系对应一致,不指定COS上的prefix
代码语言:txt
复制
# python3 ictfox-tools/cdm-migration-check/cdm-mig-check.py dir-files.info
Write result to file:  cdm-mig-check.result

# cat cdm-mig-check.result
Diff in top directory:
 - Orig files: 3
 - Migd files: 3

Diff with prefix: ./ftp-to-cos
 - Orig files: 4, size: 44955
 - Migd files: 4, size: 44955

Diff with prefix: ./cdm-migration-check
 - Orig files: 3, size: 16787
 - Migd files: 2, size: 8795
./cdm-migration-check/README.md,2862
./cdm-migration-check/README.md,8862
./cdm-migration-check/dir-files-info.py,1992

上述对比结果中,可以看出来cdm-migration-check目录下的文件数和size对不上:

1」./cdm-migration-check/README.md:文件size两边对不上

2」./cdm-migration-check/dir-files-info.py:迁移后COS上没有该文件

  • CDM上传到COS时指定了prefix,则在上面命令执行时,可以通过参数-p指定prefix
代码语言:txt
复制
# python3 ictfox-tools/cdm-migration-check/cdm-mig-check.py dir-files.info -p backup
Write result to file:  cdm-mig-check.result

2)指定目录对比

当仅需要对指定一级目录做迁移校验时,可以通过参数-d指定directory

代码语言:txt
复制
# python3 ictfox-tools/cdm-migration-check/cdm-mig-check.py dir-files.info -d cdm-migration-check -p backup
Write result to file:  cdm-mig-check.result
Check files in directory:  cdm-migration-check

数据一致时的输出如下:

代码语言:txt
复制
# cat cdm-mig-check.result
Diff with prefix: ./cdm-migration-check
 - Orig files: 3, size: 16787
 - Migd files: 3, size: 16787

数据不一致时的输出如下:

代码语言:txt
复制
# cat cdm-mig-check.result
Diff with prefix: ./cdm-migration-check
 - Orig files: 3, size: 16787
 - Migd files: 2, size: 8795
./cdm-migration-check/README.md,2862
./cdm-migration-check/README.md,8862
./cdm-migration-check/dir-files-info.py,1992

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、需求描述
  • 2、解决方案
  • 3、数据校验示例
    • 文件:dir-files-info.py
      • 文件:cdm-mig-check.py
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档