1,shell常见变量解析:
$0 当前脚本的名称
$n 当前脚本的第n个参数
$* 当前脚本的所有参数(不包括程序本身)
$# 当前脚本的参数个数(不包括程序本身)
$?命令或程序执行完成后的状态,一般返回0表示成功。
$UID当前用户的ID
$PWD当前所在的目录
-ne 不等于
-eq 等于
2,自动备份mysql脚本思路
①,备份DB的命令
mysqldump -h127.0.0.1 -uroot -p123456 du >du_`date +%y%m%d`.sql
②,备份的机制
③,备份的目标和库
④,定期删除多少天以前的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/bin/bash
#auto backup mysql datebases.
#by 2017
#define DB info PATH
SQL_CMD=
"/usr/bin/mysqldump"
SQL_HOST=
"127.0.0.1"
SQL_USR=
"root"
SQL_PWD=
"123456"
SQL_DB=
"du"
SQL_DIR=
"/data/backup/`date +%y%m%d`"
#判断是否为root用户
if
[ $UID -
ne
0 ];
then
echo
"only use root to exec."
exit
fi
#判断该路径是否存在,不存在就创建一个
if
[ ! -d $SQL_DIR ];
then
mkdir
-p $SQL_DIR
fi
#备份数据库
$SQL_CMD -h$SQL_HOST -u$SQL_USR -p$SQL_PWD $SQL_DB >$SQL_DIR/$SQL_DB.sql
#判断是否备份成功,成功打印出来路径
if
[ $? -
eq
0 ];
then
echo
"Backup mysql already successful."
echo
"Backup path:$SQL_DIR"
else
echo
"Backup mysql failed."
fi
#删除30天以前的备份文件
cd
$SQL_DIR/../ ;
find
. -mtime +30 -
exec
rm
-rf {} \;
echo
"Done"
#把脚本加到crontab任务计划里
grep
"mysql"
/var/spool/cron/root
>>
/dev/null
if
[ $? -
ne
0 ];
then
echo
"0 0 * * * /bin/bash /root/shell/mysql.sh > /tmp/mysql.log 2>&1"
>>
/var/spool/cron/root
/etc/init
.d
/crond
restart
fi
|
本文转自 天道酬勤VIP 51CTO博客,原文链接:http://blog.51cto.com/tdcqvip/1944062