OSS有几种数据校验方式?

OSS支持ETag、MD5、crc64校验方式,本文为您介绍三者的区别和使用场景。

校验方式

使用场景

使用说明

ETag

用于判断资源是否发生了变化。

ETag (entity tag) 在每个Object生成的时候被创建,用于标识一个Object的内容。对于Put Object请求创建的Object,ETag值是其内容的MD5值;对于其他方式创建的Object,ETag值是基于一定计算规则生成的唯一值,但不是其内容的MD5值。

说明

ETag值可以用于检查Object内容是否发生变化。不建议使用ETag作为Object内容的MD5来校验数据完整性。

MD5

用于数据完整性校验。由客户端计算通过Content-MD5传给服务端,服务端来做对比。

如果需要校验上传到OSS的文件和本地文件是否一致,可以在上传文件时携带文件的Content-MD5值。OSS会在接收文件时,将文件的MD5值和Content-MD5进行比对,两者一致时才可以上传成功,从而保证上传数据的一致性。

说明
  • putObject、getObject、appendObject、postObject、Multipart、uploadPart支持MD5校验。

  • CompleteMultipartUpload的Content-MD5校验不了文件的数据完整性,校验的是CompleteMultipartUpload这个接口发送的请求体的数据完整性。

关于如何进行MD5校验,请参见OSS MD5一致性校验说明

crc64

用于数据完整性校验。由服务端计算出来传给客户端,客户端来做对比。

如果需要校验上传到OSS的文件和本地文件是否一致,可以使用crc64校验。OSS现在支持对各种方式上传的Object返回其crc64值,客户端可以和本地计算的crc64值做对比,从而完成数据完整性的验证。

说明

MultipartComplete时,如果所有的Part都有crc64值,则会返回整个Object的crc64值,可以用来校验。

关于如何进行crc64校验,请参见通过crc64校验数据传输的完整性