博客数据单节点,防止数据丢失,这里写一个shell脚本,几小时执行一次,保留7天数据
简单的 MySQL 备份 Shell 脚本,它会备份指定的数据库,并将备份文件保留最近 7 天的数据。脚本会每天运行一次,删除超过 7 天的备份文件。
脚本内容
#!/bin/bash
# 配置数据库信息
DB_USER="your_db_user"
DB_PASSWORD="your_db_password"
DB_NAME="your_db_name"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份数据库
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql
# 压缩备份文件
gzip $BACKUP_DIR/$DB_NAME-$DATE.sql
# 删除超过 7 天的备份文件
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -exec rm -f {} \;
echo "Database backup completed: $BACKUP_DIR/$DB_NAME-$DATE.sql.gz"
解释
配置数据库信息:
DB_USER
:数据库用户名。DB_PASSWORD
:数据库密码。DB_NAME
:要备份的数据库名称。BACKUP_DIR
:备份文件存储的目录。DATE
:当前日期,格式为YYYYMMDD
。
创建备份目录:
mkdir -p $BACKUP_DIR
:如果备份目录不存在,则创建它。
备份数据库:
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql
:使用mysqldump
命令备份数据库,并将备份文件保存到指定目录。
压缩备份文件:
gzip $BACKUP_DIR/$DB_NAME-$DATE.sql
:使用gzip
命令压缩备份文件。
删除超过 7 天的备份文件:
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -exec rm -f {} \;
:使用find
命令查找并删除超过 7 天的备份文件。
输出备份完成信息:
echo "Database backup completed: $BACKUP_DIR/$DB_NAME-$DATE.sql.gz"
:输出备份完成信息。
设置定时任务
你可以使用 cron
来设置每天自动运行这个脚本。
打开
cron
编辑器:bash
复制
crontab -e
添加以下行来设置每天凌晨 2 点运行备份脚本:
bash
复制
0 2 * * * /path/to/your/backup_script.sh
总结
通过这个脚本,你可以每天自动备份 MySQL 数据库,并保留最近 7 天的备份文件。超过 7 天的备份文件会被自动删除,以节省存储空间。
评论