我们来看一个简单的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
Copyright (C) 1996-2008 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, no symtimes
rsync comes with ABSOLUTELY NO WARRANTY.
This is free software, and you
are welcome to redistribute it under certain conditions.
See the GNU
General Public Licence for details.
(3) 开启rsync服务器端
/usr/local/bin/rsync --daemon (开启rsync服务)
vi /etc/rc.d/rc.local
在末尾加入/usr/local/bin/rsync --daemon (目的是让服务器每次重启后都能自动运行此进程)
#镜像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 -vzrtopgu --progress --delete root@192.168.100.80:/home/svn /home/
输入用户名root
输入root的密码。
65309 100%
224.57kB/s
0:00:00 (xfer#507, to-check=2187/23106)
svn/project1/db/revs/202
29655 100%
99.86kB/s
0:00:00 (xfer#508, to-check=2186/23106)
svn/project1/db/revs/203
7242 100%
23.19kB/s
0:00:00 (xfer#509, to-check=2185/23106)
sent 15928 bytes
received 521860019 bytes
4404016.43 bytes/sec
total size is 12240235825
speedup is 23.45
传输完成,这次镜像过程就结束了。
12下一页阅读全文