【发布时间】:2020-05-23 18:22:49
【问题描述】:
我正在尝试以不同大小的块读取文件以计算文件 etag 并与 s3 资源上的 etag 进行比较。
我意识到这是一个以前被问过的问题,但我看到的所有答案都涉及通过处理保持一致的甚至大小的分块。
我想要做的是获取任何大小的文件,对于该文件的前 5GB,计算每个 5MB 块的 md5。然后对于接下来的 25GB 文件,计算每个 25MB 块的 md5。对于文件的最终数量,计算每个 125MB 块的 md5。
我认为这可以归结为: 1000 个 5MB 到 5GB 的块 接下来 1000 个 25MB 到 25GB 的块(或读取到 30GB) 最后 8000 个 125MB 的块,每个块高达 1TB
S3 协议将块数限制为最大 10000。
所以对于一个 49.9 GB 的文件,我最终会连接 2136 个部分并计算 md5。
原因是上传到 s3 设备是使用基于此分块方案上传的 Goofys 完成的。
我尝试使用嵌套的 while 循环(我的条件没有按预期工作),而我目前的尝试是使用 if 语句...
我迷路的地方是确保 file.read(chunk_size) 在达到大小阈值时发生变化,直到读取整个文件。
【问题讨论】:
标签: python-3.x amazon-s3