我们将数百个图像文件放在 Amazon S3 上,我们的用户需要将这些文件同步到他们的本地目录。为了节省存储空间和带宽,我们压缩存储在 S3 上的文件。
在用户端,他们有一个每 5 分钟运行一次的 python 脚本来获取当前文件列表,并下载新的/更新的文件。
我的问题是确定要下载的新内容或更改内容的最佳方法是什么?
目前我们添加了一个额外的头文件,我们把它放在包含未压缩文件的 MD5 值的压缩文件中......
我们从这样的文件开始:
image_file_1.tif 17MB MD5 = xxxx1234
我们将其压缩(使用 7zip)并将其放入 S3(使用 Python/Boto):
image_file_1.tif.z 9MB MD5 = yyy3456 x-amz-meta-uncompressedmd5 = xxxx1234
问题是我们无法从 S3 获取包含 x-amz-meta-uncompressedmd5 标头的大量文件列表,而无需为每个文件添加额外的 API(对于数百/数千个文件来说速度很慢)。
我们最实用的解决方案是让用户获得完整的文件列表(没有额外的标题),下载本地不存在的文件。如果它在本地确实存在,则执行额外的 API 调用以获取完整的标头以将本地 MD5 校验和与 x-amz-meta-uncompressedmd5 进行比较。
我想一定有更好的方法。