我们来看一个简单的svnsync例子: 主SVN服务器: http://mastersvn/project1 svnsync镜像SVN服务器上的部署:http://backupsvn/project1 第一步:建立仓库 cd /home/svn svnadmin create fs-type fsfs /home/svn/project1 chmod 777 R project1 第二步:镜像初始化 svnsync init http://backupsvn/project1 http://mastersvn/project1 第三步:更改配置文件 cd /home/svn/project1/hooks cp pre-revprop-change.tmpl pre-revprop-change vi pre-revprop-change 注销所有语句,在语句前加入#即可,退出保存 第四步:同步 svnsync sync http://backupsvn/project1 --username username --password password 已提交版本 9。 复制版本 9 的属性。 已提交版本 10。 复制版本 10 的属性 …………… 但是在实际运用中,经常会发生SVN库被lock的情况 svnsync: Couldn't get lock on destination repos after 10 attempts 这不得不让我们感觉头痛地手动使用改命令解锁 svn propdel svn:sync-lock --revprop -r0 http://backupsvn/project1 写到这里,大家不由对svnsync有了个初步的认识了吧,就一个字,烦!!!而且同步速度很慢!!! ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 接下来是此文的重点部分: SVN新的镜像备份方案:ssh + rsync + crontab(任务计划)) 什么是SSH? SSH 是更灵活、更安全的 telnet 和 rlogin 替代品。它在开发项目中得到广泛使用,以提供访问控制和安全的数据传输。 什么是rysnc? rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了――remote sync。它的特性如下: 可以镜像保存整个目录树和文件系统。 可以很容易做到保持原来文件的权限、时间、软硬链接等等。 无须特殊权限即可安装。 优化的流程,文件传输效率高。 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 支持匿名传输,以方便进行网站镜象。 什么是crontab? Crontab是Linux操作系统下的一个命令,可以用来根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。(类似windows下的任务计划) 方案拓扑图:(请看附件) 主SVN服务器环境: SVN仓库根目录: /home/svn (project1,project2,project3三个仓库) SVN服务器IP: 192.168.100.80 镜像SVN服务器环境: SVN仓库根目录:/home/svn (无仓库,无需建立,镜像时会直接复制过来并保持文件属性) SVN服务器IP: 192.168.100.81 #主SVN服务器安装部分: (1) SVN安装部分(略) (2) 安装rsync部分 rpm -qa | grep rsync (所有系统是否有安装过rsync) rpm -e rsyncxxx (删除以前安装过的rsync) wget http://samba.anu.edu.au/ftp/rsync/rsync-3.0.4.tar.gz (下载rsync源码安装包) tar zxvf rsync-3.0.4.tar.gz (解压) cd rsync-3.0.4 ./install.sh (安装) 接下来我们就可以输入rsync --version命令来测试下是否安装成功了。 rsync version 3.0.3 protocol version 30
新闻热点
疑难解答