0

リポジトリ内の特定のファイルをS3に同期するrakeタスクを実装することを考えています。問題は、リポジトリでファイルが変更された場合にのみファイルを更新したいということです。したがって、ファイルAが変更され、Bが同じままである場合、次のアプリのデプロイ中にファイルAのみがS3に同期されます。

ファイルが変更されたことを確認するための信頼できる方法は何ですか?ファイルがローカルで変更されているかどうかを判断するために使用することを考えgitています...これを行う他の方法はありますか?S3はこれと同様の機能を提供しますか?

4

2 に答える 2

3

S3 は現在PUT、理想的なソリューションである条件付き s をサポートしていませんが、代わりに 2 つのリクエストでこの動作を得ることができます。同期操作は次のようになります。

  • S3 に必要なファイルごとに:
    • ローカル ファイルの MD5 を計算します。
    • HEADその S3 オブジェクトのリクエストを発行します。
    • オブジェクトが異なる場合、またはオブジェクトが存在しないPUT場合にリクエストを発行します。Content-MD5

とは言っても、これはアセットで行うことのように聞こえます。その場合、車輪を再発明することになります。Rails 3 アセット パイプラインは、この問題にうまく対処します。特に、アセットのフィンガープリントを作成し、URL にハッシュを配置するmax-ageと、不変であるため、非常に長い値でそれらを提供できますasset_sync。gemは、すでにアセットを S3 に自動的に配置できます。 .

于 2012-10-31T19:04:19.383 に答える
0

削除されたファイルはどうですか?それを行う簡単な方法は、ディレクトリ全体を最新のものでブラストすることです。

于 2012-10-31T18:48:22.760 に答える