去中心化把 Hexo 博客源码备份到网盘和远程主机
这是去中心化博客备份专题的第 1 篇。
互联网时代的“狡兔三窟”,叫作“去中心化”。
GitHub 封禁伊朗和俄罗斯开发者的私有账户,不能说明大厂不靠谱或者开源不靠谱,相反,说明了中心化不靠谱。即使 GitHub 那样的大厂,也会因为合规要求而封禁账号。如果开发者仅仅依赖 GitHub 托管源码,那还是落入了中心化的窠臼。
谷月姐不但给 博客 建立了好几个镜像,而且源码放在好几个不同的云盘和源码托管平台。就是要去中心化,免得一旦中美开战, GitHub 封禁中国开发者的账户,导致我的博客全军覆没。
我的 博客 源码在本地有一份,在 GitHub 有一份。接下来,谷月姐要把它备份到不同的云端。如果本地或 GitHub 出错,可以及时恢复。如果我的 GitHub 被封禁,还可以转移到其他的源码托管网站,或者从本地发布我的博客。
下面,谷月姐要把源码备份到网盘和远程主机。
1 准备工作
-
Windows 用户要安装 OpenSSH,以启用
ssh-keygen
、ssh
、scp
等命令。Mac/Linux 用户无须安装,操作系统自带这些命令。 -
安装压缩工具,此处以 WinRAR 和 7zip 为例。
-
安装网盘客户端,并配置自动同步文件夹。本文以 OneDrive 为例,OneDrive 是 Windows 自带的,它的同步文件夹是
C:\Users\<你的用户名>\OneDrive
,它会自动将这个文件夹中的文件及子文件夹与云端保持同步。 -
准备远程主机,远程主机要运行 Linux 系统;在本地用
ssh-keygen
命令生成一对公钥和一对私钥,并在远程主机配置公钥,以实现无密码登录。
2 脚本 (Windows 版)
我写了一个批处理文件,命名为 BackupMyBlog.cmd
,保存到 C:\Users\Kukmoon\kukmoon_blog
文件夹,即我的博客源文件所在目录。
每次更新博文以后,在博客源文件所在目录执行它,或者用 schtasks
命令定期执行。
1 |
|
每行命令的作用解读:
-
清理发布博客时生成的静态文件,如果不加上
call
关键字,执行完hexo clean
以后就会自动中断批处理。 -
清理通过 git 发布博客时生成的静态文件。
-
调用 WinRAR 将我的博客源文件所在的文件夹打包压缩为
kukmoon_blog.rar
文件。其中,u
表示压缩并更新文件;-ep1
在压缩包中使用相对路径;-r
表示递归打包压缩该文件夹下每一层子文件夹及文件;-rr
表示添加恢复记录,以免在网络传输中出错导致无法修复;-mt4
表示四线程压缩,建议改成你 CPU 的实际线程数以求得最快速率;-m5
表示最高压缩率。 -
将生成的
kukmoon_blog.rar
复制到网盘的同步文件夹下,由网盘的同步 App 上传到云端。需要事先安装网盘的同步 App,由于 OneDrive 是 Windows 自带的,所以不需要 App。XCOPY
是 Windows 特有的命令,比起copy
命令,更适合复制大文件。 -
将生成的
kukmoon_blog.rar
复制到运行 Linux 操作系统的远程主机。假设远程主机的 IP 地址为999.999.999.999
,用户名为kukmoon
。
3 脚本 (macOS/Linux 版)
我写了一个脚本,命名为 BackupMyBlog.sh
,保存到 ~/kukmoon_blog
文件夹,即我的博客源文件所在目录。
每次更新博文以后,在博客源文件所在目录执行它,或者用 cron
命令定期执行。
1 |
|
每行命令的作用解读:
-
清理发布博客时生成的静态文件,如果不加上
call
关键字,执行完hexo clean
以后就会自动中断批处理。 -
清理通过 git 发布博客时生成的静态文件。
-
调用 RAR for macOS/Linux 将我的博客源文件所在的文件夹打包压缩为
kukmoon_blog.rar
文件。其中,u
表示压缩并更新文件;-r
表示递归打包压缩该文件夹下每一层子文件夹及文件;-rr
表示添加恢复记录,以免在网络传输中出错导致无法修复;-mt4
表示四线程压缩,建议改成你 CPU 的实际线程数以求得最快速率;-m5
表示最高压缩率。 -
将生成的
kukmoon_blog.rar
复制到网盘的同步目录下,由网盘的同步 App 上传到云端。需要事先安装网盘的同步 App,此处以 OneDrive for macOS 为例,同步目录是~/OneDrive
。 -
将生成的
kukmoon_blog.rar
复制到运行 Linux 操作系统的远程主机。假设远程主机的 IP 地址为999.999.999.999
,用户名为kukmoon
。
4 补充:7zip 命令行的使用
7zip 开源,比 WinRAR 更适合 macOS/Linux 用户,但是它缺乏恢复记录功能。
-
Windows 压缩为 7z 格式:
"C:\Program Files\7zip\7z.exe" u -mmt4 -mx9 %TEMP%\kukmoon_blog.7z C:\Users\docto\kukmoon_blog\
-
Windows 压缩为 zip 格式:
"C:\Program Files\7zip\7z.exe" u -mmt4 -mx9 -mcu=on %TEMP%\kukmoon_blog.zip C:\Users\docto\kukmoon_blog\
-
Mac/Linux 压缩为 7z 格式:
7z u -mmt4 -mx9 /tmp/kukmoon_blog.rar ~/kukmoon_blog/
-
Mac/Linux 压缩为 zip 格式:
7z u -mmt4 -mx9 -mcu=on /tmp/kukmoon_blog.rar ~/kukmoon_blog/
说明:u
表示压缩并更新文件;-mmt4
表示四线程;-mx9
表示最高压缩率;-mcu=on
表示强制用 UTF-8 为文件名编码,以避免在其他语言或其他操作系统平台上出现乱码,仅适用于 zip 格式。
5 总结
这样,谷月姐就把源码备份到了网盘和远程主机。读者也可以举一反三,用同样的方法,将需要去中心化备份的重要数据备份到更多的网盘、远程主机。
下期预告
下一期将介绍借助 Git 来备份博客源码。
图片版权
头图:Banner Image by milkusmaximus from Pixabay
![](/img/zhi-fu-bao-shou-kuan-ma.png)
![](/img/wei-xin-zan-shang-ma.png)