博客源码备份的两三事

相信大多数玩 Hexo 博客的友人都是用的 git 系的托管平台(例如 GitHub Gitee Coding 之类的)吧?实不相瞒,

但是,当某次我们迁移了一下平台,通过 GitHub 恢复博客源码的时候,就会发现一个惊恐的问题

那就是,你的博客文章时间会出错。我在 记录下这段时间在做什么|流水账 | Leao’s Blog | Leao的博客 中就已经提过一嘴,简单说就是博客的文章显示为错误的更新时间。

怀着解决问题的、对问题保持敬意的心情,我开始了本次寻找解决方法的历程。

但既然更新时间的错误已经发生,索性就不再追求去修改这个时间了,以免弄巧成拙,反而造成更多的错误。主要解决的是如何避免这个错误再次发生。

解决历程

大佬们给的解决方法是在写的文章后加一个 updated 的 tag

但是呢,私は思う,这对于我这种懒人来说,还不如继续摆烂。(开摆!)

所以为了方便摆烂,我写了个 bat,将文章和博客源码分离备份,这样就能曲线救国地解决这个问题了,毕竟其他文件对时间戳又没有那么敏感

摆烂方法

我这里采用的是 RCLONE + STORJ 的方法来备份文章的(其他的也彳亍,稍微改一下命令就行)

STORJ 已经把文档写好了,稍微看一下就大概知道怎么配置了

Sync Files With Rclone | Storj Docs

屏蔽 source 目录

然后将 source 目录临时移出 Hexo 源码目录,使用 git 提交一个 commit 并 push。

再将 source 目录移回来,编辑下 .gitignore 文件,添加一行 source/

写个备份脚本

使用 RCLONE 查看备份目标有哪些目录,将 hexo-blog 替换成 RCLONE 配置的名称

1
rclone lsf hexo-blog:

例如我想要把文章备份到 hexo-source/ 中去,其他的博客源码备份到 GitHub,就可以这么写

新建一个文件,将其命名为 backup.bat,写入以下内容

1
2
git add . && git commit -m "Update" && git push
rclone sync .\source\ hexo-blog:/hexo-source/ -P

当写完一篇文章,想要备份时,就可以打开一下,一键备份,轻松快捷

恢复时可以写个 recover.bat,在配置过 RCLONE 和 SSH 公钥之类的之后,向其中写入如下内容,将 hexo-blog 替换成 RCLONE 配置的名称

1
2
git clone 你的博客源码项目 blog
rclone sync hexo-blog:/hexo-source/ blog\source\ -P

然后运行,就会在 blog 目录里正常恢复了

最重要的是,这种方法不是很复杂,而且时间不会出什么问题

参考内容

  1. 解决Hexo文章更新时间问题 | whoru (sqiang.net)

  2. 解决Hexo+Next+Travis CI博客更新时间问题 | Kepontry’s Blog

  3. 升级主题后,文章会刷新更新日期,时间为刚才的部署时间 · Issue #60 · YunYouJun/hexo-theme-yun (github.com)