我想保留包含大量巨大二进制文件的文件夹的“快照/版本”。该文件夹包含我通过
rsync/rclone/scp/whatever
所做的所有备份。
由于源代码可能会被损坏/黑客攻击,我想保留所有版本。
我们都知道 git/subversion 不适用于文本以外的文件,我想知道是否有更通用的工具用于此目的。
我将专门使用linux。
很棒的文档,很棒的代码,很棒的社区。
快速入门指南:
使用
sudo apt-get install git-annex
安装它,然后就可以像使用 git 一样管理您的数据。
git init
git annex init "main-backup"
git annex add # if you don't specify any paths, it adds everything
# it'll hash your files and store them inside the .git folder with their hash as their filenames
git commit -m "Add my most important files"
与您的说法相反,众所周知,Subversion 可以很好地处理二进制文件。与 Git 不同,它不会存储同一二进制文件的多个修订版本的副本。由于您的目的是处理备份,Subversion 可以更好,因为它在处理部分签出方面很成熟,并且客户端不会从服务器克隆所有历史文件。是的,Git 也可以进行浅克隆和部分克隆,但目前我不会将其用于此目的,因为 Git 在这些任务上还不成熟。备份数据严重,数据损坏是重中之重。
(还有Perforce Helix Core,这是一个专门针对二进制文件优化的集中式 VCS。主要游戏工作室都在使用它,但我怀疑您是否愿意将文件存储在他们的服务器上。)
如果您更喜欢 DVCS,Mercurial 可能会起作用,因为它存储增量并避免在多个修订中存储单个二进制文件的多个副本。然而,就像 Git 一样,我不会相信它在处理部分签出方面的可靠性——毕竟它是一个 DVCS。
另一个 DVCS 选项是 BitKeeper。它特别优化了二进制文件的存储。但是,既然你谈论的是备份数据,那么至少为了可靠性,我现在会避开 BitKeeper,因为它现在没有被广泛使用,而且我不知道是否有企业用户积极使用它。
权衡利弊,我会针对您的场景尝试一下 Subversion。如果集中式性质不适合您的环境,我会尝试 Mercurial。