一、前言

自从接触了Hexo+NexT之后,发现离不开了,以后有能力的时候一定重新架构一下,使得更加个性化,最大程度的满足我们对于软件的需求,大家都知道,如果写东西在本地的话,最怕的应该就是更换电脑,还要重新搭建博客了,所以备份对于我们来说特别重要!备份博客就是本篇博客文章的主旨了,一定要攻下这座城堡。
我曾经看过Git备份Hexo博客源文件的方式,这种方式虽然能够备份Hexo博客的源文件,但是对于我这种懒人,每次更新博文都需要输入两三行重复的Git命令真是一件麻烦的事情。况且指不定哪天就搞忘push到github上了。你说是不是,所以这篇文章出现了……

二、原理

通过监听Hexo的事件来完成自动执行Git命令进行自动备份,查阅Hexo文档,找到了Hexo的主要事件,见下表:

事件名 事件发生时间
deployBefore 在部署完成前发布
deployAfter 在部署成功后发布
exit 在 Hexo 结束前发布
generateBefore 在静态文件生成前发布
generateAfter 在静态文件生成后发布
new 在文章文件建立后发布

于是我们就可以通过监听Hexo的deployAfter事件,待上传完成之后自动运行Git备份命令,从而达到自动备份的目的。

三、实现

1.将Hexo目录加入Git仓库

本脚本需要提前将Hexo加入Git仓库并与Github或者Gitee远程仓库绑定之后,才能正常工作。如果你不知道该怎样进行操作,可以参考我的另一篇博文:

  • Git命令手动备份Hexo博客源文件

2.安装shelljs模块

要实现这个自动备份功能,需要依赖NodeJs的一个shelljs模块,该模块重新包装了child_process,调用系统命令更加的方便。(其实就是因为我懒( ╯▽╰))该模块需要安装后使用。

在命令中键入以下命令,完成shelljs模块的安装:

npm install --save shelljs

3.编写自动备份脚本

shelljs模块安装完成后,在Hexo根目录的scripts文件夹下新建一个js文件,文件名随意取(我的文件名为:auto_backup.js)。如果没有scripts目录,请新建一个。

然后在脚本中,写入以下内容:

require('shelljs/global');
try {hexo.on('deployAfter', function() {//当deploy完成后执行备份run();});} catch (e) {console.log("产生了一个错误啊<( ̄3 ̄)> !,错误详情为:" + e.toString());
}
function run() {if (!which('git')) {echo('Sorry, this script requires git');exit(1);} else {echo("======================Auto Backup Begin===========================");cd('E:/work/myblog');    //此处修改为Hexo根目录路径if (exec('git add --all').code !== 0) {echo('Error: Git add failed');exit(1);}if (exec('git commit -am "blog auto backup script\'s commit"').code !== 0) {echo('Error: Git commit failed');exit(1);}if (exec('git push origin master').code !== 0) {echo('Error: Git push failed');exit(1);}echo("==================Auto Backup Complete============================")}
}
  • 其中,需要修改第16行的E:/work/myblog路径为Hexo的根目录路径。(脚本中的路径为博主的Hexo路径)

  • 如果你的Git远程仓库名称不为origin的话,还需要修改第25行执行的push命令,修改成自己的远程仓库名和相应的分支名。

4.测试结果

保存脚本并退出,然后执行hexo d命令,在常规结果执行出来后,将会得到类似以下结果:

这样子就表明成功上传啦,每次更新博文并deploy到服务器上之后,备份就自动启动并完成备份啦~

查看github镜像库,如下图所示,得到了想要的东西:

测试成功!

很开心,以后就可以自动备份Hexo博客源文件托管在Github上啦,嘿嘿嘿!

自动备份Hexo博客源文件相关推荐

  1. 用TravisCI持续集成自动部署Hexo博客的个人实践

    优秀的程序员都是不用持续集成的 前几天我面试了一个码农,连续几个专业问题他都没答上来. 尴尬之余,我问它:「你没有什么理想吗?你现在最渴望的事情是什么?」 码农转悠着大眼睛,不假思索道:「做一个持续集 ...

  2. 一个本地分支能关联两个远程仓库吗_使用git分支保存hexo博客源码到github

    hexo是当前最火的静态博客框架,支持Markdown格式文章编辑并自动生成对应的静态网页,简单高效令人爱不释手. 使用hexo写博客的流程通常是, 通过hexo new post_name命令,会自 ...

  3. 使用Travis CI自动部署Hexo博客

    自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...

  4. Git 备份 Hexo 博客

    Hexo 部署到 github 上的博客是通过 hexo g 编译后生成的文件,用于生成网页的,而不是 Hexo 博客的源文件,其部署的文件在本地的 .deploy_git 文件夹下,而博客的配置文件 ...

  5. 每天手工备份sql server2016数据库.bak文件到硬盘,累的要死,如何快乐的摸鱼,使用批处理+windows自带的任务计划程序,自动备份当天的.bak文件

    每天手工备份sql server2016数据库.bak文件到硬盘,累的要死,摸鱼,使用批处理+windows自带的任务计划程序,自动备份当天的.bak文件 一.使用步骤 1.批处理 总结 一.使用步骤 ...

  6. Gitee备份hexo博客+一键备份部署脚本

    转载自:https://zhuanlan.zhihu.com/p/386372613 1.准备工作 首先要准备一个gitee账号,此处就不多做描述了. 登录进去之后,在右上角点击新建仓库. 点击后进入 ...

  7. 备份 Hexo 博客(精简版)

    备份是一个好习惯. 目前网上绝大多数的 Hexo 博客备份都是在GitHub新建一个备份仓库,修改 .gitignore,每次更新博客的时候git push一下,这样确实方便很多,但是我在浏览 nex ...

  8. 计算机文件自动备份到移动硬盘,电脑文件定时自动备份到移动硬盘,有什么方法?...

    原标题:电脑文件定时自动备份到移动硬盘,有什么方法? 如果你是一名上班族,那么肯定会有备份重要电脑文件的习惯,因为电脑系统崩溃挥着磁盘硬盘损坏将会导致电脑文件的丢失,文件备份可以帮助我们减少这种风险. ...

  9. yuque-hexo:语雀写文,自动部署 Hexo 博客

    熟悉我的小伙伴应该知道,我喜欢使用 Markdown 来工作.学习笔记,主要是简洁方便. 并且我是一个坚定地"原生 Markdown 支持者",什么"所见即所得" ...

最新文章

  1. 2019年美团,滴滴,蘑菇街Java大数据面经分享!
  2. 【POJ】2828 Buy Tickets(线段树+特殊的技巧/splay)
  3. python浪漫代码-使用Python代码的程序员也浪漫
  4. DOM之城市二级联动
  5. localization of FreeBSD
  6. 下拉加载 实现 java_[Java教程]iscroll5实现一个下拉刷新上拉加载的效果
  7. LeetCode 671. 二叉树中第二小的节点
  8. Android官方开发文档Training系列课程中文版:OpenGL绘图之环境配置
  9. SQL 死锁分析(转贴)
  10. 【EMV L2】CDA复合动态数据认证/应用密文生成
  11. mui多层tab切换上拉加载的实现
  12. c语言 画图软件哪个好,电脑画图软件推荐
  13. python人脸检测与微信小程序_微信小程序人脸识别功能
  14. 比较好的自媒体平台推荐,揭秘哪个自媒体平台收入最高
  15. word文档误删怎么恢复
  16. 关注虚拟财富“.ME”域名的投资价值
  17. php粒子背景特效_12个精致炫酷的背景装饰特效库(分享)
  18. Adobe Audition 2022 v22.2 U2B macOS 专业的音频工作站
  19. 如何快速拷贝整个网站所有网页
  20. 【PAT A1094】The Largest Generation

热门文章

  1. 基于vs2019的openGL项目配置
  2. MySql的初识感悟,以及sql语句中的DDL和DML和DQL的基本语法
  3. 01--计算机基础知识
  4. day5 安装Linux服务器面板管理工具
  5. git 安装windows错误处理
  6. 手写字体的fisher算法识别
  7. 第六章——总线系统(2)
  8. 基于C/C++获取电脑网卡的IP地址信息
  9. ipmitool使用手册
  10. Function类型(函数)