【发布时间】:2011-01-22 21:52:35
【问题描述】:
如何每晚备份我的 Subversion 存储库?我有一个网络驱动器,我想每晚将存储库转储到其中。
【问题讨论】:
如何每晚备份我的 Subversion 存储库?我有一个网络驱动器,我想每晚将存储库转储到其中。
【问题讨论】:
查看 The Book 中的 Repository Maintenance 章节,了解如何从存储库中提取转储。然后使用定时服务(例如at 或cron,或者Windows 操作系统中非常好的任务调度程序,取决于您的服务器系统)每晚执行转储。完成。
【讨论】:
【讨论】:
我刚刚写了一个简短的脚本来完成这项工作。 第一次运行进行完整备份,每次进一步运行只是在上次备份期间的最后一次提交的基础上增加。 备份文件将获取最后修订的编号以跟踪该过程。
为
设置正确的设置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
【讨论】: