一致性校验工具

最近更新时间:2022-07-28 11:25:48

查看PDF

KS3 一致性比对工具

  1. 下载对应的check-client工具包:
运行平台 下载地址
linux 点击下载
mac 点击下载
window 点击下载
  1. 创建配置文件
#源存储数据信息
[src]
#访问密钥id
accessKey = "<Your AccessKeyId>"
#访问密钥
secretKey = "<Your SecretAccessKey>"
#例如 北京公网:ks3-cn-beijing.ksyuncs.com 北京内网:ks3-cn-beijing-internal.ksyuncs.com
#更多域名信息请参考文档([https://docs.ksyun.com/documents/6761](https://docs.ksyun.com/documents/6761))
domain = ""
#填写源站桶名
bucket = "<Your Bucket>"
#填写源站桶下的目录名称
prefix = "<Your Prefix>"
#cos(腾讯云) oss(阿里云)  ks3(金山云) local(本地)
type = ""

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

#sysConfig
[config]
#并发线程数,修改此值可以加快对比速度
#大概一个协程需要5KB内存  根据内存酌情调整
#目前因产品设计 最大数量不能超过1w个
#注意:需要在启动前检查系统最大文件数,可以参考文献 https://zhidao.baidu.com/question/1438911558923581539.html
threadsNum = 3

#随机range大小  单位字节,默认5字节
#取值区间为[0,fileSize)
#如果文件大小为0的情况下不会进行rang下载,会先直接对比文件大小
#因为会临时文件下载到本地进行对比,因此会产生下载流量请酌情调整。
rangeSize = 5

#对比结果文件地址 如果不填默认会在当前目录生成 checkData.txt 文件
#!!!!如果文件已经存在会执行覆盖操作,请在操作前确认
checkDataPath = "<Your CheckDataPath>"

#需要重传的文件地址 如果不填默认会在当前目录生成 needUploadData.txt 文件
#!!!!如果文件已经存在会执行覆盖操作,请在操作前确认
needUploadDataPath = "<Your NeedUploadDataPath>"


<<<<<<<<<<<<<<<配置文件模板下载>>>>>>>>>>>>>>>>>

金山云校验类型 -> ks3.toml

腾讯云校验类型 -> cos.toml

阿里云校验类型 -> oss.toml

文件夹校验类型 -> local.toml

  1. 启动校验
chmod +x check-client-mac
./check-client-mac check <Your ConfigPath>
  1. 执行过程解析
执行过程会实时打印日志

1、启动后会执行打印校验结果
====================Task Check=====================
scanNum:4个|existsNum:0个|diffNum:0个|key:ks3/ss.lzo
scanNum:5个|existsNum:0个|diffNum:0个|key:ks3/a.json
scanNum:6个|existsNum:1个|diffNum:0个|key:ks3/admin/50x.html
scanNum:6个|existsNum:1个|diffNum:0个|key:ks3/admin/handler.go
scanNum:6个|existsNum:2个|diffNum:0个|key:ks3/admin/needUploadData.txt
scanNum:6个|existsNum:2个|diffNum:1个|key:ks3/admin/checkData.txt

2、校验结束后打印任务信息
====================Task Info======================
scanNum:6个
existsNum:2个 existsSize:503bytes
notExistsNum:3个 notExistsSize:386878737bytes
diffNum:1个 diffSize:21bytes
failNum:0个 failSize:0bytes

3、校验结束后打会把文件名称以及状态输出到指定的文件
====================File Info======================
checkData      in  ------>"<Your CheckDataPath>"
needUploadData in  ------>"<Your NeedUploadDataPath>"

==========================名词解释==========================
[Task End]表示校验任务已经结束
[scanNum]表示扫描源站数量总和
[existsNum]表示KS3与源站进行对比后(etag一致或者随机range的crc64一致)的文件个数总和
[existsSize]表示KS3与源站进行对比后(etag一致或者随机range的crc64一致)的文件大小总和
[notExistsNum]表示KS3不存在的文件个数总和
[notExistsSize]表示KS3不存在的文件大小总和
[dffNum]表示KS3与源站进行对比后(etag不一致或者随机range的crc64不一致)的文件个数总和
[diffSize]表示KS3与源站进行对比后(etag不一致或者随机range的crc64不一致)的文件大小(以源站大小为基准统计)总和
[failNum]表示在获取KS3、源站资源时发生异常情况文件个数总和
[failSize]表示在获取KS3、源站资源时发生异常情况的文件大小(有可能获取失败为0的情况 属于正常情况)的总和
[key]表示在KS3存储的文件名称

  1. 执行结果解析
执行以上命令产生下列文件:
1、checkData.txt:存放三种可疑文件列表
   示例:key|1 ----此时为表示ks3文件存在(etag一致或者随机range的crc64一致)
//checkData.txt中四种情况区分
[1]表示ks3文件存在(etag一致或者随机range的crc64一致)
[2]表示ks3文件不存在
[3]表示ks3文件存在但是etag不一致或者随机range的crc64不一致
[5]表示在获取源站元数据、KS3元数据失败(正常会因为权限问题或者网络问题导致,建议排查后再次检查即可)
2、needUploadData.txt:存放需要重新上传的文件key,用于重传
   示例:key ----每行只有一个源站Key

注意事项:

1、比如本地文件夹与KS3文件夹进行对比

#源存储数据信息
[src]
prefix = "/home/ts/aaaab/"
#目标存储数据信息
[dst]
prefix = "aaaab/"

2、对象存储 prefix保持一致即可

#源存储数据信息
[src]
prefix = "ks3/"
#目标存储数据信息
[dst]
prefix = "ks3/"

3、目前暂不支持单文件对比

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

  建议使用 ./check-client-mac report <Your ConfigPath>  命令进行日志反馈,可更方便的排查问题。

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈