svn代码库的备份和恢复非常简单: (注意,svn备份不宜采用普通的文件拷贝方式(除非你备份的时候将库暂停),如copy命令、rsync命令)
-
$svnlook youngest <path_to_repo> //查看到目前为止最新的版本号
-
$svnadmin dump [–revision 版本号] <path_to_repo> > dumpfile //将指定的版本库导出成文件dumpfile
-
-
导入:
-
$svnadmin load <new_path> < dumpfile
这种方式是官方推荐的方式。这种方式比较灵活,既可以全备,也可以增量备份。另外还有两种备份方式。
hotcopy方式
这种方式只能进行全量拷贝,不能进行增量备份,但它的优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。
svnadmin hotcopy path/to/repository path/to/backup –clean-logs
一个备份脚本
-
SRCPATH=/var/svn/project/;
-
BACKUPPATH=/var/backup/
-
DISTPATH=${BACKUPPATH}/`date +\%m%d`/ ;
-
RETENTION=1
-
LOG=${SRCPATH}/cpreport.log
-
-
if [ -d "$DISTPATH" ];then
-
echo "directory exist"
-
else
-
mkdir $DISTPATH
-
chmod g+s $DISTPATH
-
fi
-
echo $DISTPATH
-
svnadmin hotcopy $SRCPATH $DISTPATH >> ${LOG} 2>&1;
-
-
svnlook youngest ${DISTPATH} >> ${LOG}`;
-
-
# ------------------------------------------------
-
# Removing files older than $RETENTION parameter
-
# ------------------------------------------------
-
-
find ${BACKUPPATH} -mtime +$RETENTION -exec rm {} \;
svnsync方式
使用svnsync备份很简单,步骤如下:
1)在备份机上创建一个空库:svnadmin create Project1
2)更改该库的钩子脚本pre-revprop-change(因为svnsync要改这个库的属性,也就是要将源库的属性备份到这个库,所以要启用这个脚本):
cd SMP/hooks;
cp pre-revprop-change.tmpl pre-revprop-change;
chmod 755 pre-revprop-change;
vi pre-revprop-change;
将该脚本后面的三句注释掉,或者干脆将它弄成一个空文件。
3)初始化,此时还没有备份任何数据:
svnsync init file:///home/backup/svn/svnsync/Project1/
语法是:svnsync init {你刚创建的库url} {源库url}
注意本地url是三个斜杠的:///
4)开始备份(同步):
svnsync sync file:///home/backup/svn/svnsync/Project1
5)建立同步脚本
备份完毕后,建立钩子脚本进行同步。在源库/hooks/下建立/修改post-commit脚本,在其中增加一行,内容如下:
/usr/bin/svnsync sync --non-interactive file:///home/backup/svn/svnsync/Project1
阅读(2635) | 评论(0) | 转发(0) |