Preface
为了防止服务器坏掉导致博客数据丢失,需要对我的halo博客数据进行备份。我的做法是先在本地自动备份,再备份到远端(比如百度网盘)。
所谓备份就是为了防止数据丢失而采取的保存数据的行为。
在 Halo 运行的时候会在系统当前用户目录下产生一个 .halo2 的文件夹,绝对路径为 ~/.halo2。这个工作目录是固定的,里面通常包含下列目录或文件:
- db:存放 H2 Database 的物理文件,如果你使用其他数据库,那么不会存在这个目录。
- themes:里面包含用户所安装的主题。
- plugins:里面包含用户所安装的插件。
- attachments:附件目录。
- logs:运行日志目录。
- application.yaml:配置文件。
因此备份halo博客非常简单,只要备份好家目录的.halo2目录即可~
本地备份
可以在本地建一个目录专门存放备份脚本和备份目录:
[root@centos blogData]# tree .
.
├── backup //这个目录存放本地备份的压缩包
│ └── wwwrootbak20230526.tar.gz
├── push2baiducloud.sh //将压缩包传到百度网盘
└── wwwroot_backup.sh //将~/.halo2文件夹压缩到backup/
编写本地备份脚本文件
文件名:/root/blogData/wwwroot_backup.sh
#!/bin/sh
BK_DR=/root/blogData/backup #备份文件存放路径
DB_DR=/root/.halo2 #需要备份的文件夹
DAYS=30 #DAYS=30代表删除30天前的备份,即只保留最近30天的备份
LINUX_USER=root #系统用户名
date=` date +%Y%m%d `
tar zcvf $BK_DR/wwwrootbak$date.tar.gz $DB_DR
chown -R $LINUX_USER:$LINUX_USER $BK_DR #更改备份数据库文件的所有者
find $BK_DR -name "wwwrootbak*" -type f -mtime +$DAYS -exec rm {} \; #删除30天前的备份文件(注意:{} \;中间有空格)
运行这个脚本文件可以将halo博客的所有数据(处于~/.halo2
)都压缩到~/blogData/backup/
中,命名为wwwrootbakxxxxxxxx.tar.gz
,其中x…为日期信息。
更改脚本文件权限:
chmod +x /data/wwwroot_backup.sh
修改/etc/crontab
[root@centos blogData]# vi /etc/crontab
在底部加入:
40 12 * * * root /root/blogData/wwwroot_backup.sh
表示在每天12:40,cron程序会自动帮我们运行这个脚本。
重启cron使其生效:
/bin/systemctl restart crond.service #重启服务
systemctl enable crond.service #设为开机启动
/bin/systemctl start crond.service #启动
本地自动备份到此大功告成。
远端备份
bybp百度网盘传输服务
为了防止服务器突然挂掉了,可以使用 bypy 工具,将Linux本地文件传到百度网盘。
安装:
pip3 install requests
pip3 install bypy
使用:
第一次使用时,随便输入下面的bypy
相关的一条命令,会叫你申请账号认证,跟着它的英文提示做就行了。
bypy info #显示信息
bypy upload xxx #上传文件到百度云
编写远程备份脚本文件
文件名:/root/blogData/push2baiducloud.sh
#!/bin/sh
BK_DR=/root/blogData/backup
DB_DR=/root/.halo2
DAYS=30
LINUX_USER=root
date=` date +%Y%m%d `
bypy upload $BK_DR/wwwrootbak$date.tar.gz
同时像刚才那样,使脚本自动化,如图所示。
自此自动备份博客大功告成。
查看cron日志
vim /var/log/cron
评论区