由于日常中可能要更换个IP库什么的,但是线上的东西又不想停掉,同时考虑到,如果更新失败,怎么能快速回退(rollback),自己就动手写了一个shell脚本,当然是现学现卖,不过亲测好使。
老规矩,直接上代码:upgrade.sh
#!/bin/sh
#by airzen 20130131
filename=$1
newfilename=$filename.new
bakfilename=$filename.bak
if [ ! -f $filename ]; then
printf "$filename NOT is exist\n"
exit
fi
function upgrade()
{
if [ -f $newfilename ]; then
mv $filename $bakfilename
mv $newfilename $filename
else
printf "$newfilename NOT is exist\n"
fi
}
function restore()
{
if [ -f $bakfilename ]; then
mv $filename $newfilename
mv $bakfilename $filename
else
printf "$bakfilename NOT is exist\n"
fi
}
if [ "$2" = "go" ]; then
upgrade
elif [ "$2" = "back" ]; then
restore
else
printf "Usage:CMD {path/fn.ext} {go|back} \n"
printf "go - MUST exist the [path/fn.ext.new] \n"
printf "back - MUST exist the [path/fn.ext.bak] \n"
fi
思路:更新前的准备工作,将要进行更新的文件以[文件名].new 的方式准备好,放到同一目录下,执行
有图有真相。哈哈。
可以将此工具放到一个单独的目录,执行的时候,采用upgrade.sh 全路径 + 更新文件的全路径 + 参数(go|back),
当发现更新有问题的时候,直接使用上光标键调出命令,将go改为back,回车,当然你觉得还不够快可以加入文件自检查进行更新或是回退操作!希望对大家有帮助。