menu Chancel's blog
rss_feed
Chancel's blog
有善始者实繁,能克终者盖寡。

笔记同步方案(VSCode + Syncthing)

作者:Chancel Yang, 创建:2019-04-17, 字数:4144, 已阅:824, 最后更新:2024-03-18

1. 前言

从大三开始使用笔记软件,近年来逐渐使用过有道云笔记/为知笔记/Evennote/leanote,最后稳定使用开源的Leanote笔记软件长达3年,这类产品或付费或开源,总结起来优缺点如下

  • 优点
    1. 专业的笔记管理
    2. 丰富的笔记分类功能
    3. 快捷的整理和收藏功能
    4. 自带博客功能(leanote)
    5. 多终端同步功能
  • 缺点
    1. 图片管理甚是麻烦,有时候为了收藏一张图片不得不创建一个笔记
    2. 除开leanote是开源产品,其他产品要想要有好的体验必须收费使用
    3. 数据不在自己手上(强迫症)
    4. 产品bug的存在可能导致笔记覆灭

3年来一直使用自己部署在服务器的leanote开源笔记,很感谢leanote团队的产品(毕竟没有任何收费)

leanote虽然产品在外观上和产品细节上不太好,但是作为一款笔记,功能强大而且同步迅速,三年来数次搬迁服务器均未出现任何丢失数据的情况

经过经三年的使用,也逐渐确定了自己对笔记软件的需求

  • 需求
    1. 不需要多终端管理功能
    2. 不需要太强的安全性
    3. 最好支持丰富的笔记类型(如文件/图片/视频等收藏)

鉴于以上需求,笔记软件虽然集成度高,但也存在自由度低的问题

思来想去,最终采用Visual Studio Code + Syncthing同步的方案能有效存储各类内容

一些复杂的功能均可以做到自定义,尤其是Syncthing本身强悍的自定义同步,简直可以花式秀操作

  • VSCode方案优点

    1. 存储各类内容,只需要做到文件夹分类合理
    2. 存储空间随意,只需要一块廉价的硬盘,有两台以上的电脑做Syncthing保证随时同步
    3. 图片/数据/文件均存储在本地(丰富的插件库能做到自动同步两台机器的Vscode配置/直接粘贴图片等操作!)
    4. 强大的VSCode插件支持,以及VSCode自带的同步设置/插件功能
    5. 历史管理可以使用Git做管理
  • VSCode方案不适用以下场景

    1. 需要多终端同步/修改笔记的需求(后期可以自己Diy开发相关功能,毕竟数据在自己手上)
    2. 不具备较强动手能力
    3. 需要完整的笔记功能,包括标签、分类、附件、标注等形形色色的标准笔记功能(开发起来太费劲不如用现成的)

接下来实际演练一下如何配置VSCode作一个合格的笔记软件

接下来进入整体,唠叨唠叨Visual Studio Code + Syncthing的配置方案

2. Visual Studio Code

2.1. 安装

VSCode下载地址:https://code.visualstudio.com/ 安装完成后打开VSCode,在VSCode界面中按Ctrl+Shift+X打开插件安装界面,并安装如下插件配置插件

  1. Markdown PDF - 将Markdown笔记转换成图片/PDF文件插件
  2. Markdown Table Prettifier - Markdown表格的格式化插件
  3. markdownlint - Markdown语法检测
  4. Paste Image - 支持直接Ctrl + Shift + V粘贴截图到Markdown笔记中
  5. Settings Sync - Vscode 同步设置(方便不同电脑同步相同vscode配置)
  6. Dracula Official - 暗夜主题

这些插件不需要过多设置就可以使用,有两个配置比较影响核心使用,分别是 同步配置粘贴图片,这里重点讲这两个配置

2.2. 粘贴图片

安装完Paste Image之后,在设置中更改工作区配置,打开File->Preferences->Settings,搜索Paste Image,找到Paste Image :Path选项,并填入你粘贴图片时想图片的存储位置,如下图

我配置是存放于当前工作区的 .config/screenshot文件夹中,并在Vscode中设置该文件夹不可见

配置完成之后即可使用Ctrl+Shift+V粘贴图片,如果无法使用快捷键,请查看Vscode快捷键设置是否有与该插件默认快捷键冲突的选项

2.3. 同步配置

我们装了一堆插件,可能根据需要还调整了不少插件配置,如果工作室里装一遍家里台式机装一遍笔记本装一遍...这很geek

我们需要借助一个Settings Sync来同步我们的插件 首先是上传我们的本机配置

  1. 按Ctrl+P,输入">sync:",可以看到有上传跟下载配置的选项,我们选择高级选项 Advanced options
  2. 在弹出来的界面里,输入我们的Github Gist ID 跟Token(如果没有,请先前往Github上创建,关于Gist ID可以自行Google),并勾选相关配置(自动上传下载,根据需求勾选),这里勾选上传跟下载

在另外一台机器下载刚才的配置

  1. 打开VSCode,安装Settings Sync,按Ctrl+P,输入">sync:",可以看到有上传跟下载配置的选项,我们选择高级选项 Advanced options
  2. 在弹出来的界面里,输入我们的Github Gist ID 跟Token,然后勾选自动下载,如需要马上更新,按Ctrl+P,输入">sync:",选择download即可

但我们插件也有配置呀?这样只是同步了插件,没有同步插件的配置,是的,所以我们在设置的时候,都默认修改当前工作区

这样vscode会在当前工作区留下一个Setting.json文件,只需要借助Syncthing,同步整个目录,自然插件配置也会同步!

3. Syncthing

安装

  1. 下载地址:https://syncthing.net
  2. 选择Syncthing Core(CLI&WEB UI) 版本下载并解压
  3. 运行syncthing.exe
  4. 在浏览器上访问 http://127.0.0.1:8384

配置

  1. 在WebUI中,选择添加文件夹,输入你的笔记存放位置
  2. 添加远程设备
    • 需要在另外一台电脑上安装Syncthing
  3. 分享笔记文件夹,并分享文件夹到远程设备

后台运行请自行添加到Windows的计划任务中

4. 备份

4.1. 版本控制

版本控制有两个方案可以考虑,分别的Git做版本控制跟Syncthing提供的版本控制(其实就是Git的封装),擅长使用Git的推荐使用Git做建议版本控制

喜欢方便也可以直接采用Syncthing的简易版本控制/交错文件版本控制,这里我推荐使用Syncthing的简易版本控制即可

  • 方式一:Git:创建版本库,并提交

    TEXT
    chancel@chancel-cp:/mnt/d/syncthing$ cd NoteRepository/
    chancel@chancel-cp:/mnt/d/syncthing/NoteRepository$ ls
    01.工作记录  02.技术记录  03.技术总结  04.项目记录  README.md
    chancel@chancel-cp:/mnt/d/syncthing/NoteRepository$ git init
    Initialized empty Git repository in /mnt/d/syncthing/NoteRepository/.git/
    chancel@chancel-cp:/mnt/d/syncthing/NoteRepository$ git add .
    chancel@chancel-cp:/mnt/d/syncthing/NoteRepository$ git commit -m 'first commit'
    
  • 方式二:Syncthing

    • 版本控制文档:https://docs.syncthing.net/users/versioning.html
    • 在WEB UI界面,选择文件夹,并点击选项,选择版本控制,根据需要自行选择版本控制强度
      • 回收站版本控制:每当远程设备修改/删除文件时,Syncthing会将旧文件移动到.stverions文件夹中的垃圾箱里(类似Windows的回收站机制)
      • 简易版本控制:每当远程设备修改/删除文件时,Syncthing会将旧文件移动到.stverions文件夹中,并在文件名称后加上时间戳以避免覆盖文件,需要指定最大单个文件保存数量
      • 交错文件版本控制:与简易版本控制类似,但允许保留一定时间内的文件与指定保留的文件路径
      • 外部文件版本控制:自定义程序接入控制文件版本

4.2. 备份设置

备份有很多思路,如果Syncthing设置为实时同步此处提供几个可行的备份方案,Syncthing默认的扫描是比较快的(无需全盘扫描)

  • 定时压缩到本地
    • 通过脚本定时压缩本地文件夹(脚本待补充)
  • 配置Syncthing定时同步
    • 在第三台PC上配置Syncthing并降低同步间隔,设定为5天同步一次
    • 方法:在WebUI界面中选中操作并选择高级设置,更改fsWatcherDelayS
  • 关联远程仓库
    • 使用Git关联远程仓库并定时推送

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]