Shell脚本实现按目录备份、发布、回滚
分享最近写的一段Shell脚本,用来实现按发布包的文件目录结构备份生产线文件,以及回滚操作。
1 #!/bin/sh 2 path="/home/www/site1" 3 pub=$path"/release/pub/MBOXII/trunk" #发布目录 4 bak=$path"/release/bak" #生产目录备份文件 5 prod=$path #生产目录 6 pub_file_plus=$path"/release/pub_plus.txt" #增量文件:发布包相对生产包的新增文件列表日志 7 8 #执行备份 9 dobak(){ 10 #删除之前的备份文件(夹) 11 for file in $(ls $bak) 12 do 13 #echo $bak"/"$file 14 rm -rf $bak"/"$file 15 done 16 if [ -f $pub_file_plus ] 17 then 18 rm -rf $pub_file_plus 19 fi 20 #将发布目录对应的生产目录的文件(夹)按原结构备份 21 function read_dir(){ 22 for file in `ls $1` 23 do 24 dir_r=$1"/"$file 25 dir_p=${dir_r/#$pub/$prod} 26 dir_b=${dir_r/#$pub/$bak} 27 if [ -d $dir_r ] #注意此处之间一定要加上空格,否则会报错 28 then 29 if [ -d $dir_p ] 30 then 31 #echo $dir_b 32 mkdir -p -m 755 $dir_b #创建对应的备份文件夹 33 read_dir $1"/"$file #递归子目录 34 else 35 echo $dir_p &>>$pub_file_plus 36 fi 37 else 38 if [ -f $dir_p ] 39 then 40 #echo $dir_p" "$dir_b 41 cp $dir_p $dir_b 42 else 43 echo $dir_p &>>$pub_file_plus 44 fi 45 fi 46 done 47 } 48 read_dir $pub 49 echo '备份完成' 50 } 51 52 #执行发布 53 dopub(){ 54 cp -arf $pub/* $prod 55 echo '发布完成' 56 } 57 58 #执行回滚 59 dorollback(){ 60 for file in $(cat $pub_file_plus) 61 do 62 #echo $bak"/"$file 63 rm -rf $file 64 done 65 cp -arf $bak/* $prod 66 echo '回滚完成' 67 } 68 69 usage() { 70 cat <<EOF 71 产品发布脚本使用方法: 72 1 备份 73 2 发布 74 3 回滚 75 4 退出 76 EOF 77 } 78 79 usage 80 echo '请输入操作指令:' 81 read cmd 82 while [ $cmd != 'exit' ] 83 do 84 case $cmd in 85 1) 86 dobak 87 ;; 88 2) 89 dopub 90 ;; 91 3) 92 dorollback 93 ;; 94 4) 95 #exit 96 break 97 ;; 98 *) 99 usage 100 ;; 101 esac 102 echo '请输入操作指令:' 103 read cmd 104 done
转载于:https://www.cnblogs.com/guizitc110/p/9335501.html
Shell脚本实现按目录备份、发布、回滚相关推荐
- 我的shell脚本实战-编写一个系统发布脚本
平常我们会使用Jenkins发布系统,Jenkins可以从代码更新,编译到发布这样的一条龙服务.操作成本很低,作为程序员,肯定不满足于简单的界面操作. 于是我决定使用shell写一个自动发布的脚本,既 ...
- shell脚本 -d 是目录文件,那么-e,-f分别是什么?还有! -e这又是什么意思呢?
shell脚本 -d 是目录文件,那么-e,-f分别是什么?还有"! -e"这又是什么意思呢? -e filename 如果 filename存在,则为真 -d filename ...
- 执行shell脚本进入指定目录
在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本chdir.sh: [plain] view plain copy #!/bin/sh cd /home/user/Dow ...
- shell脚本进入指定目录
在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本 framework.sh #!/bin/bash echo "\n----------- 开始进入指定文件夹 - ...
- 【Shell】执行shell脚本进入指定目录
在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本chdir.sh: #!/bin/sh cd /home/jiulong/mstar/TVOS_Release_V1.0.6 ...
- Liunx下的日志清理shell脚本实战之日志备份
Liunx下的日志清理shell脚本实战 一.脚本实现功能以及要求 二.shell脚本内容 一.脚本实现功能以及要求 二.shell脚本内容 一.脚本实现功能以及要求 1.日志备份目录,将日志备份到/ ...
- linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...
前言 服务器.vps,难免会遇到各种问题,丢失数据,则必然痛心疾首啊!!! 数据无价,so建议养成定期备份的习惯!而且,要多备份几份,本地.网盘.FTP空间等,都多保存几份! 这里,就为大家带来一个l ...
- Shell脚本:Linux下定时备份MySQL数据库
对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间和精力,还灰常不专业的说.于是,有了下面这段脚本的出现.参 ...
- linux mysql清除缓存_案例:通过shell脚本实现mysql数据备份与清理
导读 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行,实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此 ...
最新文章
- eclipse for C/C++
- 谷歌发表“移动AR设计的最佳做法”
- 【CV】54篇最新CV领域综述论文速递!涵盖14个方向:目标检测/图像分割/医学影像/人脸识别等方向...
- xmpp协议框架包介绍:org.xmpp.packet.Packet+JID+PacketInterceptor+Session
- Ubuntu中MySQL的启动/关闭/重启
- linux按照更改时间查看文件,Linux查看特定时间段内修改过的文件
- Android IOS WebRTC 音视频开发总结(四一)-- QQ和webrtc打洞能力pk
- JavaScript.Remove
- uinttest 异步多线程生成测试报告
- 用css+jquery实现视频永远占满全屏效果
- GIS空间分析 栅格数据分析2 成本距离分析
- 微信小程序 -- 语音合成:将文字转为语音(插件:微信同声传译)
- python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...
- MySQL read_only 与 super_read_only 之间的关系
- 华容道 java_Java-华容道
- 二手房买卖必须弄懂的七件事
- Java/Kotlin 最多保留两位小数处理方法
- 基于V4L2的视频驱动开发
- SYN, FIN, ACK, PSH, RST, URG
- 微软人工智能-深度学习框架和工具.md