我正在考虑实现一个 rake 任务,它将我的存储库中的某些文件同步到 S3。问题是我只想在我的仓库中更改文件时更新文件。因此,如果文件 A 被修改而 B 保持不变,则在我的下一次应用程序部署期间,只有文件 A 将同步到 S3。
确定文件已被修改的可靠方法是什么?我正在考虑使用git
来确定文件是否已在本地更改......还有其他方法可以做到这一点吗?S3 是否提供与此类似的功能?
我正在考虑实现一个 rake 任务,它将我的存储库中的某些文件同步到 S3。问题是我只想在我的仓库中更改文件时更新文件。因此,如果文件 A 被修改而 B 保持不变,则在我的下一次应用程序部署期间,只有文件 A 将同步到 S3。
确定文件已被修改的可靠方法是什么?我正在考虑使用git
来确定文件是否已在本地更改......还有其他方法可以做到这一点吗?S3 是否提供与此类似的功能?
S3 目前不支持条件PUT
s,这将是理想的解决方案,但您可以通过两个请求来获得此行为。您的同步操作如下所示:
HEAD
对该 S3 对象的请求。PUT
请求。Content-MD5
也就是说,这听起来很像您对资产所做的事情,在这种情况下,您将重新发明轮子。Rails 3 资产管道很好地解决了这个问题——特别是,对资产进行指纹识别并将哈希放入 URL 允许您为它们提供非常长的max-age
值,因为它们是不可变的——并且asset_sync
gem已经可以自动将您的资产放在 S3 上.
删除的文件怎么办?最简单的方法是用最新的来爆破整个目录。