要求:每天凌晨01:00,自动导出MySQL数据库中【databaseName】的备份,文件名为"EXPORT"或日期格式(如2023-11-01)。备份文件保存在 “/path/to/d/dataBackup” 文件夹中。为避免冗余数据,导出数据保存30天,生成备份数据文件同时删除掉30天前的备份数据。
#!/bin/bash
# 数据库连接信息
DB_HOST="localhost"
DB_USER="用户名"
DB_PASS="密码"
DB_NAME="数据库"
# 备份路径和文件名
BACKUP_DIR="/path/to/d/dataBackup" # 根据你的实际情况进行更改
BASE_FILE_NAME="EXPORT"
DATE=$(date +%Y-%m-%d)
BACKUP_FILE="${BASE_FILE_NAME}_${DATE}.sql" # EXPORT_2023-11-01.sql
# 创建备份文件夹(如果不存在)
mkdir -p $BACKUP_DIR
# 备份数据库
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/$BACKUP_FILE
# 删除30天前的备份文件
find $BACKUP_DIR -type f -mtime +30 -exec rm {} \;
保存并关闭文件后,为脚本添加可执行权限:
chmod +x backup.sh
最后,设置一个cron任务来每天凌晨2点运行此脚本:
crontab -e
然后在打开的编辑器中添加以下行:
0 1 * * * /path/to/d/dataBackup/backup.sh
- 0 表示分钟,也就是说在每个小时的第0分钟。
- 1 表示小时,也就是说在每天的第1小时,也就是凌晨0点。
- * 表示日,这里的星号代表了所有的日,也就是说每天。
- * 表示月,这里的星号也代表了所有的月,表示每个月。
- * 表示星期,星号代表了所有的星期,也就是每周。
注意:这里为实际脚本文件的路径