使用 rclone 每天定时备份博客


博客数据定期备份很重要,本文介绍使用 rclone 每天自动备份博客到 Google Drive。


一、安装 Rclone

1
2
curl https://rclone.org/install.sh | sudo bash
rclone config

二、创建备份脚本

1
2
3
mkdir -p /home/Backup
touch /home/Backup/backup.sh
vi /home/Backup/backup.sh

备份脚本内容

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
28
29
30
31
32
33
34
35
36
37
#!/bin/bash

# Google Drive 备份目录
GD_PATH="GdriveBackup:Backup"

# 要备份的目录
BACKUP_SRC="/home/wwwroot/omo.moe/usr"

# 临时文件目录
BACKUP_DST="/home/Backup"

# MySQL 配置
MYSQL_SERVER="localhost"
MYSQL_USER="root"
MYSQL_PASS="your_password"

# 要备份的数据库
BACKUP_DATABASE="typecho_omo"

# 文件前缀
NOW=$(date +"%Y.%m.%d")
OLD=$(date -d -5day +"%Y.%m.%d")

# 备份网站文件
zip -r $BACKUP_DST/auto_fileData_$NOW.zip $BACKUP_SRC

# 备份数据库
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --databases $BACKUP_DATABASE > $BACKUP_DST/$NOW-auto-Databases.sql

# 上传到 Google Drive
rclone copy -v --stats 15s --bwlimit 40M $BACKUP_DST/ --include "$NOW-auto-Databases.sql" --include "auto_fileData_$NOW.zip" $GD_PATH

# 删除本地临时文件
rm -f $BACKUP_DST/$NOW-auto-Databases.sql $BACKUP_DST/auto_fileData_$NOW.zip

# 删除 5 天前的远程备份
rclone delete $GD_PATH/ --include "$OLD-auto-Databases.sql" --include "auto_fileData_$OLD.zip"

赋予执行权限

1
chmod +x /home/Backup/backup.sh

三、创建定时任务

1
crontab -e

添加以下内容(每天凌晨 4 点执行):

1
0 4 * * * /bin/bash /home/Backup/backup.sh > /dev/null 2>&1

四、测试

1
2
3
4
5
6
7
8
9
10
11
# 测试脚本
bash /home/Backup/backup.sh

# 设置时区
timedatectl set-timezone Asia/Shanghai

# 重启定时任务
service crond restart

# 查看日志
tail -f /var/log/cron

参考