平时在群晖搭建网站,数据库虽然可以手动导出但是太麻烦
今天我们利用群晖的定时任务来定时备份数据库
备份所有数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #!/bin/bash
# 数据库凭证 USER="用户名" PASSWORD="密码" HOST="localhost" PORT="3306"
# 备份目录 BACKUP_DIR="/volume1/backup"
# 时间戳命名 TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
# 获取所有数据库的列表 DATABASES=$(mysql --user=$USER --password=$PASSWORD --host=$HOST --port=$PORT -e "SHOW DATABASES;" | tr -d "| " | grep -v Database)
# 循环遍历每个数据库并备份 for DB_NAME in $DATABASES; do # 备份数据库 mysqldump --user=$USER --password=$PASSWORD --host=$HOST --port=$PORT $DB_NAME > $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql # 压缩备份文件 gzip $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql done
# 删除 7 天前的备份文件 find $BACKUP_DIR/* -mtime +7 -exec rm {} \;
|
只需要修改你的用户名和密码,如果端口号有修改的话,端口号也需要修改
备份指定数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #!/bin/bash
# 数据库凭证 USER="用户名" PASSWORD="密码" HOST="localhost" PORT="3306"
# 备份目录 BACKUP_DIR="/volume1/backup"
# 时间戳命名 TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
# 需要备份的数据库名 DB_NAME="要备份的数据库名称"
# 备份数据库 mysqldump --user=$USER --password=$PASSWORD --host=$HOST --port=$PORT $DB_NAME > $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql
# 压缩备份文件 gzip $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql
# 删除 7 天前的备份文件 find $BACKUP_DIR/* -mtime +7 -exec rm {} \;
|
然后再任务计划里新增任务计划
用户定义的脚本设置好时间
然后再运行命令里填
脚本不要放在备份目录里