1.引言
在web项目中大多数还放在Tomcat中。上线升级前,会先备份一下原已上线的项目代码,一般会先切换到项目所在的目录(例如Tomcat下的webapps中的具体应用:apache-tomcat/webapps/app),然后再通过tar、jar等命令备份项目的代码;当项目有问题时,首先删掉刚刚上线升级的代码,再通过解压备份文件来实现代码的回滚。本文通过对这些操作简单的封装,即通过linux自定义脚本命令,进而实现上述的操作。
2.实现
1、首先进入用户的目录找到配置文件.bash_profile(该配置文件是隐藏的文件可以通过ls 的-a才可以看到到),然后进入配置文件
2、编辑配置文件bash_profile的内容
(1)通过添加下面的命令实现快速定位到要备份的目录名下(主要回滚时、或增量更新时文件更新时使用)
alias app1web='cd /home/app/apache-tomcat-7.0.78/webapps/APP1'
(2)通过添加下面的命令实现快速的项目备份
backupapp1()
{
DATETIME=`date "+%Y%m%d%H%M%S"`;
HOSTNAME=`hostname`;
cd /home/app/apache-tomcat-7.0.78/webapps/APP1;
jar -cvf /backups/app/APP1_BACKUP_${DATETIME}_${HOSTNAME}.war ./*
echo "app1 backup ok....."
cd -;
}
(3)补存
为了有更好的阅读性,当通过命令编辑器(例如第三方的Xsell等工具)打开命令行时,可以通过下面的命令填写有关备注(例如写一些该用户下部署了那些具体的应用、注意事项等)
export LANG=en_US.UTF-8
echo "###########################################################################"
echo "# #"
echo "# UAT 测试环境 - #"
echo "# #"
echo "# APP1 XXXXXXXXXX系统 #"
echo "# APP2 XXXXXXXXXX系统 #"
echo "# APP3 XXXXXXXXXX系统 #"
echo "# #"
echo "###########################################################################"
编写的脚本效果如下
3、操作
通过第三方工具打开命令行窗口
(1)备份已上线的应用,通过自定义命令(backupapp1)
(2)应用更新确认,通过自定义命令(app1web)切换到应用的根目录,再通过ll -lt查看文件是否更新
(3)数据回滚
切换到切换到应用的根目录(app1web),删掉更新后的应用然后通过命令回滚(这里也可以自定义个命令,由于回滚用的相对较少,这里就不在使用了)
jar -xvf /backups/app/APP1_BACKUP_${DATETIME}_${HOSTNAME}.war
案例截图
4、扩展
配置文件.bash_profile和.bashrc的区别(详见https://www.cnblogs.com/kevingrace/p/8072860.html)
/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.