shell生成rsync同步脚本
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同步脚本的更多相关文章
- shell脚本 inotify + rsync 同步脚本
1.这是很简单的一个 文件监控+触发同步脚本 监控一台服务器下的一个文件夹,发生改变则向另一个个文件夹进行同步. 具体的inotify命令 rsync命令 可以看linux分类下的介绍 inoti ...
- rsync同步脚本
#!/bin/bash export LANG=C date=`date +%Y-%m-%d-%H%M` red=`echo -e "\033[0;31m"` blue=`echo ...
- 利用rsync+inotify实现数据实时同步脚本文件
将代码放在Server端,实现其它web服务器同步.首先创建rsync.shell,rsync.shell代码如下: #!/bin/bash host1=133.96.7.100 host2=133. ...
- 使用 PHP + shell 生成 一键设置权限的脚本。
linux 系统 支持PHP脚本一键设置环境.shell脚本一键设置环境.那么 我今天 使用 PHP + shell 生成 一键设置权限的脚本. 举例子:linux服务器 一键配置discuz网站环 ...
- 源码包的安装、rsync同步、inotify监测
一.源码包的安装 1.源码包的作用:yum 使用的是rpm包,rpm包安装的不能指定安装位置 源码包可以按需选择/定制,及时修复bug ,适用于各种平台 2.大致过程:源码包——>make gc ...
- Linux rsync 同步实践
目录[-] 1. rsync 同步的大致思路 2. rsync的安装 3. rsync的配置 4. rsync的基本操作 服务器端启动 注2. 实时同步 注3. rsync通过linux防火墙 公司网 ...
- Ubuntu下多服务器 Rsync同步镜像服务配置
主服务器:192.168.5.13_ubuntu 从服务器:192.168.5.11_centos ================== 1> 在两台主机上分别安装rsync========== ...
- rsync同步目录及同步文件
最简单的只读同步工作. 一,服务端的配置 1,安装rsync(阿里云默认已有此程序) 略 2,生成文件rsyncd.conf,内容如下: #secrets file = /etc/rsyncd.sec ...
- 实现Rsync同步Nginx前端配置
近期,由于我们的阿里前端服务器频频受到恶意的流量攻击,导致前端NGINX进入黑洞而无法正常访问公司网站. 按之前的预计方法,采用加速乐及备用全配置前端的作法,将恶意短时流量攻击的损失时间降到最短.现将 ...
随机推荐
- Python 中关于 round 函数的坑
round函数很简单(而且不需要引入math模块),对浮点数进行近似取值,保留几位小数. 比如 # -*- coding: UTF-8 -*- r1=round(12.12345,3) r2=roun ...
- Spring Cloud微服务Ribbon负载均衡/Zuul网关使用
客户端负载均衡,当服务节点出现问题时进行调节或是在正常情况下进行 服务调度.所谓的负载均衡,就是当服务提供的数量和调用方对服务进行 取舍的调节问题,在spring cloud中是通过Ribbon来解决 ...
- JSON数组形式字符串转换为List<Map<String,String>>的8种方法
package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArr ...
- Java基础:Java简介及安装配置(1)
Java简介 Java是Sun公司于1995年推出的高级编程语言,具有跨平台特性,编译后的程序能够运行在多种类型的操作系统平台上. 1.1 Java应用程序版本 Java的3个独立用于开发不同类型应用 ...
- python如何安装pip及venv管理
问题1:如何安装pip python的虚拟环境virtualenv的管理 背景: (1)python的版本很多,每个应用项目可能需要使用不同的版本,这样会导致兼容性问题: python的插件相当的丰富 ...
- monkey自定义脚本实践
自定义脚本的稳定性测试 常规Monkey测试执行的是随机的事件流,但如果只是想让Monkey测试某个特定场景这时候就需要用到自定义脚本了,Monkey支持执行用户自定义脚本的测试,用户只需要按照Mon ...
- Python 字符编码及其文件操作
本章节内容导航: 1.字符编码:人识别的语言与机器机器识别的语言转化的媒介. 2.字符与字节:字符占多少个字节,字符串转化 3.文件操作:操作硬盘中的一块区域:读写操作 注:浅拷贝与深拷贝 用法: d ...
- CCProxy使用说明
CCProxy:通过手机调试webservice工具 第一步配置,点击设置 弹出如下页面点击E 弹出如下页面 配置端口,点击确定配置完成!! c#项目在路径为DCYS\.vs\config下找到文件a ...
- POJ 3974 Palindrome (算竞进阶习题)
hash + 二分答案 数据范围肯定不能暴力,所以考虑哈希. 把前缀和后缀都哈希过之后,扫描一边字符串,对每个字符串二分枚举回文串长度,注意要分奇数和偶数 #include <iostream& ...
- H5与APP混合开发相关知识点总结
整理一: 现在有这么个需求,如下图 app端点击右上角的 加 号 ,弹出模态框 这个项目是基于vue写的,客户端需要调用H5页面里定义的js方法,但是在vue里,所有的方法都是在组件内部声明的,也只能 ...