svnsync远程备份镜像
1. 进入远程备份服务器,创建备份版本库
#新建版本库
svnadmin create /svn/pro_bak
#钩子pre-revprop-change
cp /svn/pro_bak/hook/pre-revprop-change.tmpl /svn/pro_bak/hook/pre-revprop-change
#运行权限
chmod a+x /svn/pro_bak/hook/pre-revprop-change
#编辑/svn/pro_bak/hook/pre-revprop-change,将"exit 1"改为"exit0"或只留"exit 0"
vi /svn/pro_bak/hook/pre-revprop-change2. 初始化镜像库
svnsync init file///svn/pro_bak 源url --source-username 源svn用户名 --source-password 123456 --sync-username sync --sync-password 123456 --no-auth-cacheor直接
#可能需要认证用户名和密码
svnsync init file///svn/pro_bak 源url3. 执行远程同步命令
svnsync sync file///svn/pro_bak4. pre-revprop-change解锁
当在初始化或者同步的时候遇到提示
从目标版本库获得锁失败,当前被"linux-fghj:07f6a180-fe46-11de-8346-ddb1d640fb86"持有or
Failed to get lock on destination repos,currently held by "xxxxxxx"svn中可以使用svn cleanup解除,svnsync执行下面代码解除锁定
#在版本库0删除属性 "svn:sync-lock"
svn propdel svn:sync-lock --revprop -r 0 file///svn/pro_bak/5. 修改远程版本库地址
如果远程版本库地址发生改变(如域名地址或者IP地址发生变化),通过propset命令实现
#显示原来远程版本库url
svn propget svn:sync-from-url –-revprop -r 0 file///svn/pro_bak/
http://www.xxx.com/svn/rep
#设置新的远程地址 http://www.yyy.com/svn/rep
svn propset svn:sync-from-url –-revprop -r 0 http://www.yyy.com/svn/rep file///svn/pro_bak
#进行同步
svnsync sync file///svn/pro_bak6. 通过脚本定时备份
创建同步脚本svn_sync.sh,添加下面内容
#!/bin/bash
svnsync sync --non-interactive file///svn/pro_bak然后使用crontab定时执行
[root@localhost ~]# crontab -e定时设置
#每天0点备份,并记录日志sync.log
#前两个0表示时间00:00,中间两个*表示日期,第5个星期几(0-6表示每天)
0 0 * * 0-6 /svn/svn_sync.sh >> /svn/sync.log 2>&17. 还可以进入远程版本库所在服务器添加钩子自动同步(提交代码的时候自动同步)
在远程版本库服务器中编辑提交使用的post-commit脚本(进入版本库hooks目录)
vim post-commit追加内容
#如果备份镜像服务器url是svn://196.168.0.2/,可以在命令后面添加&(直接提交影响提交速度)
svnsync sync svn://196.168.0.2/svn/pro_bak --source-username 源svn用户名 --source-password 123456 --sync-username sync --sync-password 123456 --no-auth-cache别忘了权限
chmod 777 post-commit