Featured image of post 实战教程: 个人博客问题修正 pt.1

实战教程: 个人博客问题修正 pt.1

终结同步混乱

在完整经历了下面三个部分的系列教程后, 任何人应该已可访问你的静态博客:

一切看上去都很完美, 不论是 Hugo 构建, Qsync 同步 还是 HBS 3 (Hybrid Backup Sync 3) 同步.

但在深入查看了同步至 Backblaze B2 的静态博客文件后, 却发现其中存在着不需要的隐藏文件, 比如 .bzEmpty, 或者某些深层次的错乱目录结构. 虽然这并不影响对静态博客的访问, 但同步这些文件却要消耗事务次数以及更多的时间.

另外, 由于每当 Hugo 构建时, 都会更改图片等文件的修改时间, 这导致 Qsync 和 HBS 3 (Hybrid Backup Sync 3) 均认为相应的文件被更新, 从而触发上传/同步. 这同样会消耗事务次数以及更多的时间.

以上这些问题暂时没法解决, 那么就只好从其他角度考虑解决方案了.

这里暂时搁置 Qsync 同步的问题, 毕竟 QNAP NAS 通常部署在 LAN, 因此即便多些同步时间还是可忍受的, 而 HBS 3 (Hybrid Backup Sync 3) 却可使用 rclone 来代替, 唯一的缺点是暂时不能在 QNAP NAS 上运行 rclone.

注意:

为行文方便, 本教程以 blog.zhaijia.fun 作为示例的静态博客域名和 Repo 名.

请勿照抄, 务必将其替换为你自己的域名!

安装 Kapitainsky rclone browser

Kapitainsky rclone browser 是一个跨平台, 带 UI 的 rclone 应用, 支持主流的桌面系统:

  • MacOS
  • GNU/Linux
  • BSD family
  • Windows

这里以 MacOS 为例, 演示该应用的安装和使用.

1
brew install kapitainsky-rclone-browser --cask

使用 Kapitainsky rclone browser

配置

首次启动 Kapitainsky rclone browser (应用名为 Rclone Browser), 可能会提示无法确认 rclone 的版本, 并弹出设置窗口.

rclone location: /usr/local/bin/rclone

rclone.conf location: 填写一个你方便记忆的路径, 比如: ~/rclone.conf, 这个文件无需创建, 可直接使用后面的示例文件.

点击 “OK”.

此时可点击 “Config…” 创建 rclone.conf, 这是一个冗长的过程, 其中可以设置很多选项. 不过大部分选项其实只使用默认值即可, 因此可直接使用下面的 rclone.conf, 保存到前面设置窗口里的 rclone.conf location 即可:

1
2
3
4
5
6
[B2-blog-zhaijia-fun]
type = b2
account = <Backblaze B2 中已创建的 keyID>
key = <Backblaze B2 中已创建的 applicationKey>
hard_delete = true
download_url = https://blog.zhaijia.fun

第一行是配置名称, 随意.

account, key 请按说明填写.

hard_delete = true, 删除远程存储库文件时, 真正删除而不是转为隐藏文件.

点击 “Refresh”, 即可显示出上面的配置.

创建同步任务

选中该配置, 点击 “Open”, 会在一个新的标签页中打开它.

等待一会儿, 直到远程存储库加载完毕, 选中它, 点击工具栏上的 “Upload”.

Source: 选择本地 Hugo 构建静态网站的默认发布目录 public, 末尾必须要添加一个 “/”.

Destination: 远程存储库名, 必须以 “/” 结尾.

Mode: 勾选 “Sync”.

勾选 “Compare” (该项默认为选中), 右侧下拉, 选择 “Size & checksum”.

Task description: 同步 blog.zhaijia.fun

点击 “Save task”.

运行同步任务

模拟运行

点击 “Dry Run”, 只是模拟并未真正运行.

查看日志, 可看到类似:

1
2022/05/01 13:10:53 NOTICE: p/tutorial-how-to-build-a-personal-blog-part-3/.bzEmpty: Skipped delete as --dry-run is set (size 0)

意为将从远程存储库删除该文件, 但实际上略过了, 因为现在是模拟运行 (–dry-run).

最后可看到类似:

1
2022/05/01 13:10:53 INFO  : There was nothing to transfer

意为当前并无可同步的目录/文件.

这是因为 rclone 通过文件大小与校验和 (Size & checksum) 的检查发现两方的目录/文件是相同的, 即使两方的修改时间不同. 这种检查方式相比 Qsync 和 HBS 3 (Hybrid Backup Sync 3) 更加精确, 高效.

正式运行

点击 “Run”, 真正执行同步.

查看日志, 即可浏览同步详情.

Built with Hugo
主题 StackJimmy 设计