Subversion代码库的自动备份

8

如何每晚备份我的Subversion代码库?我想每晚都将代码库转储到网络驱动器上。

3个回答

11

请查阅《svnbook》中关于如何从版本库中提取转储的仓库维护章节。然后使用定时服务(例如atcron,或Windows操作系统中非常好用的任务计划程序,具体取决于您服务器的系统)每晚执行转储。完成。


根据代码库的大小,转储可能不是最佳方法,因为创建和恢复转储需要一些时间。您应该使用svnadmin hotcopy。 - Peter Parker
SVNBook的链接指向过时的版本。 - bahrep

6

1
我刚刚编写了一个简短的脚本来完成这项工作。第一次运行将进行完整备份,每次后续运行只是在上次备份期间最后一次提交的增量备份。备份文件将获取最后修订版本的编号以跟踪该过程。
为正确设置,请使用以下设置:
WORKDIR=此脚本所在路径
SVN_REPO_LOCATION=存储库所在硬盘的路径
BACKUPDIR=备份应存储的路径
SVN_LOACTION=您在svn命令中使用的根位置
然后将脚本添加到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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接