我是靠谱客的博主 潇洒蜻蜓,最近开发中收集的这篇文章主要介绍linux回滚该文件,linux下文件形式的更新与回滚(增加回滚删除与新增后的回滚)...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#!/bin/bash

#20150619重新定义编辑升级脚本

#update.sh

#1、更新升级

#2、回滚升级

# 1、查看回滚目录

# 2、选择回滚目录

#3、退出升级

#update|rollback

#ROLLBACK_HOME_DOC目录根据自己需要进行修改

NEW_DOC=$1

OLD_DOC=$2

if [ $# -lt 2 ];then

echo "参数错误"

echo "格式: ./update.sh [NEW_DOC] [OLD_DOC] [update/rollback]"

else

UPDATE_TIME=`date +%Y%m%d%H%M%S`

echo "格式: ./update.sh [NEW_DOC] [OLD_DOC] [update/rollback]"

read -p "输入项目名字: " PROJECT_NAME

ROLLBACK_HOME_DOC=/data/rollback/$PROJECT_NAME

function update(){

if [ -d $NEW_DOC ] && [ -d $OLD_DOC ];then

####################################################################

##创建回滚备份目录

for DOC in `find $NEW_DOC -type d`

do

ROLLBACK_DOC=`echo $DOC|sed 's#'$NEW_DOC'#'$UPDATE_TIME'/#'`

mkdir -p /$ROLLBACK_HOME_DOC/$ROLLBACK_DOC/

#echo $PROJECT_NAME

done

####################################################################

for NEW_FILE in `find $NEW_DOC -type f`

do

for OLD_FILE in `echo $NEW_FILE|sed 's#'$NEW_DOC'#'$OLD_DOC'#'`

do

if [ -f $OLD_FILE ];then

ROLLBACK_FILE=`echo $OLD_FILE|sed 's#'$OLD_DOC'#'$ROLLBACK_HOME_DOC'/'$UPDATE_TIME'/#'`

cp $OLD_FILE $ROLLBACK_FILE && echo "代码备份"

cp $NEW_FILE $OLD_FILE && echo "代码更新替换"

else

if [ -d $(dirname $OLD_FILE) ];then

cp $NEW_FILE $OLD_FILE && echo "新代码文件复制完成"

R_F=`echo $NEW_FILE|sed 's#'$NEW_DOC'#'$ROLLBACK_HOME_DOC'/'$UPDATE_TIME'/#'`

cp $NEW_FILE $R_F"."NEW && echo "新文件生成回滚记录"

else

mkdir -p $(dirname $OLD_FILE) && echo "创建文件目录成功"

R_D=`dirname $NEW_FILE|sed 's#'$NEW_DOC'#'$ROLLBACK_HOME_DOC'/'$UPDATE_TIME'/#'`

mkdir -p $R_D"."NEW

cp $NEW_FILE $OLD_FILE && echo "新代码文件复制完成"

R_F=`echo $NEW_FILE|awk -F "/" '{print $NF}'`

cp $NEW_FILE $R_D"."NEW/$R_F"."NEW && echo "新文件生成回滚记录"

fi

fi

done

done

else

echo "参数有误"

fi

}

function rollback_list(){

if [ -d $ROLLBACK_HOME_DOC ];then

echo "最近10个升级备份记录:"

ls -lsth $ROLLBACK_HOME_DOC/ |awk '{print $NF}'|sed '1d'|head -10|sed 's#^#'$ROLLBACK_HOME_DOC/'#'|awk '{print "["NR"]",$0"/"}'

else

echo "此项目未进行升级备份"

exit

fi

}

function rollback_num(){

R_=`ls -lsth $ROLLBACK_HOME_DOC/ |awk '{print $NF}'|sed '1d'|sed 's#^#'$ROLLBACK_HOME_DOC/'#'|awk '{print "["NR"]",$0"/"}'|awk '{print $2}'|sed -n ''$ROLLBACK_ACTION'p'`

if [ `find $R_ -type f|wc -l` -gt 0 ];then

###回滚升级

for R_FILE in `find $R_ -type f|grep -v NEW`

do

O_FILE=`echo $R_FILE|sed 's#'$R_'#'$OLD_DOC'#'`

cp $R_FILE $O_FILE && echo "代码回滚成功"

done

###删除新增

for R_FILE in `find $R_ -type f|grep NEW`

do

O_FILE=`echo $R_FILE|sed 's#'$R_'#'$OLD_DOC'#'|sed 's#'.NEW'##'`

if [ -f $O_FILE ];then

rm $O_FILE && echo "新增移出"

fi

done

for R_DIR in `find $R_ -type d |grep NEW`

do

O_DIR=`echo $R_DIR|sed 's#'$R_'#'$OLD_DOC'#'|sed 's#'.NEW'##'`

if [ -d $O_DIR ];then

rm -rf $O_DIR && echo "新增目录移出"

fi

done

rm -rf $R_ && echo "移出回滚备份目录"

else

echo "此升级备份丢失,回滚失败"

fi

}

function rollback(){

read -p "请选择回滚历史: " ROLLBACK_ACTION

case $ROLLBACK_ACTION in

1)

rollback_num

;;

2)

rollback_num

esac

}

case $3 in

update)

update

;;

rollback)

rollback_list

rollback

;;

*)

echo "请选执行动作:

1、代码升级

2、代码回滚

3、退出"

read -p "请输入执行动作: " ACTION_1

case $ACTION_1 in

1)

update

;;

2)

rollback_list

rollback

;;

3)

exit

;;

esac

esac

fi

最后

以上就是潇洒蜻蜓为你收集整理的linux回滚该文件,linux下文件形式的更新与回滚(增加回滚删除与新增后的回滚)...的全部内容,希望文章能够帮你解决linux回滚该文件,linux下文件形式的更新与回滚(增加回滚删除与新增后的回滚)...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部