最近更新时间:2024-09-18 17:00:50
一致性校验工具支持在Windows、Linux、macOS系统上通过命令行方式校验源站与KS3数据一致性。
版本
当前版本:1.4.0
运行环境
Windows、Linux、macOS
支持架构:x86/AMD(64bit)、ARM(64bit)
根据操作系统及架构下载对应版本,假设下载的文件为D:\Downloads\check-client.exe
。
打开cmd,执行以下命令切换到目标文件夹。
cd D:\Downloads\
在当前目录创建xxx.toml
文件,也可直接下载对应校验类型的配置文件模版,填写必要参数。
执行check命令开始校验。
.\check-client.exe check xxx.toml
根据操作系统及架构下载对应版本,假设下载的文件为/root/Downloads/check-client
。
运行以下命令修改文件执行权限。
cd /root/Downloads/
chmod 755 check-client
在当前目录创建xxx.toml文件,也可直接下载对应校验类型的配置文件模版,填写必要参数。
执行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 |
参数 | 是否必选 | 说明 |
type | 是 | 校验源端类型,填写示例值如下:
|
accessKey | 是 | 访问源端对象存储的AccessKey ID,可在对应源端云存储平台获取,local类型不写。 |
secretKey | 是 | 访问源端对象存储的Secret AccessKey,可在对应源端云存储平台获取,local类型不写。 |
domain | 是 | 源端对象存储的访问域名,local类型不写。 |
bucket | 是 | 源端存储桶的名称,local类型不写。 |
prefix | 是 | 源端文件的路径前缀,local类型填写本地目录路径。 |
pathStyle | 否 | 使用path style(二级域名)的方式访问源站。 |
参数 | 是否必选 | 说明 |
accessKey | 是 | KS3对象存储的AccessKey ID,可在KS3控制台获取。 |
secretKey | 是 | KS3对象存储的Secret AccessKey,可在KS3控制台获取。 |
domain | 是 | KS3对象存储的访问域名。 |
bucket | 是 | KS3存储桶的名称。 |
prefix | 是 | KS3文件的路径前缀。 |
pathStyle | 否 | 使用path style(二级域名)的方式访问KS3。 |
参数 | 是否必选 | 说明 |
checkMode | 否 | 校验模式,默认值:crc。填写示例值如下:
|
threadsNum | 否 | 线程并发数,适当增大该值可提高对比速度。
|
checkHiddenFiles | 否 | 是否校验隐藏文件,仅local类型生效。
|
skipDirectory | 否 | 是否跳过目录(objectKey后缀是/的文件)
|
rangeSize | 否 | 单文件抽样下载大小。
仅checkMode为range时生效,填写-1表示下载完整文件校验,填写正整数表示下载该大小内容校验。 |
checkDataPath | 否 | 校验结果文件路径。
|
needUploadDataPath | 否 | 需重传的文件路径,包含校验失败的文件名和未上传的文件。
|
执行过程会实时打印日志
校验会跳过目录,即以/结尾的文件
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
本地文件夹与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/"
对象存储与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/"
在使用s3类型时,需要填写源站桶提供的S3的域名。例如:
1. 七牛云:s3-cn-north-1.qiniucs.com
2. 京东云:s3.cn-north-1.jdcloud-oss.com
目前暂不支持单文件对比。
程序会在当前目录下生成一个info.log文件(用于排查问题)。
校验默认会跳过目录,此时totalNum表示校验的文件数量,如果您需要校验目录,可设置skipDirectory参数为false。
local类型校验默认会跳过隐藏文件,如果您需要校验隐藏文件,可设置checkHiddenFiles参数为true。
校验结束后会生成checkData.txt(校验结果)和needUploadData.txt(需上传文件列表)。
纯净模式