Shell脚本实现按目录备份、发布、回滚

本文分享了一段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

1. 上线前的备份工作: 按日期生成上线记录文件夹 文件结构目录和正式环境保持一致 备份你所涉及到的修改文件 2. 上线前的准备工作: 把你修改到的patch文件 到 PATCH_ROOT 目录中 文件结构目录和正式环境保持一致 3. 上线工作: diff -r -b 比较 备份环境 和 发布环境 文件差异; 再次确定修改是否正确 PATCH_ROOT 下的文件夹和文件 发布到正式环境 即可; 完成上线后,要检查系统功能是否正确。 4. 回滚工作: BAK_ROOT 下的文件夹和文件 回滚到正式环境 即可 ; 完成回滚后 要检查系统功能是否正确回滚。 5. shell脚本功能: === 参数配置 ===: #指定正式环境的路径 正式环境的文件 WEB_ROOT=/var/www/html echo ${WEB_ROOT} #指定发布环境的路径 发布环境的文件 PAT_ROOT=/home/chenlong/blog echo ${PAT_ROOT} #指定发布管理日志的路径 记录发布过程,完成文件备份和文件patch PUB_ROOT=/home/chenlong/Publish === 使用方法 ===: #./apply.sh blog /home/chenlong/patch_sh/list20100520.txt 例如 -bash-3.2$ ./apply.sh blog /home/chenlong/patch_sh/list20100520.txt /var/www/html /home/chenlong/blog /home/chenlong/Publish blog /home/chenlong/patch_sh/list20100520.txt /home/chenlong/patch_sh === cmd === :/home/chenlong/patch_sh/apply_cp.sh /var/www/html/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/bak /bin/cp /var/www/html/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/bak/var/www/html/wp-includes/js/common.js === cmd === :/home/chenlong/patch_sh/apply_cp.sh /var/www/html/upload_editor.php /home/chenlong/Publish/blog/2010-05-21/bak /bin/cp /var/www/html/upload_editor.php /home/chenlong/Publish/blog/2010-05-21/bak/var/www/html/upload_editor.php === cmd === :/home/chenlong/patch_sh/apply_cp.sh /var/www/html/BM/Tpl/default/Admin/Img/index.php /home/chenlong/Publish/blog/2010-05-21/bak /bin/cp /var/www/html/BM/Tpl/default/Admin/Img/index.php /home/chenlong/Publish/blog/2010-05-21/bak/var/www/html/BM/Tpl/default/Admin/Img/index.php === cmd === :/home/chenlong/patch_sh/apply_cp.sh /home/chenlong/blog/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/patch /bin/cp /home/chenlong/blog/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/patch/home/chenlong/blog/wp-includes/js/common.js === cmd === :/home/chenlong/patch_sh/apply_cp.sh /home/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值