全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

一致性校验工具

最近更新时间:2024-09-18 17:00:50

一致性校验工具支持在Windows、Linux、macOS系统上通过命令行方式校验源站与KS3数据一致性。

版本和运行环境

  • 版本

    • 当前版本:1.4.0

  • 运行环境

    • Windows、Linux、macOS

    • 支持架构:x86/AMD(64bit)、ARM(64bit)

  • 点击下载

快速使用

在Windows上使用

  1. 根据操作系统及架构下载对应版本,假设下载的文件为D:\Downloads\check-client.exe

  2. 打开cmd,执行以下命令切换到目标文件夹。

cd D:\Downloads\
  1. 在当前目录创建xxx.toml文件,也可直接下载对应校验类型的配置文件模版,填写必要参数。

  2. 执行check命令开始校验。

.\check-client.exe check xxx.toml

在Linux、macOS上使用

  1. 根据操作系统及架构下载对应版本,假设下载的文件为/root/Downloads/check-client

  2. 运行以下命令修改文件执行权限。

cd /root/Downloads/
chmod 755 check-client
  1. 在当前目录创建xxx.toml文件,也可直接下载对应校验类型的配置文件模版,填写必要参数。

  2. 执行check命令开始校验。

./check-client check xxx.toml

配置文件

创建配置文件

#源存储数据信息
[src]
#源站类型
#local(本地) ks3(金山云) oss(阿里云) cos(腾讯云) s3(亚马逊) url(列表文件)
type = ""
#源站访问密钥Id
accessKey = "<Your AccessKeyId>"
#源站访问密钥
secretKey = "<Your SecretAccessKey>"
#源端对象存储的访问域名(Endpoint),在对应源端云存储平台获取
domain = ""
#填写源站桶名
bucket = "<Your Bucket>"
#填写源站桶下的目录名称
prefix = "<Your Prefix>"

#目标存储数据信息
[dst]
#KS3访问密钥Id
accessKey = "<Your AccessKeyId>"
#KS3访问密钥
secretKey = "<Your SecretAccessKey>"
#KS3的访问域名(Endpoint),请参考文档:https://docs.ksyun.com/documents/6761
#例如 北京公网:ks3-cn-beijing.ksyuncs.com
domain = ""
#填写KS3桶名
bucket = "<Your Bucket>"
#填写KS3桶下的的目录名称
prefix = "<Your Prefix>"

#校验配置
[config]
#校验模式: crc(crc header校验) range(抽样下载校验)
checkMode = "crc"
#并发线程数,适当增大此值可以加快对比速度
threadsNum = 20
#是否校验隐藏文件,仅local类型生效
checkHiddenFiles = false
#是否跳过目录
skipDirectory = true
#单文件抽象下载大小,仅range校验模式生效
rangeSize = 5
#对比结果文件地址 如果不填默认会在当前目录生成 checkData.txt 文件
#如果文件已经存在会执行覆盖操作,请在操作前确认
checkDataPath = "checkData.txt"
#需要重传的文件地址 如果不填默认会在当前目录生成 needUploadData.txt 文件
#如果文件已经存在会执行覆盖操作,请在操作前确认
needUploadDataPath = "needUploadData.txt"

配置文件模板下载

云存储

下载地址

本地文件local

点击下载

金山云ks3

点击下载

阿里云oss

点击下载

腾讯云cos

点击下载

亚马逊s3

点击下载

列表文件url

点击下载

配置参数说明

[src]相关参数说明

参数

是否必选

说明

type

校验源端类型,填写示例值如下:

  • 本地文件:local

  • 金山云:ks3

  • 阿里云:oss

  • 腾讯云:cos

  • Amazon S3:s3

  • 列表文件: url

accessKey

访问源端对象存储的AccessKey ID,可在对应源端云存储平台获取,local类型不写。

secretKey

访问源端对象存储的Secret AccessKey,可在对应源端云存储平台获取,local类型不写。

domain

源端对象存储的访问域名,local类型不写。

bucket

源端存储桶的名称,local类型不写。

prefix

源端文件的路径前缀,local类型填写本地目录路径。

pathStyle

使用path style(二级域名)的方式访问源站。

[dst]相关参数说明

参数

是否必选

说明

accessKey

KS3对象存储的AccessKey ID,可在KS3控制台获取。

secretKey

KS3对象存储的Secret AccessKey,可在KS3控制台获取。

domain

KS3对象存储的访问域名

bucket

KS3存储桶的名称。

prefix

KS3文件的路径前缀。

pathStyle

使用path style(二级域名)的方式访问KS3。

[config]相关参数说明

参数

是否必选

说明

checkMode

校验模式,默认值:crc。填写示例值如下:

  • crc(默认):表示采用crc header校验方式

    1. 支持local、ks3、oss、cos源站类型

    2. 需保证ks3目标文件存在crc header

    3. 若源站类型为ks3、oss、cos,需保证源站文件存在crc header

  • range:表示采用抽样下载校验方式

    1. 支持local、ks3、oss、cos、s3、url源站类型

    2. 适用于无法在源站或ks3目标文件获取到crc header的情况

threadsNum

线程并发数,适当增大该值可提高对比速度。

  • 默认值:20

  • 取值范围:[1, 10000]

checkHiddenFiles

是否校验隐藏文件,仅local类型生效。

  • 默认值:false

skipDirectory

是否跳过目录(objectKey后缀是/的文件)

  • 默认值:true

rangeSize

单文件抽样下载大小。

  • 默认值:5,单位Bytes

  • 取值范围:-1或正整数

仅checkMode为range时生效,填写-1表示下载完整文件校验,填写正整数表示下载该大小内容校验。

checkDataPath

校验结果文件路径。

  • 默认值:checkData.txt

needUploadDataPath

需重传的文件路径,包含校验失败的文件名和未上传的文件。

  • 默认值:needUploadData.txt

执行输出说明

执行过程说明

执行过程会实时打印日志
校验会跳过目录,即以/结尾的文件

1、启动后会执行打印校验结果
====================Task Check Start=====================
[Total:1 /Success:1 /Fail:0]dstKey:check/info.log
[Total:2 /Success:2 /Fail:0]dstKey:check/local.toml
[Total:3 /Success:3 /Fail:0]dstKey:check/abc.txt
[Total:4 /Success:4 /Fail:0]dstKey:check/need_upload_data.txt
[Total:5 /Success:4 /Fail:1]dstKey:check/check_data.txt
[Total:6 /Success:4 /Fail:2]dstKey:check/error.log


2、校验结束后打印任务信息
====================Task Info======================
totalNum:6 totalSize:488452(bytes)
successNum:4, successSize:110327(bytes)
notFoundNum:1, notFoundSize:376283(bytes)
diffNum:1, diffSize:1842(bytes)
errorNum:0, errorSize:0(bytes)

3、校验结束后打会把文件名称以及状态输出到指定的文件
====================File Info======================
checkData      in ------> check_data.txt
needUploadData in ------> need_upload_data.txt
===================================================

==========================名词解释==========================
[Total]表示执行校验的文件个数总和,Total = totalNum
[Success]表示校验成功的文件个数总和,Success = successNum
[Fail]表示校验失败的文件个数总和,Fail = notFoundNum + diffNum + errorNum

[totalNum]表示执行校验的文件个数总和
[totalSize]表示执行校验的文件大小总和

[successNum]表示校验成功的文件个数总和
[successSize]表示校验成功的文件大小总和

[notFoundNum]表示KS3不存在的文件个数总和
[notFoundSize]表示KS3不存在的文件大小总和

[diffNum]表示KS3与源站进行对比后不一致的文件个数总和
[diffSize]表示KS3与源站进行对比后不一致的文件大小总和

[errorNum]表示在获取KS3、源站资源时发生异常情况文件个数总和
[errorSize]表示在获取KS3、源站资源时发生异常情况的文件大小的总和

[dstKey]表示在KS3存储的文件名称

执行结果说明

执行以上命令产生下列文件:
1、checkData.txt:存放校验结果文件列表
格式:
key|1| ----此时为表示ks3文件存在(etag一致或者随机range的crc64一致)

checkData.txt中四种校验状态
[1]表示校验成功
[2]表示目标key不存在
[3]表示源文件与目标文件校验不一致
[5]表示在获取源站元数据、KS3元数据失败(正常会因为权限问题或者网络问题导致,建议排查后再次检查即可)

示例:
check/info.log|1|
check/local.toml|1|
check/need_upload_data.txt|1|
check/abc.txt|1|
check/check_data.txt|3|src crc64 is not equal to dst crc64
check/error.log|2|dst key not found


2、needUploadData.txt:存放需要重新上传的文件key,用于重传
格式:
key ----每行只有一个源站Key

示例:
/root/check/test/check_data.txt
/root/check/test/error.log

简单示例

  1. 本地文件夹与KS3文件夹进行对比:

#源存储数据信息
[src]
#local(本地) ks3(金山云) oss(阿里云) cos(腾讯云) s3(亚马逊) url(列表文件)
type = "local"
#填写本地文件目录路径
prefix = "/root/test/"

#目标存储数据信息
[dst]
#KS3访问密钥Id
accessKey = "ak"
#KS3访问密钥
secretKey = "sk"
#KS3的访问域名(Endpoint)
domain = "ks3-cn-beijing.ksyuncs.com"
#填写KS3桶名
bucket = "test-bucket"
#填写KS3桶下的的目录名称
prefix = "test/"
  1. 对象存储与KS3文件夹进行对比

#源存储数据信息
[src]
#local(本地) ks3(金山云) oss(阿里云) cos(腾讯云) s3(亚马逊) url(列表文件)
type = "ks3"
#源站访问密钥Id
accessKey = "ak"
#源站访问密钥
secretKey = "sk"
#源端对象存储的访问域名(Endpoint)
domain = ""
#填写源站桶名
bucket = "src-test-bucket"
#填写源站桶下的目录名称
prefix = "test/"

#目标存储数据信息
[dst]
#KS3访问密钥Id
accessKey = "ak"
#KS3访问密钥
secretKey = "sk"
#KS3的访问域名(Endpoint)
domain = "ks3-cn-beijing.ksyuncs.com"
#填写KS3桶名
bucket = "dst-test-bucket"
#填写KS3桶下的的目录名称
prefix = "test/"

注意事项

  1. 在使用s3类型时,需要填写源站桶提供的S3的域名。例如:

1. 七牛云:s3-cn-north-1.qiniucs.com
2. 京东云:s3.cn-north-1.jdcloud-oss.com
  1. 目前暂不支持单文件对比。

  2. 程序会在当前目录下生成一个info.log文件(用于排查问题)。

  3. 校验默认会跳过目录,此时totalNum表示校验的文件数量,如果您需要校验目录,可设置skipDirectory参数为false。

  4. local类型校验默认会跳过隐藏文件,如果您需要校验隐藏文件,可设置checkHiddenFiles参数为true。

  5. 校验结束后会生成checkData.txt(校验结果)和needUploadData.txt(需上传文件列表)。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈