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中SocketServer 实现客户端与服务器间非阻塞通信
利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信 版权声明 本文转自:http://blog.csdn.net/cnmilan/article/details/9664823 ...
- OOM分析工具
OOM (OutOfMemoryError) 1.MAT工具 在eclipse中安装.Help>Eclipse Marketplace 搜索MAT 接下来运行程序,run configratio ...
- 合并K个有序数组(链表)【字节跳动面试算法题】
本题是本人字节跳动一面考的算法题原题是有序数组,一时没想到怎么解决数组的问题,但是如果给的是有序链表数组,则可以用下面的方法解决 可以利用最小堆完成,时间复杂度是O(nklogk),具体过程如下: 创 ...
- 记录一次被bc利用跳转过程分析
挖公司的项目站,发现站点一访问就直接跳转到了赌博站,有点懵逼,简单分析下hc利用过程: 公司项目站:http://***.com 当我访问它: 通过http:***.com直接跳转到了306648.c ...
- python学习 day13 装饰器(一)&推导式
装饰器&推导式 传参位置参数在前,关键词参数在后 函数不被调用内部代码不被执行 函数在被调用的时候,每次都会开辟一个新的内存地址,互不干扰 #经典案例 def func(num): def i ...
- 主机管理+堡垒机系统开发:strace命令用法详解(六)
一.简单介绍 strace是什么? 按照strace官网的描述, strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进 ...
- openstack项目【day23】:keystone组件HTTP协议
阅读目录 一 为何要学习HTTP协议 二 用户上网过程 三 HTTP协议 part1 http协议概述 part2 请求协议 part3 响应协议 四 抓包分析HTTP协议 一 为何要学习HTTP协议 ...
- Ubuntu16下Hive 安装
0.安装环境和版本 Ubuntu16,hadoop版本是2.7.2 ,选择Hive版本为 hive-2.1.17 1. Hive安装包下载 地址: https://mirrors.tuna.tsin ...
- Java子线程中操作主线程Private级别数据
两个类分别如下: <pre name="code" class="java">package Demo2; import java.util.*; ...
- expprt与环境变量
一.Windows 环境变量 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似 ...