文档首页 > > 最佳实践> OBS数据一致性校验> 校验下载对象的一致性

校验下载对象的一致性

分享
更新时间:2020/09/01 GMT+08:00

OBS Browser+、obsutil以及OBS SDK都支持在下载对象时进行一致性校验,您可以根据自己的业务选择任意一种方式进行校验,本文就几种方式如何使用一致性校验进行了详细说明。

前提条件

待下载对象已有MD5值,如果没有MD5值,将不会进行一致性校验。对象的MD5值需要在上传的时候计算并设置,详细操作请参见校验上传对象的一致性

使用obsutil校验下载对象的一致性

obsutil支持在下载对象时通过附加参数(vmd5)来校验下载数据的一致性。

以在Windows操作系统下载mytestbucket桶中的test.txt文件至本地为例,开启数据一致性校验的步骤如下:

  1. 执行以下命令,检查待下载对象是否具有MD5信息。

    obsutil stat obs://test-bucket/test.txt
    • 返回的对象基本信息中,包含MD5信息,如下图所示,执行步骤2

    • 不包含MD5信息,下载对象时无法进行一致性校验。

  2. 执行以下命令,下载对象。

    obsutil cp obs://mytestbucket/test.txt D:\test.txt -vmd5
    • 对象下载成功且通过一致性校验,回显信息如下:

    • 如果桶中对象没有MD5值,对象能够下载成功,但不会校验一致性,回显信息如下:

使用OBS Browser校验下载对象的一致性

OBS Browser+默认关闭MD5校验,在OBS Browser+上启用MD5校验一致性并下载对象的步骤如下:

  1. 登录OBS Browser+。
  2. 单击客户端右上方的,并选择“高级设置”。
  3. 勾选“MD5校验”,如图1所示。

    图1 配置MD5校验

  4. 单击“确定”。
  5. 选择待下载文件的桶,下载文件。

    • 若MD5校验成功,则文件下载成功。
    • 若MD5校验失败,则文件下载失败,且在任务管理中提示失败原因:校验文件MD5失败。

使用OBS SDK校验下载对象的一致性

OBS SDK对待下载对象的自定义元数据中的MD5值和下载到本地的对象的MD5值进行对比,通过对比结果判断下载对象的一致性。

此处以使用OBS Java SDK下载mytestbucket桶中一个名为test.txt的文本文件为例,下载过程使用MD5值校验数据一致性的示例代码如下:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
String endPoint = "https://your-endpoint";
String ak = "*** Provide your Access Key ***";
String sk = "*** Provide your Secret Key ***";
// 创建ObsClient实例
final ObsClient obsClient = new ObsClient(ak, sk, endPoint);
// 获取对象的MD5值
ObjectMetadata metadata = obsClient.getObjectMetadata("mytestbucket", "test.txt");
String md5Origin = metadata.getUserMetadata("contentMd5");
// 计算下载后对象的MD5值
Obsobject obsobject = obsClient.getObject("mytestbucket", "test.txt");
String md5Download = obsClient.base64Md5(obsobject.getObjectContent());
// 对比MD5值
if(md5Origin.contentEquals(md5Download))
    System.out.println("Object MD5 validation passes!\n");
else
    System.out.println("Object MD5 validation failed!\n"); 

在以上示例代码中,获取对象MD5值时的contentMd5是在上传时设置的自定义元数据,实际开发中需要根据自定义的元数据名称修改。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问