思源笔记是一款优秀的本地优先的双链大纲笔记软件,拥有强大的笔记编辑功能且都是免费,唯一付费的就是云同步等一些服务了。但如果暂时还用不着云同步的,我们可以利用 Git 同步思源笔记。

优缺点

  • Git这套方案 和官方同步是有差异的,唯一优点就是免费,意味着你得包涵以下缺点:
    • 移动端
      • 移动端只能查看(我个人觉得移动端写笔记的场景很少,可以用语雀小记或者 flomo 来代替记录)
      • 移动端的同步有点麻烦,但总体是建立在很少使用的场景下
      • 只能在 Android(目前)
    • PC 端
      • PC 端使用思源笔记前,记得拉取一下笔记数据
      • PC 端使用思源笔记后,记得提交一下笔记数据
  • Git 和第三方云盘相比较,不用担心同步导致的错误问题(因为官方思源笔记不支持通过第三方同步盘进行同步),因为每次的同步都两个版本有差异你是需要手动解决冲突的,保证了备份的稳定性,而且 git 的记录方便回滚任意记录的笔记数据

    开始

    前置准备动作:

  • 本地已安装 Git

  • 有一个 GitHub 或 Gitee 的账号,建议 Gitee 国内速度稳定
  • 一台安卓手机

    PC

  1. 打开思源笔记的 设置 ,选择 关于 找到 工作空间目录

image.png

  1. 在空间目录打开命令行工具,运行命令:

    1. git init
  2. 添加 git 忽略文件(官方的目录只需同步 /data 目录,所以其他目录我们忽略掉)

    1. /backup
    2. /conf
    3. /history
    4. /sync
    5. /temp
    6. /corrupted
    7. .DS_Store
  3. 在 Gitee 新建一个私有仓库,按照提示配置账户邮箱,增加远端仓库 ```

    配置名字和邮箱

    git config —global user.name “xxx” git config —global user.email “xxx@163.com”

增加远程仓库

git remote add origin git@gitee.com:xxx/test.git git push -u origin “master”

  1. 5. 换到另一台电脑,你只需要通过 `git clone` 克隆下来,在思源笔记的 `设置` ,选择 `关于` 找到 `工作空间目录`,切换到该目录即可。
  2. **完成上面的1-5步其实已经可以将思源笔记的数据进行备份了,可以实现家里和公司的笔记同步备份。**
  3. <a name="c95e748d"></a>
  4. #### 移动端
  5. PC 很简单,移动端就比较麻烦了,移动端由于 Android11 开始不能编辑 `Android/data` 里面的数据(除非手机自己 root),但思源笔记的数据又是在其中,所以无法用第三方软件(如 folderSync)来同步。所以我们得换一种方式,通过在 `设置` 的通过 `导入` 数据实现,而且导入的格式为将 `data` 目录打包成 `zip`
  6. <a name="MGit"></a>
  7. ##### MGit
  8. 对于安卓,我们可以通过 `MGit` 来实现 git 项目的下载,这个 app 的页面很简单,步骤是:
  9. 1. 首先点击右上角图标进入设置,设置好存储位置
  10. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/1561615/1666448199786-075f31b5-0c13-4d65-8b75-564315e58666.png#clientId=u5f85cff1-810d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=468&id=u059368e7&name=image.png&originHeight=702&originWidth=415&originalType=binary&ratio=1&rotation=0&showTitle=false&size=65915&status=done&style=none&taskId=u23b72f28-f6df-46a0-81f9-45174f77932&title=&width=276.6666666666667)
  11. 2. 点击 添加远程地址和本地路径,克隆即可,过程会提示输入账号和密码(非 SSH
  12. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/1561615/1666448206378-c520eb70-41f0-4538-9110-d4eb818185a1.png#clientId=u5f85cff1-810d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=242&id=ue1c18831&name=image.png&originHeight=363&originWidth=410&originalType=binary&ratio=1&rotation=0&showTitle=false&size=27920&status=done&style=none&taskId=u30773d18-e45c-4fc5-9b20-290c4db2fce&title=&width=273.3333333333333)
  13. 3. 将拉取的 data 目录,通过手机打包成 zip 格式
  14. 4. 在思源笔记中的设置选取导入数据,选择第 3 步打包出来的文件
  15. <a name="a8486a72"></a>
  16. ##### 省略 zip 打包
  17. 后续每次移动端同步还是很麻烦,拉取下来需要手机打包工具 zip,最后还要选择导入,有没办法省略其中一些环节呢?有的,我们可以将这个打包过程前置到 PC 端提交数据时去做。
  18. 那我们不妨写一个脚本去做这个事情,在 PC 端的工作目录下新建一个 `build.sh`

!/bin/bash

打包data并备份数据

变量

PACKAGE_NAME=”data” DATETIME=date "+%Y-%m-%d %H:%M:%S" TARGET_BRANCH=”master”

检测git空间状态

if [[ -n $(git status —s) ]];then

打包

rm -f $PACKAGE_NAME.zip zip -r $PACKAGE_NAME.zip $PACKAGE_NAME

提交推送

if [ $? -eq 0 ]; then git add . git commit -m “$DATETIME” git pull git push —set-upstream origin $TARGET_BRANCH fi else echo “workspce no changes” fi `` 每次写完笔记需要提交时,我们就在git bash在目录下执行.build.sh` 就可以了,打包,提交,推送,全部动作一个脚本搞好。

mac 本身支持 zip 打包,windows 要在 git bash 中使用 zip 命令打包,可以参考这篇文章

那经过前置打包后,每次移动端我们只需要两步:

  • Mgit 拉取笔记数据
  • Siyuan App 设置导入选取笔记数据下 data.zip 即可

    总结

    这是笔者个人的同步思路,虽然不完美,但也解决了 PC 端同步,移动端能偶尔但能随时查看的需求。后续重度使用后,也会考虑云端服务。