自动备份Hexo博客
如果已经有过手动备份到GitHub上的操作,就跳过前面直接从第二步开始看。如果是只要了解怎么在新电脑上搭建备份好的博客,就直接从第三步开始看。
第一步 手动备份到github上:
在Github上创建一个新的repository,取名为
HEXO
。(与本地的Hexo源码文件夹同名即可)进入本地的Hexo文件夹,执行以下命令创建仓库
1
git init
设置远程仓库地址,并更新:
1
2git remote add origin https://github.com/cosmogram/hexo.git
git pull origin master修改.gitignore文件(如果没有请手动创建一个),在里面加入
*.log
和public/
以及.deploy*/
因为每次执行hexo generate
命令时,上述目录都会被重写更新。因此忽略这两个目录下的文件更新,加快push速度。执行命令以下命令,完成Hexo源码在本地的提交。
1
2git add .
git commit -m "添加hexo源码文件作为备份"执行以下命令,将本地的仓库文件推送到Github。
1
git push origin master
第二步 自动备份到github上:
原理
有关于 Hexo添加文章时自动打开编辑器 的相关文章,其原理就是利用NodeJS
的事件监听机制实现监听Hexo的new
事件来启动编辑器,完成自动启动编辑器的操作。通过查阅Hexo文档,找到了Hexo的主要事件,见下表:
事件名 | 事件发生时间 |
---|---|
deployBefore | 在部署完成前发布 |
deployAfter | 在部署成功后发布 |
exit | 在 Hexo 结束前发布 |
generateBefore | 在静态文件生成前发布 |
generateAfter | 在静态文件生成后发布 |
new | 在文章文件建立后发布 |
于是我们就可以通过监听Hexo的deployAfter
事件,待上传完成之后自动运行Git备份命令,从而达到自动备份的目的。
实现
安装shelljs
模块
要实现这个自动备份功能,需要依赖NodeJs的一个shelljs
模块,该模块重新包装了child_process
,调用系统命令更加的方便。该模块需要安装后使用。
在命令中键入以下命令,完成shelljs
模块的安装:
1 | npm install --save shelljs |
编写自动备份脚本
待到模块安装完成,在Hexo
根目录的scripts
文件夹下新建一个js文件,文件名随意取。
如果没有scripts
目录,请新建一个。
然后在脚本中,写入以下内容:
1 | require('shelljs/global'); |
- 其中,需要修改第
17
行的D:/life/blog/hexo
路径为Hexo的根目录路径。 - 如果你的Git远程仓库名称不为
origin
的话,还需要修改第28
行执行的push命令,修改成自己的远程仓库名和相应的分支名。
第三步 在全新设备上搭建备份的博客:
安装环境
安装Nodejs:直接百度搜索,然后默认配置安装即可。版本为:16.10.0。
安装cnpm
1
npm install -g cnpm --registry=http://registry.npm.taobao.org
安装git:直接百度搜索,默认配置安装即可。最好为最新版本。然后添加GitHub免密登录,就是到.ssh目录下生成密钥。登录到GitHub上,右上角小头像->Setting->SSH and GPG keys中,点击new SSH key。Title:可以随便填写,但最好起的名字能让自己知道这个公钥是哪个设备的。Key:将上面生成的.pub文件(你的公钥)中的所有内容复制到这里。
1
2cd ~/.ssh/
ssh-keygen -t rsa安装Hexo
1
cnpm install -g hexo-cli
最好指定下版本:
1
npm install -g hexo-cli@4.3.0
下载备份好的博客
- 第一步:在D盘新建一个文件夹life,然后在life文件夹中新建一个文件夹blog,最后在blog里Git Bush Here(即你原来的博客路径,如果你换了一个地方,那自动备份脚本里的路径就要经常改),在其中Git Bush Here,输入
git clone https://github.com/cosmogram/hexo.git
命令,即可完成将Hexo源文件复制到本地。(请将后面的https://github.com/cosmogram/hexo.git
替换为自己相应的仓库地址。) 第二步:在D:/hexo
下Git Bush Here,输入npm install --save shelljs
。第三步:同样在D:/hexo
下Git Bush Here,输入hexo s
,就可以看是否成功。
重新初始化博客
- 第一步:将git下来的文件夹(就是备份好的博客)移走,在此位置(blog文件夹)新建一个同名文件夹(如:hexo)。进入文件夹中Git Bush Here,输入
hexo init
命令。 - 第二步:将原本git下来的文件夹(就是备份好的博客)移回去,替换相同文件。
- 第三步:输入
hexo clean && hexo g && hexo s
命令,在本地看是否可以正常运行博客页面。
更新博客
当远程仓库有更新时,执行以下命令,即可同步hexo源文件到本地。
1
git pull origin master
部署博客
进入站点根目录
删除git提交内容文件夹
1
rm -rf .deploy_git/
执行(非必要、尽量不要)
1
git config --global core.autocrlf false
最后生成、部署
1
hexo clean && hexo g && hexo d
写博客
1 | hexo n 文章名字 |