需求:每天凌晨3点备份mysql全库,需要压缩后保存,并且删除7天以前的备份文件。
#!/bin/bash
# 定义变量
DB_USER="root"
DB_PASS="123456"
BACKUP_DIR="/databak"
DATE=$(date +%Y-%m-%d)
# 创建备份目录
if [ ! -d "$BACKUP_DIR/$DATE" ]; then
mkdir -p $BACKUP_DIR/$DATE
fi
# 备份所有数据库
mysqldump -u $DB_USER -p$DB_PASS --all-databases > $BACKUP_DIR/$DATE/$DATE.sql
# 压缩备份文件
cd $BACKUP_DIR
tar -czvf $DATE.tar.gz $DATE
# 删除原始备份文件
rm -rf $BACKUP_DIR/$DATE
# 删除7天前的备份文件
find $BACKUP_DIR -name "*.tar.gz" -type f -mtime +7 -exec rm {} \;
执行过程与结果:
设置任务计划定时执行备份脚本:
追加任务计划
echo "0 3 * * * /store/mysql_backup.sh" >> /etc/crontab
重启任务计划
systemctl restart cron
查看生效的任务计划
crontab -l