时间:2021-07-01 10:21:17 帮助过:23人阅读
#!/bin/sh
#mysql地址
#检测用户是否手动输入了密码
mysql_host=""
#mysql用户
mysql_user=""
#mysql密码
mysql_password=""
#mysql数据库名
#如果不填写需要导出的数据库名称提示错误信息并终止执行,注意[]里面两边必须有空格
if [ ! -n "$1" ];then
echo "您没有输入数据库名称"
echo "格式:xxx.sh 数据库名称"
exit
fi
mysql_name="$1"
#mysql安装路径
mysql_path="/usr/bin/"
#备份文件存放路径
bak_path="/root/shell/mysqlBak/${mysql_name}"
#删除过期数据 true代表是 false代表否
delete_overdue_data="true"
#删除多少天前数据 默认30天
delete_overdue_data_days=30
#检测目录是否存在,如果不存在自动创建目录
if [ ! -x "${bak_path}" ];then
mkdir "${mysql_name}"
chmod 755 "${bak_path}"
fi
#备份时间
bak_date=`date +%F`
${mysql_path}/mysqldump --opt -u${mysql_user} -p${mysql_password} -h${mysql_host} ${mysql_name} | gzip > ${bak_path}/${bak_date}.sql.gz
#检测是否删除过期数据
if [ "${delete_overdue_data}" != "true" ];then
echo "备份数据完成..."
exit
fi
#删除过期备份数据
#获取今天日期
the_date_today=`date +%Y%m%d`
#获取要删除的文件
find_date_file=`date -d "${the_date_today} ${delete_overdue_data_days} days ago" "+%Y-%m-%d"`
#进入指定目录
cd ${bak_path}
#查找要删除的数据
ls -l|grep ${find_date_file}
#取得查找结果0不存在 1存在
result=$?
echo ${result}
if [ ${result} == 0 ];then
echo "删除过期数据"
`rm -f ${find_date_file}.*`
使用shell自动备份数据库
标签:天前 result false 没有 today l数据库 地址 grep 输入数据