gpt4 book ai didi

amazon-s3 - 使用散列验证分段上传到 S3

转载 作者:行者123 更新时间:2023-12-05 04:10:51 25 4
gpt4 key购买 nike

我正在寻找一个命令行工具或一个 Python 库,它允许将大文件上传到 S3,并进行哈希验证。

有一个AWS article解释如何通过提供 content-md5 header 自动完成此操作。

然而,尚不清楚哪些命令行工具可以或不可以这样做:

  • rclone的文档指出

    files uploaded with multipart upload don’t have an MD5SUM.

  • s3cmd对此没有任何说明,但它支持同步功能的 md5

  • s4cmd手册里有一整段,但还不清楚上传是否真的经过验证

  • boto3/s3transfer 的 upload_file() 方法实际上什么都没说

您是否有关于这些工具中的任何一个的信息,或者一些其他工具或 Python 库或 boto3 片段,它们可以处理大文件上传到 s3 并具有 rsync 的可靠性?

最佳答案

在询问了官方aws cli(boto3)工具的作者后,我可以得出结论,aws cli always verifies every upload ,包括多部分的。

它逐 block 进行,使用官方 MD5 ETag 验证单部分上传。此外,您还可以启用 SHA256 验证,仍然是逐 block 验证。

aws cli 不会验证整个组装文件。为此,您需要使用一些微小的 Python 函数,例如:

def calculate_s3_etag(file_path, chunk_size=8 * 1024 * 1024):
md5s = []

with open(file_path, 'rb') as fp:
while True:
data = fp.read(chunk_size)
if not data:
break
md5s.append(hashlib.md5(data))

if len(md5s) == 1:
return '"{}"'.format(md5s[0].hexdigest())

digests = b''.join(m.digest() for m in md5s)
digests_md5 = hashlib.md5(digests)
return '"{}-{}"'.format(digests_md5.hexdigest(), len(md5s))

关于amazon-s3 - 使用散列验证分段上传到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43794838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com