如何在一个200GB巨型代码库中使用Git?

3

我考虑使用Git进行备份 - 我想将文件备份到外部驱动器,然后提交备份驱动器上的所有内容。这样,如果需要,我仍然可以访问旧文件。我的备份集大约有200 GB。

您认为Git能够处理像这样非常大的存储库吗?提交是否仍然相对较快(我指的是少于1小时)?我是否可能会遇到某些限制或崩溃?


不,有各种各样的文件,包括图像和二进制文件。 - laurent
2个回答

2
我亲自尝试过。不幸的是,如果非文本文件被版本化,Git 不会对其进行压缩或者只会进行很少的压缩。因此,你最终得到的 Git 仓库大小几乎与你的文件一样大,而且如果任何二进制文件被版本化,那么仓库的大小可能会更大。
如果你有几个 1TB 的硬盘,也许你不介意它占用的空间。但是,如果你不想将主驱动器的一半或更多空间用于备份,但你又需要一些版本控制,那么最好的解决方案可能是使用另一个程序备份二进制文件,但将文本文件隔离在其他地方,并将其保留在 Git 中。

Git通常使用gzip进行压缩。这对于大多数二进制文件来说并没有什么用处(什么也不会发生),但我无法看到存储库该如何比原始文件更大。另一方面,所有文件-二进制或非二进制-都将进行去重。因此,如果您在两个目录中有相同的文件,则它只会被存储一次。如果一个文件在两次备份运行之间没有改变,则即使移动或重命名,它也只会被存储一次。 - Medo42
这取决于你的二进制文件变化频率。比如有一个目录,里面装满了用数字相机拍摄的照片,然后你对每张照片进行编辑。Git基本上会存储两个(或更多)版本的每张照片,这会很快占用大量空间。 - Ryan Lundy
这也是大多数备份解决方案所做的,直到您删除旧备份。在正常的git存储库中,如果不重写存储库历史记录,则无法实现此操作,但是如果例如为每个快照创建一个没有父级的新分支,则可以轻松删除旧分支。 - Medo42
请记住,您的存储库位于“项目”的根目录中。大多数备份解决方案不会在与数据相同的文件夹中复制您的数据。Git会这样做,因为它是一个分布式版本控制系统。看,我喜欢Git,我认为它非常适合用于备份。但是,除非您要备份的内容高度可压缩,否则它并不适用。 - Ryan Lundy

1

你可以用冰箱来存放衣服,谁能阻止你呢?

如果你真的很在意效率,为什么不使用专门备份的工具而要使用版本控制呢?你可以使用一些专为此类事情设计的工具。

我可以先想到Dropbox


1
Git并不是为备份而设计的,但其情境非常相似:您试图保留文件的快照。Git对于备份目的很有趣,因为它可以自动去重数据并包含完整性检查。然而,据我所知,它并不能保留所有文件元数据(某些标志、权限、所有权和类似内容)。删除旧快照也可能成为一个问题,并且需要重新编写整个存储库。 - Medo42
1
但是GitHub也不免费。 免费用户只能创建公共仓库。您的内容将对所有人可见。 实际上,Dropbox免费使用限制为2GB。 而且内容也是私有的。 在此之后,需要付费。 - Sailesh
1
我在谈论 Git,这是一个命令行应用程序,使用本地硬盘上的存储库。我不想将我的文件放在在线服务器上(实际上我也不希望任何在线解决方案是免费的)。 - laurent
1
那么,如果你只是想节省一些空间,还有其他方法可以实现。其中之一就是文件压缩。但无论如何,Git并不适用于备份。你可以使用Git来处理一些经常变化的文件,而且你不想单独保存各个版本,但除此之外,使用Git可能会比做任何好事都更麻烦。 - Sailesh
1
就我个人而言,我正在使用Crashplan备份软件,并且非常满意。它基本上是免费的(只要你不备份到他们的服务器),可以保留历史记录,并支持加密备份到你朋友的电脑上。 - Lieven Keersmaekers
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接