我一直在研究使用 AWS cli 进行数据完整性检查,以验证备份是否已从 Linux 文件服务器正确传输到 AWS s3。同样,我想验证从备份还原文件到 Linux 文件服务器时是否也能正确传输。
我检查了 S3 上与对象一起存储的 etag,因为它似乎是 md5sum。但是,如果文件较大,则以多部分传输文件,etag 不再有效。
但是,在我进一步尝试对每次同步到 S3 的内容进行 MD5sum 之前,真的有必要这样做吗?当在互联网上的 Linux 文件系统之间使用 rsync 时,对传输的文件进行 md5sum 来验证它们并不是常见的做法。因为我认为 rsync 已经处理好了这个问题?
所以我想知道 AWS cli sync 是否已经为我们处理了数据完整性检查?
答案1
简短的回答是肯定的,aws s3 sync
并aws s3 cp
计算 MD5 校验和,如果上传完成时不匹配,则将重试最多五次。
较长的答案是:
AWS CLI 将计算并自动填充标准和分段上传的 Content-MD5 标头。如果 S3 计算的校验和与提供的 Content-MD5 不匹配,S3 将不会存储该对象,而是向 AWS CLI 返回一条错误消息。AWS CLI 将重试此错误最多 5 次,然后放弃。
如果请求用 签名,Signature Version 4
则不会计算 MD5 校验和。
请注意,AWS CLI 将为执行上传的高级 aws s3 命令(aws s3 cp、aws s3 sync)以及低级 s3api 命令(包括 aws s3api put-object 和 aws s3api upload-part)添加 Content-MD5 标头。
参考