用RCLONE自动备份Typecho网站和数据库

一些准备工作:rclone和网盘授权


rclone的安装见官方安装文档
各种网盘配置见官方配置文档,博主这里用的是坚果云的WebDAV,按照文档操作即可。

备份脚本编写及授权

创建脚本文件:

mkdir /home/typechoBackup
touch /home/typechoBackup/backup.sh
vi /home/typechoBackup/backup.sh

脚本文件内容示例如下,不需要的功能自行在前方加上#号注释掉,删除几天前的备份,数字自行修改即可。其他内容自行按需修改成自己的即可:

[collapse status=”false” title=”备份脚本文档实例”]

#!/bin/bash
# 定义坚果云WebDAV的备份目录
WebDAV_PATH="jianguoyun:Typecho"

# 定义备份的目录及文件,不同的目录用空格分开
BACKUP_SRC="/you/wwwroot/666.zhuomu.xyz"

# 定义临时文件存放目录
BACKUP_DST="/home/typechoBackup/tmp"

# 设置MYSQL基本信息
MYSQL_SERVER="localhost"
MYSQL_USER="user"
MYSQL_PASS="passwd"

# 定义想要备份的数据库,多个数据库用空格分开
BACKUP_DATABASE="user"

# 定义文件前缀名
NOW=$(date +"%Y-%m-%d")
TIME=$(date +"%Y-%m-%d-%H-%M-%S")
OLD=$(date -d -7day +"%Y-%m-%d")
# 备份网站数据文件
tar -zcvf $BACKUP_DST/$NOW-website.tar.gz $BACKUP_SRC
mv $BACKUP_DST/$NOW-website.tar.gz $BACKUP_DST/$TIME-website.tar.gz

# 备份mysql数据库
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --databases $BACKUP_DATABASE > $BACKUP_DST/$NOW-database.sql
mv $BACKUP_DST/$NOW-database.sql $BACKUP_DST/$TIME-database.sql

# 使用rclone上传到WebDAV
rclone copy -v --stats 15s --bwlimit 1M $BACKUP_DST/ --include "*.sql" --include "*.tar.gz" $WebDAV_PATH

# 删除本地的临时文件

rm -f $BACKUP_DST/*.sql $BACKUP_DST/*.tar.gz

# 删除7天前的备份
rclone delete $WebDAV_PATH/ --include "$OLD*"

[/collapse]

使用chmod指令赋予执行权限:

chmod +x /home/typechoBackup/backup.sh

创建自动备份任务并测试

使用 crontab 每天4点定时执行自动备份脚本:

crontab -e

复制以下内容粘贴并输入:wq保存:

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

手动测试看看脚本是否正确运行:

bash /home/typechoBackup/backup.sh

时区设置为东八区:

timedatectl set-timezone Asia/Shanghai

重启定时任务:

service crond restart

重启系统日志:

service rsyslog restart

最后观察下系统日志尾巴状态,是否时区已经调整成功:

tail -f /var/log/cron

关于crontab格式详细说明,感兴趣的可以查阅:

crontab 格式详解

或者使用在线生成工具生成需要的定时任务:online crontab

最后查看你的坚果云确认下运转是否正常。