【问题标题】:s3cmd sync with boto in pythons3cmd与python中的boto同步
【发布时间】:2014-04-05 02:17:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: python boto s3cmd


    【解决方案1】:

    单独使用 boto,没有一个非常简单的方法。有几个提供此功能的软件包,它们似乎都使用相同的方法:将本地文件的 MD5 哈希与S3 key's 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 是否不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多