华为云对象存储OBS校验下载对象的一致性_云淘科技
OBS Browser+、obsutil以及OBS SDK都支持在下载对象时进行一致性校验,您可以根据自己的业务选择任意一种方式进行校验,本文就几种方式如何使用一致性校验进行了详细说明。
前提条件
待下载对象已有MD5值,如果没有MD5值,将不会进行一致性校验。对象的MD5值需要在上传的时候计算并设置,详细操作请参见校验上传对象的一致性。
方式一:使用obsutil校验下载对象的一致性
obsutil支持在下载对象时通过附加参数(vmd5)来校验下载数据的一致性。
以在Windows操作系统下载mytestbucket桶中的test.txt文件至本地为例,开启数据一致性校验的步骤如下:
执行以下命令,检查待下载对象是否具有MD5信息。
obsutil stat obs://test-bucket/test.txt
返回的对象基本信息中,包含MD5信息,如下图所示,执行步骤2。
不包含MD5信息,下载对象时无法进行一致性校验。
执行以下命令,下载对象。
obsutil cp obs://mytestbucket/test.txt D: est.txt -vmd5
对象下载成功且通过一致性校验,回显信息如下:
如果桶中对象没有MD5值,对象能够下载成功,但不会校验一致性,回显信息如下:
方式二:使用OBS Browser+校验下载对象的一致性
OBS Browser+默认关闭MD5校验,在OBS Browser+上启用MD5校验一致性并下载对象的步骤如下:
登录OBS Browser+。
单击客户端右上方的,并选择“高级设置”。
勾选“MD5校验”,如图1所示。
图1 配置MD5校验
单击“确定”。
选择待下载文件的桶,下载文件。
若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 17 18 |
String endPoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 创建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! "); else System.out.println("Object MD5 validation failed! "); |
在以上示例代码中,获取对象MD5值时的contentMd5是在上传时设置的自定义元数据,实际开发中需要根据自定义的元数据名称修改。
父主题: OBS数据一致性校验
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家