繁体   English   中英

s3cmd与python中的boto同步

[英]s3cmd sync with boto in python

我正在尝试将一些备份脚本从bash移到python,以便更好地处理错误。

我一直在使用s3cmd同步将目录备份到s3。 我希望找到一种类似的简单方法直接在python中执行此操作(可能使用boto),但到目前为止,使用subprocess.call并继续使用s3cmd似乎最简单。

有没有人建议更好的解决方案?

单独使用boto,没有一种非常简单的方法。 有几个浮动的包提供了这个功能,它们似乎都使用相同的方法: 将本地文件的MD5哈希值与S3密钥的etag进行比较

以下是如何计算本地文件的MD5哈希值(注意:将文件的全部内容加载到内存中):

print hashlib.md5(open(filename, 'rb').read()).hexdigest()

7bee81f4be312203c0e29d4dfe65fb0b

对于S3密钥(注意:您不能在本地创建boto.s3.key.Key ;而是从存储桶中获取它):

key = bucket.get_key(path)
print key.etag

“7bee81f4be312203c0e29d4dfe65fb0b”

请注意,由于某种原因,etag被引号字符包围。

要执行同步,只需在执行get / put之前检查MD5和etag是否不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM