这次做业务迁移,要从一个云厂商迁移到某云厂商,之前每天到全备svn排到用场了,需要搭建一个全新到svn服务并要做迁移,并实现我们开发机到时时代码同步
一、svn备份有很多种,优劣都不同,百度可查,我采用到是dump每天凌晨会执行脚本备份数据
svnadmin dump /path/svn >/path/backup_svn/bak.svn
二、(新)svn服务器搭建配置,配置文件列出
yum install subversion -y #yum安装
mkdir -p /inn
svnadmin create /inn/svn/ #创建版本库
svnserve -d -r /inn/svn/ #指定目录启动svnserver服务 //会生成相关配置文件
ll /inn/svn/conf -rw-r--r-- 1 root root 1833 May 2 14:47 authz #指定用户组,用户权限,目录信息等
-rw-r--r-- 1 root root 570 May 2 14:54 passwd #创建等用户以及密码
-rw-r--r-- 1 root root 2421 Apr 26 11:04 svnserve.conf #全局配置文件,指定相关文件指定等目录
[root@yunwei-169 conf]# cat authz
[groups]
web = aaa,bbb
testing = ceshi
[/]
@web = rw
@testing = r
[root@yunwei-169 conf]# #web组有用户 aaa.bbb
#web用户对目录有读写权限
#测试组对相关目录只读
[root@yunwei-169 conf]# cat passwd
[users]
aaa = 123123
bbb = 321321
ceshi = 123333
[root@yunwei-169 conf]#
[root@yunwei-169 conf]# cat svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = /inn/svn/conf/passwd
authz-db = /inn/svn/conf/authz
realm = beizhu
[root@yunwei-169 conf]#
三、拷贝备份文件到本服务器 可以使用scp ftp等方式传输
四、恢复拷贝到文件
svnadmin load /inn/svn < bak.svn
五、利用svn钩子(hooks)实现测试机代码到时时同步
svn安装目录下修改配置文件即可实现,不需要安装插件等。
[root@yunwei-169 svn]# cd hooks/
[root@yunwei-169 hooks]# ll
total 52
-rw-r--r-- 1 root root 1188 May 8 18:22 1
-rw-r--r-- 1 root root 353 May 9 11:52 post-commit.log
-rw-r--r-- 1 root root 205 May 9 11:52 post-commit_project.log
-rw-r--r-- 1 root root 1977 Apr 26 11:00 post-commit.tmpl
-rw-r--r-- 1 root root 1638 Apr 26 11:00 post-lock.tmpl
-rw-r--r-- 1 root root 2289 Apr 26 11:00 post-revprop-change.tmpl
-rw-r--r-- 1 root root 1567 Apr 26 11:00 post-unlock.tmpl
-rw-r--r-- 1 root root 3426 Apr 26 11:00 pre-commit.tmpl
-rw-r--r-- 1 root root 2410 Apr 26 11:00 pre-lock.tmpl
-rw-r--r-- 1 root root 2786 Apr 26 11:00 pre-revprop-change.tmpl
-rw-r--r-- 1 root root 2100 Apr 26 11:00 pre-unlock.tmpl
-rw-r--r-- 1 root root 2780 Apr 26 11:00 start-commit.tmpl
[root@yunwei-169 hooks]# cp post-commit.tmpl post-commit
[root@yunwei-169 hooks]# chmod 777 post-commit
[root@yunwei-169 hooks]# cat post-commit #将内容清空
#!/bin/sh
echo "hello" >> /inn/svn/hooks/post-commit.log
REPOS="$1"
REV="$2" export LANG=zh_CN.UTF-8 /usr/bin/svn update /inn/www/hotel >> /inn/svn/hooks/post-commit.log /usr/bin/svn update /inn/www/project >> /inn/svn/hooks/post-commit_project.log echo `date`,`whoami`,$REPOS,$REV
[root@yunwei-169 hooks]#
如何解决svn Authorization failed错误
权限问题或者目录问题,排查上面到三个配置文件。。。