自动备份Subversion存储库

时间:2010-03-02 20:16:09

标签: svn backup

如何每晚备份我的Subversion资源库?我有一个网络驱动器,我想每晚将存储库转储。

3 个答案:

答案 0 :(得分:11)

查看本书中有关如何从存储库中提取转储的Repository Maintenance章节。然后使用定时服务(例如atcron,或Windows操作系统中非常好的任务调度程序,取决于您的服务器系统)每晚执行转储。完成。

答案 1 :(得分:6)

SVN书中有一节Repository Backup

svnadmin hotcopy命令允许您安全地备份实时存储库。

svnsync命令是另一种可能性。

答案 2 :(得分:1)

我刚写了一个简短的脚本来完成这项工作。 第一次运行执行完全备份,每次进一步运行仅比上次备份期间的最后一次提交增加。 备份文件将获取最后一次修订的编号以跟踪该过程。

设置正确的设置

WORKDIR=path to where this script resists

SVN_REPO_LOCATION=path to where the repository resists on hd

BACKUPDIR=path to where the backup should goes to

SVN_LOACTION=root location which you use in your svn command

并将脚本添加到cronjob,就是这样。

#!/bin/bash
WORKDIR=/home/user/svnbackup
SVN_REPO_LOCATION=/opt/svn
BACKUPDIR=./backup
SVN_LOACTION=https://mysvn.server.com/svn

cd $WORKDIR;
CURRENT_VERSION=`svn info $SVN_LOACTION | grep Revision | awk '{print $2}'`
LAST_VERSION=`cat svn.version 2>/dev/null`
mkdir -p $BACKUPDIR;
if [ "$LAST_VERSION" = "" ]
then
        echo fullbackup;
        svnadmin dump -q $SVN_REPO_LOCATION > $BACKUPDIR/svn_backup_$CURRENT_VERSION.dump;
        echo $CURRENT_VERSION > svn.version;
else
        if [ "$LAST_VERSION" == "$CURRENT_VERSION" ]
        then
                echo backup not necessary;
        else
                echo incremental;
                svnadmin dump -q $SVN_REPO_LOCATION -r$LAST_VERSION:$CURRENT_VERSION --incremental  > $BACKUPDIR/svn_backup_$CURRENT_VERSION.dump;
                echo $CURRENT_VERSION > svn.version;
        fi
fi