有效地每日完成备份

时间:2012-02-16 19:52:04

标签: linux svn rsync

我正在使用~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

无论如何我正在寻找一些可以解决这个问题的事情,所以我的备份不会永远存在。

2 个答案:

答案 0 :(得分:2)

我会使用svnsync命令。

  1. 创建一个空存储库:
    svnadmin create c:\svn\backup_repo

  2. 启用自动更改:
    echo exit 0 >> c:\svn\backup_repo\hooks\pre-revprop-change.bat

  3. 初始化备份:
    svnsync init c:\svn\backup_repo <path_to_alpha_repo>

  4. 开始同步:
    svnsync sync file:///c:/svn/backup_repo

  5. 第一次运行同步(即步骤4)时,可能需要一段时间。但是,一旦您与HEAD同步,您可以安排快速工作以定期运行svnsync sync file:///c:/svn/backup_repo,并且您的备份始终是最新的。它将是原始SVN存储库的精确副本,包括相同的修订ID,日志注释等。

答案 1 :(得分:0)

有一些商业解决方案可通过热备份解决此问题,例如Subversion Clustering,可在LAN或WAN上运行。