以AmazonS3为后端的文件系统版本控制



我正试图在我的Debian电脑和一台OS X笔记本电脑上完成以下工作。

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

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

另一个问题是当前版本的s3fs似乎无法与MacFUSE配合使用。

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

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

我知道存在一些解决方案(比如dropbox),但我真的不喜欢它是封闭源代码的。

首先,我不建议在s3上盲目运行git。git在运行过程中会产生大量的小文件;当处理大量非常小的对象时,S3是昂贵的(并且很慢)。正如您推测的那样,S3也没有机制锁定;最终的一致性使得这是不可能的。最后,git依赖于对其对象数据库的快速随机访问;S3无法提供这一点,因此在任何情况下都需要整个存储库的本地镜像。

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

最新更新