使用Amazon S3作为后端的版本控制文件系统

时间:2011-06-30 16:54:41

标签: git amazon-s3 s3fs

我正在尝试在我的Debian计算机和一台OS X笔记本电脑上进行以下工作。

我想要的是某种使用Amazon S3作为后端的版本控制文件系统。

我在想的是使用s3fs(使用FUSE)来安装存储桶,然后创建一个使用GIT的文件系统,每当我编写文件时都会进行新的提交(我想要一个完整的版本历史记录,最多x天) 。然后,安装的文件夹应显示最新版本的文件。 其中一个我不知道如何解决的问题(由于缺乏经验,我认为)是我想将文件与本地文件夹同步。当然,我可以下载所有文件,但这不是带宽友好的。

另一个问题是当前版本的s3fs似乎不适用于MacFUSE。

此外,可能不会发生的事情,但我想防止文件在两台计算机同时写入文件时损坏。如果我理解正确,git会实现某种文件锁定本身,并且不依赖于操作系统的文件锁定。

什么可以成为使这项工作的大纲?我想用这些方式存储的文件只是.tex文件和矢量图像。

我知道存在解决方案(如dropbox)但我并不喜欢它是封闭源。

1 个答案:

答案 0 :(得分:5)

首先,我要说我不建议在s3上盲目运行git。 git在运行期间会生成很多小文件;当处理大量非常小的物体时,S3很昂贵(而且很慢)。正如你猜测的那样,S3也没有锁定机制;最终的一致性使这变得不可能。最后,git依赖于对对象数据库的快速随机访问; S3无法提供此功能,因此无论如何您都需要整个存储库的本地镜像。

相反,我建议您扩展现有的git http后端以推送到S3。这将推送单个包文件,而不是推送松散的文件。这将利用S3擅长的东西 - 大型对象的大量加载。您仍然没有锁定,但由于您决定何时手动推送,您可以找到其他方法来轻松协调事物。