我正在使用~200GB的svn存储库(大约200个不同的存储库)管理服务器,Alpha(运行Debian和Fusion Forge(基于Web的项目管理系统))。我正在尝试将数据的每日备份管理到文件服务器Beta(运行Windows,它上面有增量副本),然后处理所有其他备份。问题是现在我最终每天都要转移所有200GB,而且我没有充分利用rsync。
现在有两个完整的每日备份存储在Alpha上,这些备份每晚由Fusion Forge生成,因此备份目录看起来像这样。
$ ls alpha-backup
cvsroot-tmp-2012-02-15.tar.bz2 etc-tmp-2012-02-15.tar.bz2 svn-repositories-2012-02-15
cvsroot-tmp-2012-02-16.tar.bz2 etc-tmp-2012-02-16.tar.bz2 svn-repositories-2012-02-16
db-alpha-tmp-2012-02-15.tar mailinglist-tmp-2012-02-15.tar.bz2 uploads-tmp-2012-02-15.tar.bz2
db-alpha-tmp-2012-02-16.tar mailinglist-tmp-2012-02-16.tar.bz2 uploads-tmp-2012-02-16.tar.bz2
每晚创建一个新备份,删除旧备份。到目前为止,我一直试图避免修改这个过程,因为它不是我的代码。
每个svn-repositories目录包含大约200GB,其余的比较小。因此,当创建svn-repositories-2012-02-16时,它与备份服务器上的svn-repositories-2012-02-15非常接近,但rsync似乎无法找到数字并且仅复制更改。我在rsync上尝试了几种不同的参数,但收效甚微,这就是目前使用的。
rsync -aq -P --inplace --delete --fuzzy /alpha-backup/. beta::alpha
无论如何我正在寻找一些可以解决这个问题的事情,所以我的备份不会永远存在。
答案 0 :(得分:2)
我会使用svnsync命令。
创建一个空存储库:
svnadmin create c:\svn\backup_repo
启用自动更改:
echo exit 0 >> c:\svn\backup_repo\hooks\pre-revprop-change.bat
初始化备份:
svnsync init c:\svn\backup_repo <path_to_alpha_repo>
开始同步:
svnsync sync file:///c:/svn/backup_repo
第一次运行同步(即步骤4)时,可能需要一段时间。但是,一旦您与HEAD同步,您可以安排快速工作以定期运行svnsync sync file:///c:/svn/backup_repo
,并且您的备份始终是最新的。它将是原始SVN存储库的精确副本,包括相同的修订ID,日志注释等。
答案 1 :(得分:0)
有一些商业解决方案可通过热备份解决此问题,例如Subversion Clustering,可在LAN或WAN上运行。