最近把Hexo的文档都移到了obsidian里进行编辑,编辑效率和管理都提升了一个档次。
美中不足的是,不想吧hexo的一堆npm的文件都一起到obsidian里,感觉很杂乱,所以依然是在另外的目录做了hexo的博客。

这样麻烦就来了,每次需要单独挑出来新写的文章和图片里,手动添加到hexo的对应目录下。(我本来的方法更麻烦,因为是在服务器上直接编译hexo博客,所以要连上服务器之后把文件一个一个传上去)

今天尝试用Rsync来解决这个问题。

md文件准备

文本准备

文本没有任何需要准备的,md文件无缝可以从Obsidian直接同步到hexo.

图片准备

在Obsidian的文档文件夹里创建一个photo文件夹,所有插入的图片放这里。
因为obsidian插入文件的语法不是标准的md语法,是像下面这样的:

1
![[xxx.png]]

这个格式hexo是不认的,路径也不对。
把这个格式修改为

1
![](./photo/xxx.png)

如果有很多图片的话,可以用obsidian的替换功能

![[ 替换为 ![](./photo/
]] 替换为 )

进行同步

确定obsidian下文档文件夹的路径,假设为 /Users/abc/Documents/obsidian/hexo
那obsidian下photo的路径就是 /Users/abc/Documents/obsidian/hexo/photo

确定hexo下文档文件夹的路径,假设为 /Users/abc/hexo/blog/source/_posts
确定hexo下图片文件夹的路径,假设为 /Users/abc/hexo/blog/source/photo

用Rsync同步:

1
2
3
4
5
# 同步文档
rsync -arv -P --delete --human-readable /Users/abc/Documents/obsidian/hexo /Users/abc/hexo/blog/source/_posts

# 同步图片
rsync -arv -P --delete --human-readable /Users/abc/Documents/obsidian/hexo/photo /Users/abc/hexo/blog/source/photo

rsync的优势是,没有变化的文件不会同步,所以每次只会增量同步,这就省事很多啦。

发布

后面就用正常的hexo发布流程就好了

1
2
hexo g
hexo d

我一般不用 hexo clean ,会刷新整个 public 文件夹,deploy的时候会全部重新上传很慢。

脚本

以上操作可以全部放到一个脚本里,下次执行的时候,只要一行代码就搞定了(obsidian内部的没办法)。

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

echo "start rsync"

# 同步文档
rsync -arv -P --delete --human-readable /Users/abc/Documents/obsidian/hexo /Users/abc/hexo/blog/source/_posts

# 同步图片
rsync -arv -P --delete --human-readable /Users/abc/Documents/obsidian/hexo/photo /Users/abc/hexo/blog/source/photo

echo "start hexo"
hexo g
hexo d

Tip:
mac下在访达的显示选项里选择显示地址栏,然后右键点击路径可以复制当前文件夹的路径,尤其对我把文件都存在iCloud文件夹里的人很有用。
甚至可以用同样的方式在此处打开Terminal,非常实用。