本站为Halo2搭建,Halo2默认使用的是H2数据库。为了防止意外数据丢失,需要做定时备份。现有增加备份的插件,但是需要付费。因此本文来介绍一个自助的定时备份方案。

1. 配置git

1
2
3
4
5
yum install -y git

git config --global user.name 'Git用户名'

git config --global user.email "Git邮箱"

脚本提交的时候不输密码,所以需要配置ssh key,git远程仓库提供商的 ssh key配置验证方式不同。本文使用的是Gitee,可以查看其文档

2. 初始化git仓库

1
2
3
4
5
cd ~/.halo2

git init

git remote add origin git@gitee.com:***/***.git

3. 编写自动备份脚本

blog_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
#! /bin/bash

# Print current time
echo "********** Script started at: $(date +'%Y-%m-%d %H:%M:%S') **********"

message=$(date "+%Y-%m-%d~%H.%M.%S-数据备份")

cd ~/.halo2 || exit

echo "[STAGE 1: ADD]"
git add --all .

echo ""
echo "[STAGE 2: COMMIT] --> MESSAGE: ${message}"
git commit -am "${message}"

echo ""
echo "[STAGE 3: PUSH]"
git push -f origin master

# Print current time
echo "********** Script stoped at: $(date +'%Y-%m-%d %H:%M:%S') **********"

# Add three new lines
echo -e "\n\n\n"

测试是否可用:

1
sh  blog_backup.sh

正常情况下,是可以将~/.halo2下的数据push到远程仓库中。

4. 配置定时任务

1
crontab -e

然后在末尾追加一行:

1
00 02 * * * ~/blog_backup.sh >> ~/blog_backup/blg_bk.log 2>&1

至于cron表达式如何写,可以自行查阅。这里的配置意思是,每天晚上2点运行备份脚本,并将其输出到指定的log文件中。

5. 总结

由于我是轻度使用,且博客的需求不是很大,因此使用免费的gitee备份,这种方案也有一些缺陷,比如gitee的容量配额是有限度的。

因此本文的分享仅仅是抛砖引玉,根据自己的需求也可以对脚本进行修改或者重写。比如可以推送到七牛云存储、阿里云存储等。也可以在备份失败后,发送邮件或者推送通知提醒等等功能。都是根据自己的不同需求和使用场景来修改。