1# @Language: Markdown
2# @Software: VS Code
3# @Author  : Di Wang
4# @Email   : [email protected]

Logseq与管理

本文大致讲讲当前我的笔记软件与笔记管理方案. 本地使用Logseq记录笔记与日记, Git进行版本管理, 保存后自动push到个人服务器上的Gitea, 个人服务器上同时运行duplicati, 每日将repository强加密后增量备份存在OneDrive中. 目前挺满意.

Logseq

对于笔记软件, 有太多形而上与形而下的讨论, 我无力参与太多. 但为何从Notion转到Logseq倒可以讲讲.

  1. 一是Notion的性能问题. 在page层次较深与page中有较多block时, 能明显感受到中文输入条件下切换页面的卡顿. 或许是对CJKV的支持不够, 或许是数据库索引方面的问题, 但无论如何还是令人困扰.

  2. 二是云存储的隐私问题. Notion中的图片会存放在AWS上, 不适合存放一些偏私密的内容.

  3. 三是Notion的笔记粒度问题. 以页面为基础笔记单元在整理树形结构笔记时(如自然按章节间断的课程笔记)很合适, 但面对非树形结构性内容(如日记与code snippet)则显得力不从心. 在写笔记前必须思考将之归入何大类下的何小类显得繁琐, 而往往此种分类还会面临日后调整的需要.

为何是Logseq? 试用了一段时间, 它让我捡回了中断数年的写日记习惯. 于是就一直用着了. 而Logseq中将笔记的粒度控制在block, 在某些场景下是比粒度在page更好的选择. 至于它的whiteboard, flashcard功能, 我选择关闭. 以及block的嵌入引用等华丽功能也甚少使用.

Logseq与Git

Logseq支持使用Git进行版本管理. 但Git在Windows下自然需要自己安装.

然后添加hooks 文件pre-commit会在commit之前执行, 先pull.

 1#!/bin/sh
 2#
 3#
 4# Pull before committing
 5# Credential handling options:
 6#  - hardcode credentials in URL
 7#  - use ssh with key auth
 8#  - https://git-scm.com/docs/git-credential-store
 9#  - git credential helper on windows
10
11# Redirect output to stderr, uncomment for more output for debugging
12# exec 1>&2
13
14output=$(git pull --no-rebase)
15
16# Handle non error output as otherwise it gets shown with any exit code by logseq
17if [ "$output" = "Already up to date." ]; then
18    # no output
19    :
20else
21    # probably error print it to screen
22    echo "${output}"
23fi
24
25git add -A

文件post-commit会在本地commit之后执行, push to remote

1#!/bin/sh
2
3git push origin main

Gitea

相当多人使用GitHub的私有仓库作为Logseq的备份仓库, 但还是个人服务器更隐蔽一些.

对于个人Git服务器, 我选择使用Gitea. Gitea的安装与配置见官方文档.

Linux/macOS/Windows下都需要配置.ssh/config文件

下例为GitHub的配置, 如果自建则可能需要修改HostName, Port与IdentityFile项.

1Host github.com
2	User git
3#	Port 22
4	HostName github.com
5	PreferredAuthentications publickey
6	IdentitiesOnly yes
7	IdentityFile ~/.ssh/id_ed25519_github
8	ForwardX11 no

Duplicati

Duplicati的安装与配置见官方文档.

由于是在个人服务器上运行, 因此duplicati必须配置密码. 之后就可以在网页中设置需要备份的目录, OneDrive的连接密码与目标目录.