svn同步备份到远程服务器,创建项目时都自动创建

svn项目备份shell脚本
本地服务器–A
远程服务器–B
项目名称—–$1

vi svnserve.conf
[general]
### 未授权用户无权限,授权用户可写
anon-access = none
auth-access = write
### 使用统一用户密码文件,密码是明文的
password-db = /var/svn/conf/passwd
### 根据项目需要制定详细权限
# authz-db = authz

A服务器创建项目脚本
vi createprojiect
svnadmin create /var/svn/”$1″
cp /var/svn/conf/svnserve.conf /var/svn/”$1″/conf/svnserve.conf

B服务器创建项目脚本
######################demo为B服务器创建并配置好的项目
vi makeBackup
#!/bin/sh
svnadmin create /var/svn/”$1″
cp /var/svn/demo/conf/svnserve.conf /var/svn/”$1″/conf/svnserve.conf
cp /var/svn/demo/hooks/pre-revprop-change /var/svn/”$1″/hooks/
cp /var/svn/demo/hooks/start-commit /var/svn/”$1″/hooks/

A服务器执行

svnsync –sync-username B服务器svn用户名 –sync-password B服务器svn密码 –source-username A服务器svn用户名 –source-password B服务器svn密码 init svn://B服务器/”$1″ svn://A服务器/”$1″
——————————————————
vi /var/svn/conf/sync2backup
添加以下内容
svnsync sync svn://backup.qqgexing.com/$1 >> /var/log/svn/sync.log

—————————————————————————————————————————————————————————————-

最终汇总到A服务器的脚本文件
#!/bin/sh
# 【文件说明】
# 使用脚本简便创建svn项目并设置备份同步
# 【用法】
# ./creatProject arg1 [backup]
# 第二个参数为backup的时候才会设置项目备份

if [ "$1" = "" ]; then
echo "必须输入项目名称"
exit 0
else
echo "正在创建版本库...";
fi

# 创建svn版本库,使用通用权限配置
svnadmin create /var/svn/"$1"
cp /var/svn/conf/svnserve.conf /var/svn/"$1"/conf/svnserve.conf

if [ "$2" = backup ]; then
# 到B服务器同步项目
ssh root@B服务器 "/var/svn/conf/makeBackup $1"

# 版本库备份初始化
svnsync --sync-username B服务器svn用户名 --sync-password B服务器svn密码 --source-username A服务器svn用户名 --source-password B服务器svn密码 init svn://B服务器/"$1" svn://A服务器/"$1"

# 备份项目添加到备份定时脚本
echo -e "\n# $1 \necho 'Project : $1' >> /var/log/svn/sync.log \nsvnsync sync svn://B服务器/$1 >> /var/log/svn/sync.log" >> /var/svn/conf/sync2backup
else
echo "注意:没有把项目添加到备份列表中"
fi

echo "版本库配置完成。使用通用的权限配置文件。"

发表评论