您的位置:首页 > 运维架构 > Shell

Shell学习笔记&Mysql备份脚本

2019-02-16 15:40 357 查看

Shell学习笔记

基础语法

定义变量

例子:

​ A=123

#!/bin/bash
# date 2019/2/15
# author zzh

echo "Hello World!"

A=123

echo "This is my First Var $A"

​ 输出结果:

[root@localhost 文档]# echo "aaa"
aaa
[root@localhost 文档]#

判断上次命令执行结果

$?1 :

​ 执行失败 127

​ 执行成功 0

[root@localhost 文档]# asdfsfsa
bash: asdfsfsa: command not found
[root@localhost 文档]# $?
bash: 127: command not found
[root@localhost 文档]#
[root@localhost 文档]# ls
shellTest.sh
[root@localhost 文档]# $?
bash: 0: command not found
[root@localhost 文档]#

If条件判断语句

语法:

​ if

​ 语句1

​ else

​ 语句2

​ fi

#!/bin/bash
# date 2019/2/15
# author zzh

Num1=100
num2=200

if(($Num1 > $num2));then
echo "num1大于num2"
else
echo "num1小于num2"
fi

条件:

​练习:

#!/bin/bash
# date 2019/2/15
# author zzh

#检查文件夹存在
DIR=/root/文档/shellTest

if [ ! -d $DIR ];then
mkdir $DIR
echo "文件夹不存在,已自动创建"
else
echo "文件夹已存在"
fi

#检查文件存在
FILE=/root/文档/shellTest/test.txt

if [ ! -f $FILE ];then
echo "OK" >> $FILE
echo "文件不存在,已自动创建"
else
echo "文件已存在"
fi

#动态传参
NAME=$1
AGE=$2

echo "名字是 :$1,年龄是 :$2"

​ 输出结果:

[root@localhost 文档]# sh shellTest.sh zzh 18
文件夹已存在
文件已存在
名字是 :zzh,年龄是 :18
[root@localhost 文档]#

Mysql备份脚本

#!/bin/bash
# date 2019/2/15
# author zzh

#声明变量
#备份时间,如:20190216
NOW=`date +%Y%m%d%H%M%S`
#当前执行脚本的目录
project_path=$(cd `dirname $0`; pwd)
#备份文件目录:参数指定,则将文件输出到指定目录,否则输出到当前目录
BASE_DIR=$1
if [ -z "$BASE_DIR" ];then
echo -e " \033[31mUsage : { /bin/sh $0 \$DIR|\"here\"|help }\033[0m"
exit 1
elif [ "help" = $BASE_DIR ];then
echo "\$DIR :备份文件目录,指定参数后,将文件输出到指定目录。如:/bin/sh $0 /mnt/database/dbback/bak "
echo "here :备份文件目录,输入\"here\",将文件输出到当前工作空间。如:/bin/sh $0 here"
exit 1
elif [ "here" = $BASE_DIR ];then
BASE_DIR=$project_path
fi
#备份文件夹名称,自动按当天时间生成
BAK_DIR=$BASE_DIR/`date +%Y%m%d`
#数据库相关参数
#数据库名称
MYSQLDB=test
#数据库登录名
MYSQLUSER=root
#数据库登录密码,默认空
MYSQLPWD=
#数据库命令程序位置
MYSQLCMD=/usr/bin/mysqldump

#准备方法
#检查上一步命令是否执行成功
CHECK=false
function checkSuccess(){
CHECK=false
if [ $? -eq 0 ];then
echo -e "[ \033[32m$TODO :完成\033[0m ]"
CHECK=true
else
echo -e "[ \033[31m$TODO :失败\033[0m ]"
exit 1
fi
}
#打印时间
#开始时间
function startTime() {
echo ""
echo "------------------$TODO 开始 `date +"%Y-%m-%d %H:%M:%S"`------------------"
}
#结束时间
function endTime() {
echo "------------------$TODO 结束 `date +"%Y-%m-%d %H:%M:%S"`------------------"
echo ""
}

#开始备份工作

#判断用户是否是ROOT用户
TODO=判断用户是否是ROOT用户
startTime
if [ $UID -ne 0 ];then
echo -e "[ \033[31m当前不是ROOT用户,请切换后执行本脚本\033[0m ]"
exit 1
else
echo -e "[ \033[32m当前用户 :ROOT\033[0m ]"
fi
endTime

#准备备份目录
TODO=准备备份目录
startTime
if [ ! -d $BAK_DIR ];then
mkdir -p $BAK_DIR
checkSuccess
else
echo -e "[ \033[32m备份目录 :就绪\033[0m ]"
fi
endTime

#导出数据库
TODO=导出数据库
startTime
$MYSQLCMD -u$MYSQLUSER -p$MYSQLPWD -d $MYSQLDB > $BAK_DIR/$MYSQLDB$NOW.sq
checkSuccess
endTime

#压缩文件
TODO=压缩文件
startTime
cd $BAK_DIR && zip -r $BAK_DIR/$MYSQLDB$NOW.zip $MYSQLDB$NOW.sq

checkSuccess
if [ $CHECK ];then
rm -rf $BAK_DIR/$MYSQLDB$NOW.sq
TODO=删除压缩前原文件
checkSuccess
fi
endTime

echo "*******************************************************************************************"
echo -e "*** \033[32m数据库备份完成,备份文件位置 :$BAK_DIR/$MYSQLDB$NOW.zip\033[0m ***"
echo  "*******************************************************************************************"
echo ""

#结束备份工作

​ 输出结果:

[root@localhost shellTest]# sh backupDB.sh here

------------------判断用户是否是ROOT用户 开始 2019-02-16 15:31:41------------------
[ 当前用户 :ROOT ]
------------------判断用户是否是ROOT用户 结束 2019-02-16 15:31:41------------------

------------------准备备份目录 开始 2019-02-16 15:31:41------------------
[ 准备备份目录 :完成 ]
------------------准备备份目录 结束 2019-02-16 15:31:41------------------

------------------导出数据库 开始 2019-02-16 15:31:41------------------
Enter password:
[ 导出数据库 :完成 ]
------------------导出数据库 结束 2019-02-16 15:31:43------------------

------------------压缩文件 开始 2019-02-16 15:31:43------------------
adding: test20190216153141.sq (deflated 66%)
[ 压缩文件 :完成 ]
[ 删除压缩前原文件 :完成 ]
------------------删除压缩前原文件 结束 2019-02-16 15:31:43------------------

*******************************************************************************************
*** 数据库备份完成,备份文件位置 :/root/文档/shellTest/20190216/test20190216153141.zip ***
*******************************************************************************************

[root@localhost shellTest]#

  1. 可以用来判断上一步命令执行是否成功 ↩︎

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: