0

我正在考虑实现一个 rake 任务,它将我的存储库中的某些文件同步到 S3。问题是我只想在我的仓库中更改文件时更新文件。因此,如果文件 A 被修改而 B 保持不变,则在我的下一次应用程序部署期间,只有文件 A 将同步到 S3。

确定文件已被修改的可靠方法是什么?我正在考虑使用git来确定文件是否已在本地更改......还有其他方法可以做到这一点吗?S3 是否提供与此类似的功能?

4

2 回答 2

3

S3 目前不支持条件PUTs,这将是理想的解决方案,但您可以通过两个请求来获得此行为。您的同步操作如下所示:

  • 对于您想要在 S3 上的每个文件:
    • 计算本地文件的MD5。
    • 发出HEAD对该 S3 对象的请求。
    • 如果对象不同或对象不存在,则发出PUT请求。Content-MD5

也就是说,这听起来很像您对资产所做的事情,在这种情况下,您将重新发明轮子。Rails 3 资产管道很好地解决了这个问题——特别是,对资产进行指纹识别并将哈希放入 URL 允许您为它们提供非常长的max-age值,因为它们是不可变的——并且asset_syncgem已经可以自动将您的资产放在 S3 上.

于 2012-10-31T19:04:19.383 回答
0

删除的文件怎么办?最简单的方法是用最新的来爆破整个目录。

于 2012-10-31T18:48:22.760 回答