我会在版本控制下放置大量数据,即目录结构(深度< = 5),数百个文件,大小约为500Mb。)
我需要的是一个帮助我的系统: - 检测文件是否已更改 - 检测是否添加/删除了文件 - 在另一个位置克隆整个存储库 - 存储“检查点”并稍后恢复
我不需要sha1进行变化检测,更快的速度是可以接受的。
git值得吗?有更好的选择吗?
答案 0 :(得分:10)
正如我在“What are the Git limits”中所提到的,Git并不是为了管理大文件(或大型二进制文件)。
如果你需要,那就需要Git:注意:仍在使用Git,您可以尝试this approach
不幸的是,
rsync
对我们的目的来说也不是很完美。
- 首先,它不是真正的版本控制系统。如果你想存储文件的多个修订版,你必须制作多个副本,这是浪费的,或
xdelta
它们,这是繁琐的(并且可能很慢重新组装,并且很难修剪中间版本),或者检查它们到git,因为你的文件太大,它仍然会融化。- Plus rsync实际上无法正确处理文件重命名。
好吧,另外一个想法:让我们将文件拆分成块,并将每个块分别检查为git 。
那么git的delta压缩一次就不会有太多的咀嚼,我们只需要发送修改后的块......
答案 1 :(得分:8)
git-annex是解决这个问题的方法。它不是将大文件数据直接存储在git中,而是将其存储在键/值存储中。然后将密钥的符号链接检入git,作为实际大文件的代理。
答案 2 :(得分:1)
Unison File Synchroniser是维护大型二进制文件的多个副本的绝佳工具。除了存储检查点之外,它还会执行您要求的所有操作 - 但您可以使用rsync硬链接副本。
答案 3 :(得分:1)
如果您使用的是unix系统(可能是因为您正在使用git):
这样,你可以获得git的好处,保留你想要的任何树结构,并且大尺寸文件在其他地方备份,尽管看起来仍然在普通的文件夹层次结构中。
答案 4 :(得分:0)
像rsync这样的东西可以更好地满足您的需求(如果您只想要一些备份,不需要并发,合并,分支等)。