svnsync同步备份svn版本库(2)

#变量定义
svnstorage=("test1" "test2" "test3" "test4" "test5" "test6" "test7" "test8" "test9")
svndir="/srv/svn"
if [ ! -d $svndir ]; then
 mkdir -p $svndir
 chown -R www-data.www-data $svndir
fi

#循环创建目标版本库
for svn in ${svnstorage[*]}
do
 #删除已有的svn版本库
 if [ -d $svndir/$svn ]; then
  rm -r $svndir/$svn
 fi
 #创建目标版本库
 svnadmin create $svndir/$svn
 #修改pre-revprop-change
 cp $svndir/$svn/hooks/pre-revprop-change.tmpl $svndir/$svn/hooks/pre-revprop-change
 chmod +x $svndir/$svn/hooks/pre-revprop-change
 sed -i "s/exit 1/exit 0/g" $svndir/$svn/hooks/pre-revprop-change
 #修改版本库属主(svn通过apache使用http协议访问,因此属主为www-data)
 chown -R www-data.www-data $svndir/$svn
done

初始化&&同步

初始化命令

初始化,建立目标库与源库之间的同步关系

svnsync initialize 目标库URL  源库URL

同步命令

svnsync synchronize 目标库URL

实现脚本

为了实现镜像版本库的同步,因此将可以同时访问A&&B服务器上的版本库的用户名和密码用变量的方式写在了脚本中

#!/bin/bash

#变量定义
svnstorage=("test1" "test2" "test3")
svndir="/srv/svn"
if [ ! -d $svndir ]; then
 mkdir -p $svndir
 chown -R www-data.www-data $svndir
fi

#循环创建目标版本库
for svn in ${svnstorage[*]}
do
 #删除已有的svn版本库
 if [ -d $svndir/$svn ]; then
  rm -r $svndir/$svn
 fi
 #创建目标版本库
 svnadmin create $svndir/$svn
 #修改pre-revprop-change
 cp $svndir/$svn/hooks/pre-revprop-change.tmpl $svndir/$svn/hooks/pre-revprop-change
 chmod +x $svndir/$svn/hooks/pre-revprop-change
 sed -i "s/exit 1/exit 0/g" $svndir/$svn/hooks/pre-revprop-change
 #修改版本库属性
 chown -R www-data.www-data $svndir/$svn
done


#初始化&&同步目标版本库
localip="192.168.1.2"
remoteip="192.168.1.1"
username="root"
password="root"
for svn in ${svnstorage[*]}
do
 #初始化
 svnsync initialize $localip/svn/$svn $remoteip/svn/$svn --username $username --password $password
 #同步
 if [ $? -eq 0 ]; then
  svnsync synchronize $localip/svn/$svn --username $username --password $password
 fi
done

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/e0f4408065011359ba1e076128a3579e.html