2012-02-16 84 views
1

我正在管理一个服务器,Alpha(运行Debian和Fusion Forge(基于Web的项目管理系统)),大约200GB的svn仓库(大约200个不同的仓库)。我试图将数据的每日备份管理到文件服务器Beta(运行Windows,它有增量副本),然后处理所有其他备份。现在的问题是我最终每天都传输200GB,而且我没有充分利用rsync。Rsyncing全天日常备份

现在两个完整的每日备份存储在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

我会设置一个slave svn存储库作为备份。此外,gzip的可以产生rsync的友好档案(不知道为的bZIP) – bobah 2012-02-16 19:58:57

+0

谢谢,我居然变成SVN档案为这个确切原因的压缩和解的,我并没有意识到,gzip的有特点,我不得不启用为其他文件。 – lotu 2012-02-16 21:39:15

回答

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

运行同步的第一时间(即步骤4)它可能需要相当长的一段时间。但是,一旦与HEAD同步,您就可以快速安排工作,定期运行svnsync sync file:///c:/svn/backup_repo,并且备份始终处于最新状态。它将是原始SVN存储库的完全复制品,包括相同的修订版本ID,日志注释等。

+0

谢谢,他们有两个问题。首先我有一堆存储库,所以我必须为每个存储库执行此操作,并在添加新脚本时创建脚本以添加新脚本。此外,我不认为这会同步所有的元数据,如用户权限,频繁更改:(。 – lotu 2012-02-16 22:18:03