Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2470223
  • 博文数量: 293
  • 博客积分: 2660
  • 博客等级: 少校
  • 技术积分: 3632
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 17:50
文章分类

全部博文(293)

文章存档

2015年(13)

2014年(58)

2013年(73)

2012年(25)

2011年(30)

2010年(86)

2009年(8)

分类: 项目管理

2014-10-11 12:48:31

http://wowking.blog.51cto.com/blog/1638252/847510
http://linuxguest.blog.51cto.com/195664/593131

使用svnsync备份很简单,步骤如下:
一、在备份机上创建一个空库:svnadmin create SMP
二、更改该库的钩子脚本pre-revprop-change(因为svnsync要改这个库的属性,也就是要将源库的属性备份到这个库,所以要启用这个脚本):
cd SMP/hooks;
cp pre-revprop-change.tmpl pre-revprop-change;
chmod 755 pre-revprop-change;
vi pre-revprop-change;
将该脚本后面的三句注释掉,或者干脆将它弄成一个空文件。
三、初始化,此时还没有备份任何数据:
svnsync init file:///home/backup/svn/svnsync/SMP/
语法是:svnsync init {你刚创建的库url} {源库url}
注意本地url是三个斜杠的:///
四、开始备份:
svnsync sync file:///home/backup/svn/svnsync/SMP
这是就一个个版本进行备份了。
五、修改目标服务器新库UUID(可选,修改了UUID后客户端就只需要relocate就可以了,不用重新全部下载)
     1) 查看源服务器svn库uuid :
     svnlook uuid 库名
     也可以直接进入svn库db目录查看uuid文件
     2) 在目标服务器
    执行更改uuid命令 :svnadmin setuuid 库名 uuid
    这里的uuid为源服务器svn库的uuid
附录:
可能的报错一:
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
svnsync: Couldn't get lock on destination repos after 10 attempts
这个时候可能属性被锁了,删掉属性:
svn propdel svn:sync-lock --revprop -r0 file:///home/backup/svn/svnsync/SMP
删除成功后,再试一遍基本就可以了。
如果反复操作都是同样错误的话,有可能是你的svn安装的有问题,重新安装一遍就好了,俺就是这样。

可能报错二、
svnsync: REPORT request failed on ''
svnsync: The requested report is unknown.
这是因为你源库的版本太低了,svnsync所需要的函数Report是svn1.4后加入的。没办法,对你的库进行升级后才能备份。
 

由于执行svnsync sync file:///home/backup/svn/svnsync/SMP 过程中容易出现错误一,避免中途人工干预,我写了一个脚本,来自动修复错误。脚本里面的路径自己来修改吧,我的环境是本地备份到另外一个硬盘。


可能报错三、

      源端svn某一个节点上传了大量数据,通过svnsync的时候就可能导致timeout的情况。在这种情况下可以采用以下的方法解决:

      1.源库\db\revprops和源库\db\revs目录里面相应的版本(例如1)拷贝到镜像库的相应目录下面
      2.修改镜像库\db\current文件,改为1
      3.运行svnsync sync https://镜像库
          这时提示 have you commited to the destination without using svnsync?不管,继续4
      4.运行
          svn proplist --revprop -r 0 https://镜像库
          svn propset  --revprop -r 0 svn:sync-last-merged-rev 1(第2步中的版本号) https://镜像库
          svn pdel     --revprop -r 0 svn:sync-currently-copying https://镜像库
      重新再执行同步即可:svnsync sync https://镜像库

阅读(1901) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~