Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1955127
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: 项目管理

2013-09-05 15:37:49

svn代码库的备份和恢复非常简单: (注意,svn备份不宜采用普通的文件拷贝方式(除非你备份的时候将库暂停),如copy命令、rsync命令)
  1. $svnlook youngest <path_to_repo> //查看到目前为止最新的版本号
  2. $svnadmin dump [–revision 版本号] <path_to_repo> > dumpfile //将指定的版本库导出成文件dumpfile

  3. 导入:
  4. $svnadmin load <new_path> < dumpfile
这种方式是官方推荐的方式。这种方式比较灵活,既可以全备,也可以增量备份。另外还有两种备份方式。

hotcopy方式

这种方式只能进行全量拷贝,不能进行增量备份,但它的优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。
svnadmin hotcopy path/to/repository path/to/backup –clean-logs
一个备份脚本
  1. SRCPATH=/var/svn/project/;
  2. BACKUPPATH=/var/backup/
  3. DISTPATH=${BACKUPPATH}/`date +\%m%d`/ ;
  4. RETENTION=1
  5. LOG=${SRCPATH}/cpreport.log

  6. if [ -d "$DISTPATH" ];then
  7.    echo "directory exist"
  8. else
  9.    mkdir $DISTPATH
  10.    chmod g+s $DISTPATH
  11. fi
  12. echo $DISTPATH
  13. svnadmin hotcopy $SRCPATH $DISTPATH >> ${LOG} 2>&1;

  14. svnlook youngest ${DISTPATH} >> ${LOG}`;

  15. # ------------------------------------------------
  16. # Removing files older than $RETENTION parameter
  17. # ------------------------------------------------

  18. 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/  http://svntest.subversion.com/repos/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
阅读(1633) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~