平时在群晖搭建网站,数据库虽然可以手动导出但是太麻烦

今天我们利用群晖的定时任务来定时备份数据库

备份所有数据库

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 {} \;

然后再任务计划里新增任务计划

用户定义的脚本设置好时间

然后再运行命令里填

1
bash 然后你脚本的路径即可

脚本不要放在备份目录里