Hexo&github博客迁移(Windows迁移至Ubuntu)

  这篇博客主要讲的是如何进行 Hexo&github 博客迁移,此处应用场景为换电脑后进行迁移

  由于本人电脑有两块固态,所有在空间比较小的固态上装了一个 Ubuntu 系统,安装之后,进行一些开发应用,在安装之后有一些使用的问题想要记录一下,所以决定迁移个人博客到这个系统上。

  好了,废话不多说,接下来就是本人实际的迁移过程:

1.迁移前环境准备

在新系统上安装如下环境:

  1. 安装git:此处参考Ubuntu下git的安装及使用即可

  2. 安装Nodejs:此处参考本人博客中的Ubuntu安装Nodejs

  3. 安装Hexo:此处参考本人博客中的Ubuntu安装Hexo

2.将博客文件存至github

1)在github上创建仓库用于存放博客文件

如下图,点击 New repository 创建仓库,blog_all就是本人存放迁移博客的的仓库,当然,这个仓库是私人的。

图片加载失败

2)上传博客文件至github仓库

将原系统中博客目录下的文件都上传至 github 仓库中,因为有一些文件会使上传失败,所以本人的处理方式是:

在本地存放博客文件的文件夹同级创建用于存放可能会干扰上传的文件,本人移动的文件都有:

  1. 博客根目录下的:.gitignore 文件
  2. .deploy_git文件夹下的 .git 文件夹
  3. 主题文件夹下的 .git 文件夹

图片加载失败  

下图为本人上传的后的仓库:

图片加载失败

3.将github仓库中的文件clone至新系统中

1)在本地创建用于存放博客文件的目录

下图中的 blog_all 就是博客的目录,git_config 是存放一些可能会烦扰上传的文件

图片加载失败

2)至此博客迁移就已经完成了

图片加载失败

3)检验博客是否可以成功访问

blog_all 文件夹下执行一下命令后访问,localhost:4000:

1
hexo s -g

图片加载失败

4.编写shell脚本用于更新博客迁移的仓库,为以后博客迁移做准备

注:以下命令中的目录根据个人不同,请注意修改。

1)创建存放脚本的目录

下图为目录结构(根据个人喜好自己配置即可):

shell 目录下的update_blog.sh才是最终的执行文件,libs 下的文件执行供其他脚本调用的脚本

图片加载失败

2)编写 shell 脚本

此处分为四步进行:

  1. 将可能会干扰上传的文件移动到暂存文件夹中
  2. 使用 git 命令将文件上传
  3. 上传过后,再将暂存文件夹中的文件移动回原目录
  4. 创建日志文件,用于记录什么时间更新过
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash

#获取当前时间用于提交描述使用
time=$(date "+%Y-%m-%d %H:%M:%S")

#已下命令为移动一些配置文件
echo "1.移动 .deploy_git 下的 .git 文件夹到相应的博客配置文件暂存文件夹中"
sudo mv /usr/Environment/Hexo/blog_all/.deploy_git/.git /usr/Environment/Hexo/git_config/.deploy_git/

echo "2.移动博客文件根目录下的 .gitignore 到相应的博客配置文件暂存文件夹中"
sudo mv /usr/Environment/Hexo/blog_all/.gitignore /usr/Environment/Hexo/git_config/blog_git/

echo "3.移动博客主题文件夹下的 .git 文件夹到相应的博客配置文件暂存文件夹中"
sudo mv /usr/Environment/Hexo/blog_all/themes/stun/.git /usr/Environment/Hexo/git_config/themes_git/stun/

#以下命令为将本地改动提交至远程库
echo "4.执行 git add 跟踪命令"
git add .

echo "5.执行 git commit 命令将暂存区的改动提交至本地的版本库"
git commit -m "更新于:${time}"

echo "6.执行 git push 命令将本地库推送至远程库"
git push

#以下命令为将第一步中移动的配置文件移动回原位
echo "7.移动 .deploy_git 下的 .git 文件夹到相应的博客配置文件暂存文件夹中"
sudo mv /usr/Environment/Hexo/git_config/.deploy_git/.git /usr/Environment/Hexo/blog_all/.deploy_git/

echo "8.移动博客文件根目录下的 .gitignore 到相应的博客配置文件暂存文件夹中"
sudo mv /usr/Environment/Hexo/git_config/blog_git/.gitignore /usr/Environment/Hexo/blog_all/

echo "9.移动博客主题文件夹下的 .git 文件夹到相应的博客配置文件暂存文件夹中"
sudo mv /usr/Environment/Hexo/git_config/themes_git/stun/.git /usr/Environment/Hexo/blog_all/themes/stun/

#写入更新日志
# 判断文件是否存在不存在、创建文件并输入内容
file="/usr/Environment/Hexo/update_blog.log"

if [ ! -f $file ];then
echo "更新于:${time}" >> $file
else
# cat $file
echo "更新于:${time}" >> $file
fi

echo "新完成,日志写入完成"

以上脚本已经可以使用,但是需要在root用户下。

3)创建 Expect 脚本用于切换登录用户

  1. 安装 Expect、Tcl。此处参考本人博客中的Ubuntuan安装Expect&Tcl

  2. 编写 Expect 脚本

    1
    2
    3
    4
    5
    spawn sudo su root
    expect "密码:" {send ".\r" }
    expect "*#" {send "cd /usr/Environment/Hexo/blog_all\r"}
    expect "blog_all*" {send "sh /usr/Environment/Scripts/Shell/libs/shell_update_blog.sh\r"}
    interact
  3. 由于本人太懒,不想没有都输入 expect XXX,所以又写了一个调用 Expect 脚本的 shell 脚本

    1
    expect /usr/Environment/Scripts/Expect/expect_update_blog.sh

至此,更新脚本编写完成。

5.配置 /etc/profile 文件 使脚本在任意目录都可以执行

  1. 在/etc/profile 文件末尾添加如下配置:

    1
    2
    export SHELL_HOME=/usr/Environment/Scripts/Shell	#目录根据个人不同进行修改
    export PATH=$SHELL_HOME:$PATH
  2. 执行以下命令使配置文件生效:

    1
    source /etc/profile

    现在其实就已经可以在任意目录执行指定目录中的脚本文件了,但是重启终端之后就不行了,也许是个人电脑问题,但是还是建议进行下一步配置。

  3. 配置 ~/.bashrc 文件,在文件末尾添加第二步执行的命令。

至此,脚本就配置好了。


  好了,到这里本篇文章就结束,更新完博客之后可以顺便执行一下脚本,将博客文件上传至 github 仓库中,用于以后迁移,或者当个以防万一的备份。