Shell脚本实现按目录备份发布回滚
Posted guizitc110
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于Shell脚本实现按目录备份发布回滚的主要内容,如果未能解决你的问题,请参考以下文章