2010-03-02 56 views

回答

11

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

+0

取决于存储库的大小转储不是执行此操作的最佳方法,因为创建转储和恢复转储需要一些时间。您应该使用svnadmin hotcopy – 2010-03-02 21:52:46

+0

到SVNBook的链接转到过时的版本 – bahrep 2012-09-21 08:56:32

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