使用Subversion进行通用备份
是否可以将Apache Subversion(SVN)用作通用备份工具? (作为一种rsync替代方法。)
解决方案
回答
我用CVS代替了幽灵,所以我不明白为什么不这样做。
很高兴我们可以标记基准:可以更改管理计算机。
显然,这在unix上比Windows更好。
回答
令我失望的是,对于一般用途,任何二进制数据都会在更改后随时复制,而SCM系统所基于的文本内容可以轻松地以diff形式进行更新。
因此,我们可以这样做,只是要注意,如果我们进行大量编辑,则可能不希望使用它来管理照片存储库。
关于更多通用备份解决方案(例如Time Machine)的好处是,它们可以在一段时间后汇总多个二进制更改,以节省空间。我不确定在SVN或者git或者mercurial中这样做会多么容易。
回答
使用SVN备份二进制文件时要记住的一件事是SVN会将文件大小增加一倍,因为它保留了每个文件的本地副本(在.svn / text-base中)。
除此之外,我还使用SVN进行备份。只需添加所有文件,然后通过脚本提交即可。
回答
我发现本文是关于使用svn备份主目录的一个很酷的描述,以及更多:
I use Subversion to backup my Linux boxes. With some minor creativity, it easily covers: Daily snapshots and offsite backup. Easy addition and removal of files and folders. Detailed tracking of file versions. It also allows for a few bonus features: Regular log emails to keep track of filesystem activity via Subversion's event hooks. Users may request a checkout of their home folders from any respository revision. New or replacement servers can be setup with a few svn checkout commands.
资料来源:http://www.mythago.net/svn_for_backup.html
还可以找到本文,其中显示了对主目录进行版本控制的示例。这使我们可以通过将主目录检出到新计算机中来带来环境。我曾经做过类似的事情,发现它非常有用。
回答
一件让我非常烦恼的事情是svn放入它跟踪的每个文件夹中的" .svn"文件夹。
它们看起来很烦人,当我们复制文件夹时,我们应该记住不要复制它们(否则沙盒可能会很烦),并且要遍历一堆文件夹要困难得多,因为文件夹中经常会有很多匹配项。 svn资源文件夹。
我喜欢使用源代码控制来控制环境的想法。但是我个人不会为这项工作选择svn。我会选择像git这样的东西。但这可能只是我...
回答
使用SVN进行备份可以正常工作。但是,随着时间的流逝,删除不需要的旧修订可能很困难。假设我们只想保留30或者60天的备份。 SVN无法提供一种简便的方法来删除X天之前的任何历史记录。如果我们没有清除旧历史记录的方法,则最终将使备份驱动器空间不足。
这是SVN手册中svndumpfilter命令的引用:
Since Subversion stores everything in an opaque database system, attempting manual tweaks is unwise, if not quite difficult. And once data has been stored in your repository, Subversion generally doesn't provide an easy way to remove that data. [13] [13] That, by the way, is a feature, not a bug.
我发现统一是比svn作为rsync替代方法更好的选择。
回答
当我们要还原更改使系统崩溃,尝试更改或者将更改从一台服务器转移到另一台服务器时,使用源代码控制备份/ etc可能会大有帮助。
但是,Subversion的大量.svn目录可能会妨碍这样做,不仅是在搜索时,而且在某些情况下,例如* .d文件夹,设计不良的系统可能会将.svn文件夹本身解释为包含配置数据。
我现在更喜欢使用Mercurial来备份/ etc,因为它在/ etc下放置了一个.hg文件夹。为了进行真正的备份,而不仅仅是版本控制,我们需要将该.hg文件夹复制到其他位置。
回答
作为"通用"备份,我想说这可能不是一个好主意,主要是由于其他人给出的原因(大量多余的文件夹和浪费的磁盘空间)。如果我们只想保留备份,那么我还是会说,根据需要,也许还有更好的选择,例如:我们是否需要保留每个文件的每个版本,还是数据的某些快照足够?
但是,在我的办公室中,我们有一个由6人组成的小组,负责处理共享文件(例如:政策和程序手册,注册表等)。很多时候,团队成员将在远程(在家中或者旅途中)工作,并且经常处于脱机状态。我们没有使用中央共享文件夹设置,而是使用SVN为每个人提供了他们可以处理的文件夹的完整工作副本,并在可能的情况下引用和同步。这样就可以杀死两只鸟,只用一块石头就可以杀死它:每个人即使离线也可以访问和编辑文件,而且它在备份方面为我们提供了极大的冗余。如果我的笔记本电脑着火了,那就没有麻烦了,因为我可以签出另一份副本(显然是在另一台计算机上)。如果服务器着火了,我们将还原存储库的备份。如果服务器和所有回购备份着火了,那么我们丢失的只是旧版本的文件。丢失所有当前数据的唯一方法是,如果服务器,回购备份以及每台具有结帐功能的计算机神秘地着火了。
就像有些人说的那样,SVN永远不会从存储库中删除信息,这意味着如果我们只想将备份保留60天,那么我们就不能这样做。这不是真的。通过使用导出,转储和导入,我们可以有效清除旧版本的文件。这不漂亮,但是有可能。
回答
我确实使用SVN备份了我的计算机,并同步了笔记本电脑和台式机。但是它确实有先前答案中提到的问题,主要是磁盘使用量增加了一倍。我还感到文件过多和SVN进程不断检查我的HD是否有更改,这使我的机器速度变慢。
但是,我想强调一下,SVN非常适合同步不同的机器,而且如果需要,我们还可以在任何地方检出文件-我什至可以通过Web界面在浏览器中检出文件。
总之,对于使用SVN进行通用备份,我有不同的看法。但是,如果这样做,我建议不要存储电影,照片和音乐之类的库,因为它们往往很大(由于两倍的空间使用而遭受极大的折磨)并且是不可变的-我们不需要版本控制系统,因为在极少数情况下,更改文件时,通常不需要旧版本(并且SVN不擅长制作/存储二进制文件的差异,它会保存文件的整个新版本)。因此,除非可以针对这些情况使用SVN(我的长期项目意图),否则我建议使用另一种方法来备份此类文件。
回答
JoaoPSF的以下说法不正确:
(and SVN isn't good at making/storing diffs of binary files, it saves the entire new version of the file)
请参见Subversion如何处理二进制文件中的引言:
Note that whether or not a file is binary does not affect the amount of repository space used to store changes to that file, nor does it affect the amount of traffic between client and server. For storage and transmission purposes, Subversion uses a diffing method that works equally well on binary and text files; this is completely unrelated to the diffing method used by the svn diff command.