2011-06-30 37 views
4

我試圖在我的Debian計算機和一臺OS X筆記本電腦上進行以下工作。使用Amazon S3作爲後端的版本控制文件系統

我想要的是某種使用Amazon S3作爲後端的版本控制文件系統。

我在想什麼是使用s3fs(使用FUSE)來裝載存儲桶,然後創建一個使用GIT的文件系統,每次我寫入文件時都會提交一個新的提交(我想要一個完整的版本歷史記錄最多x天)。安裝的文件夾應該顯示最新版本的文件。 我不知道如何解決的問題之一(由於缺乏經驗,我假設)是我想與本地文件夾同步文件。當然,我可以下載所有文件,但這不是帶寬友好的。

另一個問題是當前版本的s3fs似乎不適用於MacFUSE。

此外,可能不會發生的情況,但如果兩臺計算機同時寫入文件,我想防止文件損壞。如果我理解正確,git會自行實現某種文件鎖定,並且不依賴於操作系統的文件鎖定。

什麼可以使這項工作的大綱?我想以這種方式存儲的文件只是.tex文件和矢量圖像。

我知道存在解決方案(比如dropbox),但我並不確定它是封閉的源代碼。

回答

5

首先,讓我說我不會推薦在s3上盲目地運行git。在操作過程中,git會生成大量小文件;處理大量非常小的物體時S3是昂貴的(並且速度很慢)。正如你猜測的那樣,S3也沒有機制鎖定;最終的一致性使這不可能。最後,git依靠快速隨機訪問其對象數據庫; S3無法提供此功能,因此無論如何您都需要整個存儲庫的本地鏡像。

相反,我會建議您擴展現有的git http後端以推送到S3。而不是推送鬆散的文件,這會推送一個單一的包文件。這可以利用S3擅長的 - 大型對象的批量加載。您仍然沒有鎖定,但是由於您決定何時手動推送,您可以找到其他方式輕鬆地進行協調。

+0

如果僅從EC2實例訪問S3,該怎麼辦?這仍然是一個問題嗎?我正在考慮這些產品線,因爲S3比配置EBS存儲器便宜並且耐用。 S3適用於內容分發,但如果EC2是字體結尾,則始終有一個用戶: - / –

相關問題