svn同步到另一台服务器

利用hooks中的post-commit和ssh无密连接

先实现ssh无密连接

1.在svn服务器下生成公钥/私钥对。

ssh-keygen -t rsa -P ''

-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它在当前账号的默认目录下(不设置就是root)下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。

2.把刚刚生成的id_rsa.pub复制到另一台服务器。

在要同步到的服务器对应的默认文件夹(默认root),生成.ssh/authorized_keys文件,将id_rsa.pub内容复制过来。


3.将文件改成600权限

 chmod 600 .ssh/authorized_keys
 
4.设置之后登录一次
ssh xxx.xxx.xxx.xxx
yes/no选yes,之后就ok了
 
ssh无密连接完成后,配置svn的post-commit
 
在svn目录下,hooks文件夹,创建post-commit文件
#!/bin/sh   

REPOS="$1"                  # 仓库的路径   
REV="$2"                    # 新提交的版本号   
LOGFILE=/var/log/svn.log    # 钩子脚本的日志   
# 脚本的标准输出和标准错误输出都打印到日志文件里   
exec 1>>"$LOGFILE" 
exec 2>&1   

SVNLOOK=/usr/bin/svnlook  
TIME=$(date "+%Y-%m-%d %H:%M:%S")   
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")  #提交作者   
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS) #修改的目录集合   
MESSAGE=$($SVNLOOK log -r $REV "$REPOS")    #提交时的备注信息,不建议用中文   

# SVN客户端配置,需要自行修改**********************************   
CLIENT1=xxx.xxx.xxx.xxx        #需要同步到的服务器   
CLIENTSVNROOT=/data/apps    #WEB服务器的代码根目录   
SVNUSER="zb"      
SVNPASSWD="123456" 
#**************************************************************   

function myecho() {   
    echo "$TIME" "$*" 
}   

myecho "**************************************************************" 
myecho "提交版本:$REV 作者:$AUTHOR" 
myecho "提交备注:$MESSAGE" 
myecho "修改目录:$(echo $CHANGEDDIRS | tr '\n' ' ')" 

MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)  #CHANGEDDIRS里的主目录   
# 遍历提交的代码目录,同步到WEB服务器上   
while [ "$CHANGEDDIRS" != "" ];do  
    PROJECT=$(echo $MASTERDIR | awk -F / '{print $1}')   
    # 判断项目文件夹   
    myecho   
    myecho "项目:$PROJECT 同步目录:$MASTERDIR" 
    myecho "同步 $MASTERDIR 到 $CLIENT1:$CLIENTSVNROOT/$MASTERDIR" 
    # 无密码ssh连接到客户端服务器,执行svn up   
     /usr/bin/ssh root@$CLIENT1 "export LANG=en_US.UTF-8; svn up --non-interactive --username $SVNUSER --password $SVNPASSWD '$CLIENTSVNROOT/$MASTERDIR'" # 在目录集合里删除已经同步好的目录   
    CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "^$MASTERDIR")   
    # 获取新的需要同步的主目录   
    MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)   
done

保存即可

转载于:https://www.cnblogs.com/suhot/p/6908348.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值