test

#!/bin/bash
#
# Rsync Install Script
# Last Updated
#
##### modify by Jinayf  #####

######手动修改以下内容######

#测试脚本名称
test_name='obs_test111.sh'
#测试分支名称,以空格隔开
branch_name=(test1 test2 test3 test4)
#本地目录,以空格隔开
local_dir=(/wos/test1/portal111/ /wos/test1/portal222/ /wos/test1/portal333/ /wos/test1/portal444/)
#代码发布目录
web_dir='/data/www/vhosts/wos-obs.wondershare.cn/httpdocs/'
#发布服务器IP,以空格隔开
server_ip=(10.10.18.149 10.10.18.149 10.10.18.130 10.10.18.130)
#脚本存放地址
script_dir='/data/wos/rsync/obs'
#过滤不同步内容,以空格隔开
exclude_txt=(/.git/ /runtime/ .env web/index.php config/main.php)
#口令文本
rsync_scrt='/usr/local/rsync/rsync.scrt'

######手动修改内容结束######

echo "========================================"
echo "Generating Rsync script"

#检测脚本是否已经存在,存在则退出
if [[ -f "$script_dir/$test_name" ]];then
        echo "$script_dir/$test_name is exists!"
        exit
fi

#检测本地目录是否存在,不存在则创建
for d in ${local_dir[@]}
do
    if [[ ! -d $d ]];then
        mkdir -p $d
    fi
done

#检测脚本存放目录是否存在,不存在则创建
if [[ ! -d $script_dir ]];then
    mkdir -p $script_dir
fi

#检测过滤文本是否存在,不存在则创建
if [[ ! -d $script_dir/exclude.txt ]];then
    rm $script_dir/exclude.txt -rf
fi

#生成过滤文本
for each in ${exclude_txt[@]}
do
cat >> $script_dir/exclude.txt<<eof
$each
eof
done

cat > $script_dir/$test_name<<eof
#!/bin/sh

echo "\$1"
model=\$
echo "\${model}"
version=\$

case \$model in
eof

num=${#branch_name[@]}
;i<$num;i++))
do
cat >> $script_dir/$test_name<<eof
    ${branch_name[$i]})
        echo "deploy_model: \${model}"
        echo "version: \${version}"
    sudo chown -R  apache:users ${local_dir[$i]}
    sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt ${local_dir[$i]} apache@${server_ip[$i]}::apache$web_dir
    ;;
eof
done

cat >> $script_dir/$test_name<<eof
    *)
        exit
        ;;
esac
eof
echo "Rsync script is OK"
echo "========================================"

real

#!/bin/bash
#
# Rsync Install Script
# Last Updated
#
##### modify by Jinayf  #####

######手动修改以下内容######

#真实脚本名称
real_name='obs111.sh'
#预发布本地目录
pre_local_dir='/wos/obs96111/'
#真实发布本地目录
real_locla_dir='/wos/obs230111/'
#预发布备份目录
pre_backups_dir='/data/wosbak/obs/pre111/'
#真实发布备份目录
real_backups_dir='/data/wosbak/obs/real111/'
#代码发布目录
web_dir='/data/www/vhosts/wos-obs.wondershare.cn/httpdocs/'
#预发布IP
pre_ip=(192.168.10.96)
#真实发布IP,以空格隔开
real_ip=(192.168.10.195 192.168.10.196 192.168.10.201 192.168.10.203)
#脚本存放地址
script_dir='/data/wos/rsync/obs'
#过滤不同步内容,以空格隔开
exclude_txt=(/.git/ /runtime/ .env web/index.php config/main.php)
#口令文本
rsync_scrt='/usr/local/rsync/rsync.scrt'

######手动修改内容结束######

echo "========================================"
echo "Generating Rsync script"

#检测脚本是否已经存在,存在则退出
if [[ -f "$script_dir/$real_name" ]];then
        echo "$script_dir/$real_name is exists!"
        exit
fi

#检测本地目录是否存在,不存在则创建
if [[ ! -d $pre_local_dir ]];then
    mkdir -p $pre_local_dir
fi

if [[ ! -d $real_locla_dir ]];then
    mkdir -p $real_locla_dir
fi

#检测脚本存放目录是否存在,不存在则创建
if [[ ! -d $script_dir ]];then
    mkdir -p $script_dir
fi

#检测备份目录是否存在,不存在则创建
if [[ ! -d $pre_backups_dir ]];then
    mkdir -p $pre_backups_dir
fi

if [[ ! -d $real_backups_dir ]];then
    mkdir -p $real_backups_dir
fi

#检测过滤文件是否存在,存在则删除
if [[ -f $script_dir/real_exclude.txt ]];then
        rm $script_dir/real_exclude.txt -rf
fi

#生成过滤文本
for each in ${exclude_txt[@]}
do
cat >> $script_dir/real_exclude.txt<<eof
$each
eof
done

cat > $script_dir/$real_name<<eof
#!/bin/sh

echo "\$1"
model=\$
echo "\${model}"
version=\$

case \$model in
    Pre)
        echo "deploy_model: \${model}"
        echo "version: \${version}"
        #同步代码到发布目录
    sudo chown -R  apache:users $pre_local_dir
    for pi in ${pre_ip[@]}
    do
        sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt $pre_local_dir apache@\$pi::apache$web_dir
    done
        #创建备份目录
        mkdir -p $pre_backups_dir\${version}
        #把代码复制到备份目录
        cp -r $pre_local_dir* $pre_backups_dir\${version}
        sudo chown -R  apache:users $pre_backups_dir\${version}
        ;;
    Real)
        echo "deploy_model: \${model}"
        echo "version: \${version}"
        #同步代码到发布目录
    sudo chown -R  apache:users $real_locla_dir
    for ri in ${real_ip[@]}
    do
        sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt $real_locla_dir apache@\$ri::apache$web_dir
    done
        #创建备份目录
        mkdir -p $real_backups_dir\${version}
        #把代码复制到备份目录
        cp -r $real_locla_dir* $real_backups_dir\${version}
        sudo chown -R  apache:users $real_backups_dir\${version}
        ;;
    Rollback_Pre)
        echo "deploy_model: \${model}"
        echo "version: \${version}"
    for pib in ${pre_ip[@]}
    do
            sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt $pre_backups_dir\${version}* apache@\$pib::apache$web_dir
    done
        ;;
    Rollback_Real)
        echo "rollback_model: \${model}"
        echo "version: \${version}"
    for rib in ${pre_ip[@]}
    do
            sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt $real_backups_dir\${version}* apache@\$rib::apache$web_dir
    done
        ;;
    *)
        exit
        ;;
esac

eof
echo "Rsync script is OK"
echo "========================================"

shell生成rsync同步脚本的更多相关文章

  1. shell脚本 inotify + rsync 同步脚本

    1.这是很简单的一个 文件监控+触发同步脚本 监控一台服务器下的一个文件夹,发生改变则向另一个个文件夹进行同步. 具体的inotify命令  rsync命令  可以看linux分类下的介绍 inoti ...

  2. rsync同步脚本

    #!/bin/bash export LANG=C date=`date +%Y-%m-%d-%H%M` red=`echo -e "\033[0;31m"` blue=`echo ...

  3. 利用rsync+inotify实现数据实时同步脚本文件

    将代码放在Server端,实现其它web服务器同步.首先创建rsync.shell,rsync.shell代码如下: #!/bin/bash host1=133.96.7.100 host2=133. ...

  4. 使用 PHP + shell 生成 一键设置权限的脚本。

    linux 系统 支持PHP脚本一键设置环境.shell脚本一键设置环境.那么 我今天 使用 PHP  + shell 生成 一键设置权限的脚本. 举例子:linux服务器 一键配置discuz网站环 ...

  5. 源码包的安装、rsync同步、inotify监测

    一.源码包的安装 1.源码包的作用:yum 使用的是rpm包,rpm包安装的不能指定安装位置 源码包可以按需选择/定制,及时修复bug ,适用于各种平台 2.大致过程:源码包——>make gc ...

  6. Linux rsync 同步实践

    目录[-] 1. rsync 同步的大致思路 2. rsync的安装 3. rsync的配置 4. rsync的基本操作 服务器端启动 注2. 实时同步 注3. rsync通过linux防火墙 公司网 ...

  7. Ubuntu下多服务器 Rsync同步镜像服务配置

    主服务器:192.168.5.13_ubuntu 从服务器:192.168.5.11_centos ================== 1> 在两台主机上分别安装rsync========== ...

  8. rsync同步目录及同步文件

    最简单的只读同步工作. 一,服务端的配置 1,安装rsync(阿里云默认已有此程序) 略 2,生成文件rsyncd.conf,内容如下: #secrets file = /etc/rsyncd.sec ...

  9. 实现Rsync同步Nginx前端配置

    近期,由于我们的阿里前端服务器频频受到恶意的流量攻击,导致前端NGINX进入黑洞而无法正常访问公司网站. 按之前的预计方法,采用加速乐及备用全配置前端的作法,将恶意短时流量攻击的损失时间降到最短.现将 ...

随机推荐

  1. dubbo框架提供Main方法运行容器的几种方式(转)

      本文使用的是dubbo提供的主类com.alibaba.dubbo.container.Main启动容器. 主要区别是提供不同插件的的启动方式. 目录 一.项目内容  1.1.目录结构图  1.2 ...

  2. PyCharm专业版的安装与破解

    1.下载pycharm:https://www.jetbrains.com/pycharm/download/#section=windows 2.这是下载好的文件,双击运行即可 3.选择安装路径 4 ...

  3. mpvue——引入iconfont字体图标

    前言 有问题可以随时提问,评论私信,只要我有时间我都会第一时间回复.当大家发现这篇文章不适用的时候烦请告知下,我好做好更改! 放置 下载好的字体图标放在static目录下,我是自己又创建了一个icon ...

  4. SD第九届省赛B题 Bullet

    Bullet Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description In G ...

  5. Flask websocket

    websocket 概念 是一套协议,协议规定了: - 连接时需要握手 - 发送数据进行加密 - 连接之后不断开 意义 实现长轮询等操作 框架支持 - flask,gevent-websocket - ...

  6. 从浅入深详解独立ip网站域名恶意解析的解决方案

    立IP空间的好处想必大家都能耳熟闻详,稳定性强,利于seo等让大家选择了鼎峰网络香港独立IP空间.那么, 网站独享服务器IP地址,独立IP空间利于百度收录和权重的积累.不受牵连.稳定性强等诸多优势为一 ...

  7. prometheus 标签使用

    标签的配置使用 考虑到要明智地使用标签,我们需要给事物重新命名.在一个集中的.复杂的监视环境中,我们有时无法控制正在监视的所有资源以及它们公开的监视数据.重新标记允许在自己的环境中控制.管理和潜在地标 ...

  8. 无连接运输的UDP、可靠数据传输原理、面向连接运输的TCP

    由[RFC 768]定义的UDP只是做了运输协议能够做的最少工作.除了复用/分解功能极少量的差错检测外,它几乎没有对IP增加别的东西.如果应用程序开发人员选择UDP而不是TCP,则该应用程序差不多就是 ...

  9. 数据结构Java实现04---树及其相关操作

    首先什么是树结构? 树是一种描述非线性层次关系的数据结构,树是n个数据结点的集合,这些集结点包含一个根节点,根节点下有着互相不交叉的子集合,这些子集合便是根节点的子树. 树的特点 在一个树结构中,有且 ...

  10. 滚动锚定(Scroll Anchoring)- 让视口内容不再因视口上方 DOM 元素的高度变化而产生跳动

    不知道你有没有经历过这样的场景:当你打开一张“多图杀猫”的页面后,正一张图一张图边滚边看,在你刚准备定睛看某一张图的时候,这张图突然被它上面的内容挤到了视口下方,然后你赶紧把滚动条往下拉,试图追赶这张 ...