备份脚本 mysql_backup.sh
#!/bin/bash
# 基本配置
DB_USER="root"
DB_PASS="123456"
DB_NAME="your_database"
LOCAL_BACKUP_DIR="/home/backup"
REMOTE_USER="backup"
REMOTE_HOST="1.2.3.4"
REMOTE_DIR="/home/remote_backup"
# 生成文件名
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="${DB_NAME}_${DATE}.sql.gz"
# 确保本地目录存在
mkdir -p $LOCAL_BACKUP_DIR
# 导出并压缩
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $LOCAL_BACKUP_DIR/$BACKUP_FILE
# 传到远端(需配置好免密 SSH)
scp $LOCAL_BACKUP_DIR/$BACKUP_FILE ${REMOTE_USER}@${REMOTE_HOST}:$REMOTE_DIR/
# 删除本地 7 天前的旧备份
find $LOCAL_BACKUP_DIR -type f -name "${DB_NAME}_*.sql.gz" -mtime +7 -delete
设置定时任务
crontab -e
每天凌晨 2 点执行:
0 2 * * * /bin/bash /home/backup_db.sh