4

私は自分のDebianコンピュータと1台のOSXラップトップで次の動作をしようとしています。

私が欲しいのは、AmazonS3をバックエンドとして使用するある種のバージョニングファイルシステムです。

私が考えていたのは、s3fs(FUSEを使用)を使用してバケットをマウントし、ファイルを書き込むたびに新しいコミットを行うGITを使用するファイルシステムを作成することです(x日までの完全なバージョン履歴が必要です)。マウントされたフォルダには、ファイルの最新バージョンが表示されます。解決方法がわからない問題の1つは(経験不足のためだと思いますが)、ファイルをローカルフォルダーと同期させたいということです。もちろん、すべてのファイルをダウンロードすることもできますが、それは帯域幅にやさしいものではありません。

もう1つの問題は、現在のバージョンのs3fsがMacFUSEで動作しないように見えることです。

さらに、おそらく起こらないことですが、2台のコンピューターが同時にファイルに書き込んだ場合にファイルが破損するのを防ぎたいと思います。私が正しく理解していれば、gitはある種のファイルロック自体を実装しており、オペレーティングシステムのファイルロックに依存していません。

これを機能させるための概要は何でしょうか?これらの方法で保存したいファイルは、.texファイルとベクター画像だけです。

(ドロップボックスのような)ソリューションが存在することは知っていますが、それがクローズドソースであることはあまり好きではありません。

4

1 に答える 1

5

まず、s3でやみくもにgitを実行することはお勧めしません。gitは、操作中に多くの小さなファイルを生成します。S3は、非常に小さなオブジェクトを多数処理する場合、コストがかかります(そして低速になります)。ご想像のとおり、S3にはメカニズムロックもありません。結果整合性はこれを不可能にします。そして最後に、gitはそのオブジェクトデータベースへの高速ランダムアクセスに依存しています。S3はこれを提供できないため、いずれの場合もリポジトリ全体のローカルミラーが必要になります。

代わりに、既存のgithttpバックエンドを拡張してS3にプッシュすることをお勧めします。緩いファイルをプッシュする代わりに、これは単一のパックファイルをプッシュします。これは、S3が得意とすること、つまり大きなオブジェクトのバルクロードを活用します。まだロックはありませんが、手動でプッシュするタイミングを決定するので、物事を簡単に調整する他の方法を見つけることができます。

于 2011-06-30T21:05:39.183 に答える