我想建立一个类似于 Dropbox 的同步存储库。
目标/要求:
- 免费(最好使用开源软件)
- Linux 主机(可能是 Ubuntu)
- Windows/Mac/Linux 客户端
- 可供多个用户有限访问(可选)
- 最好简单,不一定需要自动化
- 修订控制非常好
基本上,我希望能够使用多台计算机(可能使用不同的操作系统),并能够在所有计算机上访问、使用和同步文件。我还希望在未连接到网络时拥有存储库的本地副本(如果我在笔记本电脑上工作,我希望保留本地存储库以保存修订版本并在以后与“主”存储库合并)。
例如,我白天在网络之外用笔记本电脑编辑了一些图片,但是当我回到家时,我想将这些更改(包括增量更改)与家里的桌面同步。
我还希望我的室友也能访问和使用这个存储库,但限制对某些文件的访问。例如,我可能想用它来备份财务记录,但不希望他们访问这些文件。
我是一名程序员,熟悉 SVN,但我知道这不是最合适的,因为它不能很好地处理二进制文件,并且不保留本地存储库。我知道有更好的选择,但我对它们了解不够多,无法选择最好的。
答案1
对于 subversion,您可以拥有一个本地存储库 - 只需在本地创建一个即可。然后,您可以使用 svnsync 定期与远程存储库同步。或者反过来,使用远程存储库并在本地同步(就像我备份时所做的那样)。
Svn 确实能很好地处理二进制文件,或者至少与其他 SCM 一样好。二进制文件的问题在于难以区分,这不是 svn 的缺点,只是二进制文件的一个属性。
Git或者Mercurial(或者市场) 听起来更适合您的需求,因为它们是分布式 SCM,您始终在本地存储库上操作,然后将更改推送到远程存储库。 Mercurial 可能是 Windows 的最佳选择,因为您拥有良好的 GUI 工具; Bazaar 是由 Canonical 开发的,而 Git 是由 Linus 开发的。这就是大家关心的它们之间的所有区别 :) 有比较在网络上 - 除了 git 不是 Windows 原生的之外,Mercurial 可能更好,因为它更多地支持“您拥有的就是远程用户拥有的”,而 Git 更多地支持“远程用户拥有的就是您让他们拥有的”,这将需要您根据自己的需求付出更多努力(当然,两者都可以共享全部或子集,但 Mercurial 限制子集比 Git 共享全部更容易)
答案2
我建议使用 git。只需为您的财务数据和“共享”数据设置不同的存储库即可。通过 ssh 授予访问权限。
答案3
也许你想尝试http://www.sparkleshare.org/ 关于此问题的最新讨论可以在以下网址找到:http://apps.ycombinator.com/item?id=1424299。