- 每晚11点59分备份
$ crontab -e
59 23 * * * /data/backup/db/test.sh > /dev/null 2>&1 &
提示:需要赋予该文件执行权限
1、加最高权限
$ chmod 775 文件名
2、加可执行权限
$ chmod +x 文件名
- 在 /data/backup/db 目录下新建 test.sh
#!/bin/bash
#功能说明:本功能用于备份数据库
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:
export PATH
#数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2
dbnames='test test1'
#备份时间
backtime=`date +%Y%m%d`
#日志备份路径
logpath="/data/backup/db/mysql-log"
#数据备份路径
datapath="/data/backup/db/database-sql"
# 删除$DAYS天前的备份文件
DAYS=3
#日志记录头部
echo "备份时间为${backtime},备份数据库表 ${dbnames} 开始" >> ${logpath}/mysqllog.log
#正式备份数据库
for dbname in $dbnames; do
source=`mysqldump -uroot -proot ${dbname}> ${datapath}/${backtime}-${dbname}.sql` 2>> ${logpath}/mysqllog.log
#备份成功以下操作
if [ "$?" == 0 ];then
#进入数据备份路径
cd $datapath
#为节约硬盘空间,将数据库压缩
tar -zcvf ${backtime}-${dbname}.tar.gz ${backtime}-${dbname}.sql
#删除原始文件,只留压缩后文件
rm -f ${datapath}/${backtime}-${dbname}.sql
echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log
#判断git目录是否存在 上传git
if [ -d ".git" ]; then
git add . && git commit -m "${backtime} 更新" && git push
echo "";
echo "${backtime} update commit !!!!!!";
else
git init
git remote add origin git@code.com/xxx.git
git add .
git commit -m "first commit"
git push -u origin master
echo ""
echo "first commit !!!!!!"
fielse
#备份失败则进行以下操作
echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log
fi
#删除$DAYS天前的备份文件OLDFILE=$(date -d "-$DAYS day" +"%Y%m%d")-${dbname}.tar.gz
if [ -f $OLDFILE ]; then
cd $datapath
rm -f $OLDFILE
echo "delete file: $OLDFILE($DAYS day(s) ago)" >> ${logpath}/mysqllog.log
fidone
网友评论