Ryan Wang's Blog
Life is fantastic.
记一次拯救我的博客

事情的缘由是我服务器到期了,又没来得及续费,导致无法上服务器备份数据(使用的腾讯云老版本的学生机,每月一块钱的那种,这个月刚好到期,所以不想再用原价续费了,而且 1g 内存可能满足不了以后的需求,所以索性重新买了一台...)

数据咋办?

既然不想续费了,所以是无法上服务器备份数据的,正当我想去咬牙续费的时候,突然想起来曾经把数据备份到 Github 上过... 那么这就相当好办了。

重装博客

晒一张我在 Github 上的备份,虽然是五天前备份的了,但是影响不大,好在我这几天都没怎么操作。 Screenshot_20190921175629921_com.thirtydegreesray.openhub.jpg

嗯,得益于我用的 Halo 博客系统,所以只需要备份这一个目录就完全 OK,所有数据都不会丢失。因为这个系统他的用户数据和程序本身是完全分开的(数据库 db,上传的附件 upload,配置文件 application.yaml),当然,所有主题也是在这个目录的,但是因为主题是可以另外下载的,而且主题的配置数据也在数据库,所以我没有备份。

接下来我只需要把这个仓库克隆到服务器就好了。

git clone https://github.com/ruibaby/blog-data.git .halo

然后配置个 Java 环境,下载个 Halo 运行包。启动就完事。

配置服务器

这个环节没啥做的,配置个 Java 环境就好了,一行命令的事。

然后我跟着这个教程就完成了所有事情。https://halo.run/guide/install/install-with-linux.html

当然,我并没有配置反向代理,因为我是使用的又拍云的 cdn 全站加速,去控制台改改服务器 ip (源站地址)就好了。

自动备份脚本

考虑到后面可能会忘记备份数据,所以写了个自动提交的脚本。

#! /bin/bash

message=`date -u +"%Y_%m_%d_%H_%M"`

cd /root/.halo

git add application.yaml upload/ db/

git commit -m $message

git push
  1. 将其写入到一个 sh 文件里面。
  2. 赋予执行权限 chmod +x {NAME}.sh
  3. 初始化 ~/.halo 仓库,cd ~/.halo & git init
  4. 去 Github 配置 ssh key。这一步不详细讲,自行百度。目的是在 push 的时候不需要输入用户名和密码。
  5. 执行 crontab -e 添加 00 03 * * * /bin/sh {NAME}.sh 的绝对路径。(00 03 * * * 表示每天三点执行)。
  6. 执行 service crond restart 使配置的定时任务生效。

结尾

数据无价,还好这次有备份数据。