# 常见问题
## 思源是如何存储数据的?
数据保存在工作空间[^1]文件夹下,在工作空间/data/ 文件夹下:
- `assets` 用于保存所有插入的资源文件[^2]
- `emojis` 用于保存自定义图标表情图片
- `snippets` 用于保存代码片段
- `storage` 用于保存查询条件、布局和闪卡[^4]数据等
- `templates` 用于保存模板片段[^5]
- `widgets` 用于保存挂件[^6]
- `plugins` 用于保存插件[^7]
- `public` 用于保存公开的数据
- 其余文件夹就是用户自己创建的笔记本文件夹,笔记本文件夹下 `.sy` 后缀的文件用于保存文档数据,数据格式为 JSON
## 支持通过第三方同步盘进行数据同步吗?
不支持通过第三方同步盘进行数据同步,否则可能会导致数据损坏。虽然不支持第三方同步盘,但是支持对接第三方云端存储[^8]。
另外,也可以考虑手动导出导入 Data 实现数据同步:
- 桌面端:
设置 -
导出 -
导出 Data /
导入 Data
- 移动端:
-
关于 -
导出 Data /
导入 Data
在 macOS 上思源会访问桌面、文稿和 iCloud 云盘文件夹,目的是为了检测工作空间是否放置在 iCloud 同步路径下,思源绝不会窥探你的个人数据,请放心。
## 思源是开源的吗?
思源笔记是完全开源的,在 GitHub 上可以找到完整的源代码。
## 如何升级到新版本?
- 如果是通过应用商店安装的,请通过应用商店更新
- 如果是桌面端通过安装包安装的,可打开
-
关于-
自动下载更新安装包选项,这样思源会自动下载最新版安装包并提示安装
- 如果是通过手动安装包安装的,请再次下载安装包安装
可在
设置 -
关于 -
当前版本 中
检查更新,也可以通过关注[官方网站](https://b3log.org/siyuan/)来获取新版本。
## 有的块(比如在列表项中的段落块)找不到块标怎么办?
在列表项下的第一个子块是省略块标的。可以将光标移到这个块中,然后通过
Ctrl+/触发它的块标菜单。
## 数据仓库密钥遗失怎么办?
- 如果之前在多个设备上正确初始化过数据仓库密钥的话,那么该密钥在所有设备上都是相同的,可以在
设置-
关于-
数据仓库密钥-
复制密钥字符串找回
- 如果之前没有正确配置(比如多个设备上密钥不一致)或者所有设备均不可用,已经无法获得密钥字符串,则可通过如下步骤重置密钥:
1. 手动备份好数据,可通过
导出 Data 或者直接在文件系统上复制 `工作空间/data/` 文件夹
2.
-
关于-
数据仓库密钥-
重置数据仓库3. 重新初始化数据仓库密钥,在一台设备上初始化密钥以后,其他设备导入密钥
4. 云端使用新的同步目录,旧的同步目录已经无法使用,可以删除
5. 已有的云端快照已经无法使用,可以删除
## 使用需要付费吗?
大部分功能是免费的,即使是在商业环境下使用。
会员特权[^10]需要付费后才能使用,请参考[定价](https://b3log.org/siyuan/pricing.html)。
如果你没有会员特权需求但又想支持开发,欢迎进行捐赠:[靠爱发电 - 链滴](https://ld246.com/sponsor)
## “思源”命名的由来
思源这个名字取自中国古代成语“饮水思源”,其字面意思是“喝水的时候,要想到水是从哪里来的”,比喻不忘本、知感恩。
我们希望用户在使用思源笔记进行知识管理的时候不要忘记知识的出处和关联,更重要的是不要忘记通过自己的所学回报社会,回报全人类。
[^1]: # 工作空间
## 概述
工作空间用于保存数据、历史、配置和运行时所需要的文件。
- 不同工作空间通过文件系统文件夹相互隔离
- 一个工作空间只能被一个内核进程伺服
## 切换工作空间
- 桌面端可以在顶栏左侧下拉菜单中打开多个工作空间
如果你的多个工作空间需要经常启动,可以考虑为每个工作空间创建不同的启动入口并指定启动参数 `--workspace="工作空间绝对路径"`(请使用 `"` 将路径包裹起来)。比如 Windows 系统上可以复制多个快捷方式,并在每个快捷方式 - 属性 - 目标后跟随工作空间路径参数,例如 `--workspace="F:\SiYuan"`。除此以外,还可以通过 `--port=12345` 来指定内核监听的端口。
- 移动端可以在右侧栏
中切换不同的工作空间
## 文件系统结构
文件系统上工作空间下的结构:
- `conf` 用于保存工作空间配置
- `corrupted` 用于保存已经损坏的数据文件
- `data` 用于保存数据,具体结构请参考[这里](#20210428213927-rbcfx2y)
- `history` 用于保存文件历史
- `repo` 用于保存数据仓库数据
- `temp` 用于保存运行时所需的临时文件
- `.lock` 内核进程启动后会创建该文件,用于锁定工作空间
[^2]: # 资源文件
## 概述
通过编辑器插入的附件会被认为是资源文件,默认放置在 `工作空间/data/assets/` 文件夹下。
## 插入图片或文件
在编辑器中可以直接粘贴系统剪切板中复制好的图片或文件(Linux 端不支持),或者通过拖拽图片或文件到编辑器中也可以实现插入。插入时有两个选择:
- 复制为资源文件并插入:将图片或文件复制为资源文件并插入,快捷键
Ctrl+
V
- 使用 `file://` 绝对路径并链接:将图片或文件以本地绝对路径方式插入超链接,快捷键
+
Shift+
V,或者按住
Alt 后拖入
对于图片,如果排版时指定了图片标题,则标题会被渲染在图片下方作为图注。

#注意#:插入图片不会进行压缩处理,所有图片和文件都以原始数据进行保存。
## 清理未引用资源
“引用”指的是通过超链接、插入图片或者 HTML 标签(例如 `` 、`
1. 引用具体的资源文件,比如图片或者文件
2. 引用资源文件夹(在 assets 文件夹下的子文件夹),必须以 `/` 结尾,比如 `[foo](assets/bar/)`。一个资源文件夹如果被引用,则下面所有资源文件无论是否被单独引用,都会被算作已经引用
在
设置 -
资源 中可以一键清理未引用资源,如果需要找回被误删的文件,请通过回滚[^3]。
#注意#:使用绝对路径(本地路径或者是网络路径)不会纳入清理计算。
## 查看丢失资源
在
设置 -
资源 中可以查看丢失的资源,复制路径后可以在全局搜索中找到引用处。
#注意#:搜索资源文件路径需要先启用
设置 -
搜索 -
索引 -
资源文件路径。
## 笔记本级资源文件
如果需要默认将插入的资源文件放置在文档同级 assets 文件夹下,则需要先手动创建名为 assets 的文件夹,这样思源会优先选择该 assets 文件夹来存放资源文件。
建议尽量不要使用笔记本级资源文件,因为这会带来一些副作用:
- 删除该笔记时,为保证跨笔记本资源文件引用正常工作,该笔记引用的资源文件会被批量复制到全局 assets 中
- 不支持在数据历史中查看笔记本级资源文件历史
- 不支持使用 `/资源` 搜索
- 不支持重命名
## 图片 OCR 提取文本
该特性仅在桌面端支持,并且需要先手动安装 *Tesseract OCR* 程序。
#注意#:
- 在安装 Tesseract OCR 时需要勾选你需要的语言包,并将安装后的 Tesseract-OCR 目录路径添加到环境变量 `PATH` 中,这样思源才能直接调用 `tesseract` 命令进行图片 OCR 提取文本。如果安装正常的话,在内核启动日志中可以搜索到 `tesseract-ocr enabled`;如果要禁用 OCR,请设置环境变量 `SIYUAN_TESSERACT_ENABLED=false`
- 思源并不会启用所有已安装的语言包,因为语言包太多的话会导致 OCR 缓慢甚至超时返回空结果,并且占用过多的系统资源,所以默认最多只会启用 `eng`、`chi*`、`fra`、`spa`、`deu`、`rus` 和 `osd`,如果你需要更准确的语言支持,可以通过配置环境变量 `SIYUAN_TESSERACT_LANGS` 来指定语言包,比如 `SIYUAN_TESSERACT_LANGS=chi_sim+eng`
- 仅支持 png 和 jpg 格式的图片
- 默认只对 2MB 以下的图片进行处理,如果需要调整,可以通过环境变量 `SIYUAN_TESSERACT_MAX_SIZE` 设置,值的单位是字节,比如:`SIYUAN_TESSERACT_MAX_SIZE=4000000` 将上限调整为 4MB
图片 OCR 提取文本过程是自动在后台进行的,目前仅支持 PNG、JPG 图片。提取的文本会被用于搜索功能,这样就能通过文本关键字来定位图片。
### 手动调整 OCR 结果
OCR 的结果保存在 `工作空间/data/assets/ocr-texts.json` 中,可通过下面的方式调整 OCR 结果:
- 退出思源后在文件系统上修改该文件(请注意 JSON 格式的正确性)
- 或者在编辑器中的图片元素菜单中选择
调整完以后需要手动重建索引。
[^3]: ### 通过文件历史回滚
在数据历史界面左侧时间列表栏中,每一条历史记录右侧都有一个回滚按钮,点击以后将弹出确认对话框,如果确认回滚的话将使用文件历史覆盖现有文件。
如果有非常多的文件需要回滚,建议手动在文件系统上复制。历史文件夹的内部结构和 data 内部结构一致,比如:
- 笔记本删除:`2022-05-01-091021-delete/20210808180117-czj9bvb/`,即 `历史生成日期-{操作}/{笔记本 ID}/`
- 文档删除:`2022-05-01-091209-delete/20210808180117-czj9bvb/20200812220555-lj3enxa.sy`,即 `历史生成日期-{操作}/{笔记本 ID}/{文档路径}`
- 资源文件清理:`2022-05-01-095621-clean/assets/image-20220501091157-qccp87e.png`,即 `历史生成日期-{操作}/assets/{资源文件名}`
手动回滚操作步骤:
1. 退出思源,然后全量复制备份一下整个工作空间,避免后续误操作导致数据丢失
2. 进入 `工作空间/history/` 文件夹,将 `历史生成日期-{操作}` 文件夹下的数据直接复制到 data 文件夹进行覆盖
3. 启动思源后手动执行重建索引
[^4]: # 闪卡
## 概述
将内容块设置为闪卡后会自动通过间隔重复算法 FSRS (github repo: open-spaced-repetition/free-spaced-repetition-scheduler) 安排复习。
## 使用方式
### 内容块
在开始正式制卡之前,我们先介绍一些制卡的基本规则:
- 内容块中的 **标记** 元素会被视作挖空的答案
- 如果将超级块设置为闪卡,则该超级块的第一个子块会被视作问题,其余子块会被视作答案
- 如果将列表或者列表项设置为闪卡,则非子列表会被视问题,子列表会被视作答案
- 如果将标题块设置为闪卡,则该标题块会被视作问题,其下方块会被视作答案
以上规则可以在
设置 -
闪卡 中调整。
### 基于文档
基于文档的使用方式可以不必关注卡包,并且支持父子文档复习。
- 在块标菜单中选择
快速制卡 完成制卡
- 在文档树面板中右击文档或者在编辑器中点击文档块标
进入复习
### 基于卡包
基于卡包的使用方式可以将不同文档中的内容块制卡后放到统一的卡包中复习。
- 在块标菜单中选择
添加到卡包...,然后将该内容块添加到一个卡包中完成制卡
- 通过点击顶栏菜单中的
进入复习
该使用方式默认关闭,如果需要可以在
设置 -
闪卡 -
卡包 中开启。但建议不要基于卡包使用闪卡,因为卡包是固定的,没有基于文档使用闪卡灵活。
## 设置
在
设置 -
闪卡 中可以调整闪卡相关的全局配置,其中
新卡上限 和
旧卡上限 可以使用文档块自定义属性进行覆盖:
- `riff-new-card-limit`
- `riff-review-card-limit`

不同文档上单独配置,相互独立不影响,比如父文档上配置为 5,子文档为 10,那么从父文档复习的时候就是 5,不会叠加子文档的配置。
## #注意#
- 内容块被删除(或者 ID 改变)后对应的闪卡会失效
- 不建议启用卡包,该方式已经弃用,继续使用可能会遇到无法解决的问题
## 技术实现
- 卡包数据通过 MessagePack 序列化协议存储在 `工作空间/data/storage/riff/` 文件夹下
- 启动时加载所有卡包数据到内存,数据同步下载后重新加载一次
[^5]: # 模板片段
## 概述
模板片段用于在光标插入符位置快速插入之前设置好的文本内容,支持变量。模板片段使用 `.md` 后缀文件,存放在工作空间 data/templates 文件夹下。
## 编写模板
模板使用的是 [Go 编程语言的文本模板](https://golang.org/pkg/text/template/)进行实现,如果你对此有了解的话,可以实现一些程序逻辑在里面,比如比较逻辑、迭代逻辑等。另外,为了避免语法冲突,模板语法使用 `.action{action}`(而不是 `{{action}}`)。
我们通过开源项目 Sprig (GitHub repo: Masterminds/sprig) 内置了一些变量和函数来丰富模板。比如可通过 `.action{now | date "2006-01-02 15:04:05"}` 来渲染当前时间,更多用法请参考 [Sprig 帮助文档](http://masterminds.github.io/sprig/)([中文版](https://docs.siyuan-note.club/zh-Hans/reference/template/sprig/))。
关于日期时间格式化有个细节需要#注意#:Go 编程语言的格式化比较特殊:不是使用 `yyyy-MM-dd HH:mm:ss`,而是使用 `2006-01-02 15:04:05` 这个固定时间格式([知乎讨论](https://www.zhihu.com/question/366830553))。
除了 Sprig 内置的变量和函数,还支持如下变量和函数:
- `title`:该变量用于插入当前文档名。比如模板内容为 `# .action{.title}`,则调用后会以一级标题语法插入到当前文档内容中
- `id`:该变量用于插入当前文档 ID
- `name`:该变量用于插入当前文档命名
- `alias`:该变量用于插入当前文档别名
- `getHPathByID`:该函数用于返回块 ID 对应块的可读路径
- `queryBlocks`:该函数用于查询数据库,返回值为 blocks 列表
```
.action{$today := now | date "20060102150405"}
.action{$blocks := queryBlocks "SELECT * FROM blocks WHERE content LIKE '?' AND updated > '?' LIMIT ?" "%foo%" $today "3"}
```
- `getBlock`:该函数用于根据块 ID 查询数据库,返回值为 block
```
.action{getBlock "20250331162928-53comqi"}
```
- `querySpans`:该函数用于查询数据库,返回值为 spans 列表
```
.action{querySpans "SELECT * FROM spans LIMIT ?" "3"}
```
- `querySQL`:该函数用于查询数据库,返回值为结果集
```
.action{querySQL "SELECT * FROM refs LIMIT 3"}
```
- `statBlock`:该函数用于统计块内容
```
.action{ (statBlock .id).RuneCount} .action{ (statBlock .id).WordCount}
```
- RuneCount
- WordCount
- LinkCount
- ImageCount
- RefCount
- BlockCount
- `runeCount`:该函数用于返回字符串中的字符数
- `wordCount`:该函数用于返回字符串中的字数
- `parseTime`:该函数用于将时间格式的字符串解析为 `time.Time` 类型,以便使用更多格式化方法渲染该时间
- `Weekday`:该函数用于返回周几 `Sunday=0, Monday=1, ..., Saturday=6`
- `WeekdayCN`:该函数用于返回周几 `Sunday=日, Monday=一, ..., Saturday=六`
- `WeekdayCN2`:该函数用于返回周几 `Sunday=天, Monday=一, ..., Saturday=六`
- `ISOWeek`:该函数用于返回第几周
- `pow`:指数计算,返回整数
- `powf`:指数计算,返回浮点数
- `log`:对数计算,返回整数
- `logf`:对数计算,返回浮点数
## 调用模板
在光标插入符位置,通过
/ 选择模板来触发模板搜索,找到需要插入的模板后
回车 即可。
## 一个示例
```plaintext
.action{$before := (div (now.Sub (toDate "2006-01-02" "2020-02-19")).Hours 24)}
.action{$after := (div ((toDate "2006-01-02" "2048-02-19").Sub now).Hours 24)}
今天是 `.action{now | date "2006-01-02"}`。
* 距离 `2020-02-19` 已经过去 `.action{$before}` 天
* 距离 `2048-02-19` 还剩 `.action{$after}` 天
```
`$before` 和 `$after` 定义了两个变量,分别记录当前日期距离 2020 年和 2048 年的天数。
## 上架模板集市
请参考[社区集市仓库](https://b3log.org/siyuan/community.html)。
[^6]: # 挂件
## 概述
挂件是思源内核伺服的静态网页,它通过 API 存取数据,通过 `
相较于插件[^7]而言,挂件是一种内容块,遵循块的索引和渲染规则,挂件主要面向内容块扩展,不面向程序功能扩展。
## 使用方式
挂件通过挂件集市安装,安装后挂件将被放置到 `工作空间/widgets/` 文件夹下。在编辑器中使用斜杆菜单触发调用搜索,选择需要的挂件后该挂件就会以挂件块的形式插入到文档中。
## 上架挂件集市
请参考[社区集市仓库](https://b3log.org/siyuan/community.html)。
[^7]: # 插件
## 概述
插件主要用于扩展思源整体功能。
相较于挂件[^6]而言,插件主要面向程序功能扩展,不面向内容块扩展。
## 使用方式
插件通过插件集市安装,安装后插件将被放置到 `工作空间/plugins/` 文件夹下,你可以在
设置 -
集市 -
已下载 -
插件 中启用或禁用插件。
## 上架插件集市
请参考[社区集市仓库](https://b3log.org/siyuan/community.html)。
[^8]: # 对接第三方云端存储
请在
设置 -
云端 -
云端存储服务提供商 中进行选择和配置,目前已经支持:
- S3 兼容的对象存储服务,比如[七牛云](https://s.qiniu.com/VbQfeu)、[阿里云 OSS](https://www.aliyun.com/product/oss?userCode=yqovuas2)、[Cloudflare R2](https://www.cloudflare.com/)
- WebDAV 协议,比如 [InfiniCLOUD](https://infini-cloud.net/)
- 由于 WebDAV 协议本身的问题,数据量较大后会出现启动慢、同步慢、资源占用高等问题,所以建议选择使用 S3 对象存储
- 不支持坚果云 WebDAV,因为其[接口存在限制](https://help.jianguoyun.com/?p=2064)
- 本地文件系统
通过第三方云端存储服务同步数据同样是端到端加密[^9]的,第三方云端存储服务提供商无法获得我们的明文数据。
#注意#:为了保障数据同步的可用性,请确保:
- 多设备系统时间一致,误差请控制在一分钟以内
- 网络稳定(比如中国大陆地区请勿使用非中大陆地区的服务)
- 不要启用 CDN
[^9]: ## 端到端加密
同步数据和备份数据使用端到端加密传输,云端不保存任何明文数据。
- 密钥仅存储在本地,不会上传到云端
- 加密和解密过程完全在本地设备上进行
- 加密算法为业界公认安全的 AES GCM
[^10]: # 会员特权
会员特权分为两个部分:
- 年付订阅云端服务[^11]
- 一次性付费功能特性[^23]
这两部分需要分别购买,其中年付订阅包含了一次性付费功能特性,即在订阅期内可以使用所有付费功能特性。
[^11]: # 云端服务
会员云端服务包括:
- 存储空间[^12]
- 数据同步[^13]
- 数据备份[^16]
- 资源文件图床[^19]
- 收集箱[^20]
- 微信提醒[^21]
#注意#:云端服务相关限制[^22]。
会员云端服务需要付费订阅后才能使用:
- [中国大陆地区](https://ld246.com/subscribe/siyuan)
- [非中国大陆地区](https://liuyun.io/subscribe/siyuan)
[^12]: # 存储空间
## 概述
云端存储空间大小为 `8G`,分为以下部分:
- 同步数据:提供给同步功能使用,数据是加密的
- 备份数据:提供给备份功能使用,数据是加密的
- 资源文件:提供给复制到公众号、知乎和语雀等使用,HTTPS CDN
使用量可以在
设置 -
云端 中查看。
## 端到端加密
同步数据和备份数据使用端到端加密传输,云端不保存任何明文数据。
- 密钥仅存储在本地,不会上传到云端
- 加密和解密过程完全在本地设备上进行
- 加密算法为业界公认安全的 AES GCM
## 常见问题
### 开发者是否能够解密我的云端数据?
无法解密。如果遗失密钥,任何人(包括开发者)都无法帮你从云端恢复数据。
### 是否能够付费扩容云端存储空间大小?
可以通过链滴积分兑换扩容,具体规则请看[这里](https://ld246.com/article/1673936193811)。
[^13]: # 数据同步
## 概述
数据同步指的是在多个设备上保持 `工作空间/data/` 文件夹数据一致,包括资源文件、自定义图标、插件、代码片段、模板、挂件和文档数据。
## 使用方式
初始化数据仓库密钥[^14]后如果一切正常就已经配置好同步了。如果你不太熟悉同步配置,建议通过点击同步按钮打开同步配置向导,通过向导进行配置会更简便一些。
- 如果需要暂停同步,可关闭选项
设置-
云端-
启用云端同步- 忽略文件[^15]
#注意#:
- 启用同步前,请确保参与同步的所有设备系统时间一致
- 如果数据量较大,建议通过设置中的
导出数据包,然后将该数据包通过手动拷贝或者其他方式发送到新设备上,并在新设备上
导入 Data,最后再配置同步
## 同步模式
在
设置 -
云端 -
云端同步模式 中支持三种同步模式:
- 自动同步
- 启动和退出时会进行一次同步,使用中数据不再变动后 30 秒进行一次同步
- 由同步算法决定数据合并和覆盖,请参考下述工作原理介绍
- 手动同步
- 仅启动和退出时进行一次同步,使用中需要手动触发同步
- 由同步算法决定数据合并和覆盖,请参考下述工作原理介绍
- 完全手动同步:启动和退出时均不同步,完全手动控制同步时机和同步方向
## 自动/手动同步模式工作原理
思源通过对比云端数据快照和本地数据快照进行相应操作:
- 如果快照相同则忽略本次同步
- 如果快照不同,则将本地距离上次同步的变更上传到云端,将云端最新的变更合并到本地
- 如果两端的变更没有冲突则直接合并
- 如果存在文件冲突,则以本地为准覆盖云端,同时拉取到的云端冲突文件会归入到数据历史中
自动同步时间间隔算法描述如下:
- 数据变动后 30 秒如果不再发生变动则进行一次对比,如果继续发生变动则顺延 30 秒
- 没有数据变动则按 5 分钟、8 分钟、16 分钟、32 分钟……递增间隔
## 自动同步模式场景例举
从上述工作原理我们可以得知,思源仅支持在多设备上交替同步数据:设备 A 上同步完成以后设备 B 上再进行同步。无法支持多设备同时同步,这样会发生无法预期的数据覆盖。
### 正常场景
1. 在设备 A 上编辑后执行同步(通过自动或者手动触发同步),此时云端数据会被设备 A 数据覆盖,既云端和设备 A 保持数据一致
2. 在设备 B 上执行同步,此时设备 B 数据会被云端数据覆盖,即云端和设备 A、B 保持数据一致
3. 设备 B 上编辑后再次执行同步,此时云端数据会被设备 B 数据覆盖,既云端和设备 B 保持数据一致
4. 在设备 A 上执行同步,此时设备 A 数据会被云端数据覆盖,即云端和设备 A、B 保持数据一致
该场景下,使用同步的过程是在设备 A、B 上交替进行的,这样能够保证数据同步符合预期正常完成。
### 冲突场景
1. 在设备 A 上编辑 a 文件后同步
2. 在设备 B 上编辑 a 文件后同步
3. 此时云端 a 文件会被 B 设备上的 a 覆盖,同时在 B 设备上生成之前 A 设备 a 的历史
## #注意#
- 睡眠或关机等突然断网的情况下不会触发同步,请手动点击同步按钮进行同步
- 请勿同时使用第三方同步盘和思源同步,可能会导致数据损坏
- 符号链接和隐藏文件不会被同步
- 自动同步模式下,如需退出,请使用正常的退出应用(比如移动端 APP 不要使用滑动移除,桌面端不要使用结束进程强制关闭)方式以保证数据同步执行
- 数据同步前进行数据快照如果耗时超过 12 秒会提示清理数据仓库,如果需要改动默认耗时,可通过如下两种方式
- 环境变量 `SIYUAN_SYNC_INDEX_TIMING`,例如 `SIYUAN_SYNC_INDEX_TIMING=30000`,单位是毫秒
- 直接修改 工作空间/conf/conf.json 中的 `repo.syncIndexTiming`
最小值只能配置为 `12000`(12 秒),最大值不限制;启动时会优先读取环境变量覆盖 conf 文件中的值。
[^14]: ### 初始化密钥
第一次使用数据快照前需要在
设置-
关于中初始化
数据仓库密钥。
初始化密钥有三种方式:
-
导入密钥:将其他设备上的密钥字符串复制到此粘贴导入
-
:使用随机数生成密钥,该方式只需在一台设备上执行一次,其他设备使用
导入密钥-
通过密码生成密钥:使用自定义的密码短语生成密钥,该方式需要在所有设备上都使用相同的密码短语
总而言之,请务必保证所有设备都使用相同的密钥,否则数据快照将无法跨设备使用,比如无法通过云端同步数据快照。
[^15]: ### 忽略文件
如果需要在创建快照时忽略一些文件,请在文件系统上创建或编辑文本文件 `工作空间/data/.siyuan/syncignore`, 其中每一行使用 data 文件夹的相对路径进行配置,表示忽略文件或文件夹的路径,支持通配符。例如:
- `20210808180117-6v0mkxr/**/*`: 忽略 data/20210808180117-6v0mkxr 笔记本
- `assets/*.pdf`:忽略 data/assets/ 下的 PDF 文件
[^16]: # 数据备份
## 概述
数据备份指的是将数据快照[^17]上传到云端。
## 使用方式
1. 初始化数据仓库密钥[^14]后如果一切正常就已经配置好备份了
2. 打开
-
数据快照页签,选择需要备份的快照点击
标记快照3. 筛选下拉列表中选择
本地标记的快照,选择需要上传的快照点击
上传4. 上传完成以后,筛选下拉列表中选择
云端标记的快照可以看到刚刚备份到云端的快照
5. 云端备份的快照下载到本地后可以通过回滚数据快照[^18]恢复数据
另外:
- 忽略文件[^15]
- 云端最多支持保存 12 个数据快照
[^17]: ## 数据快照
### 初始化密钥
第一次使用数据快照前需要在
设置-
关于中初始化
数据仓库密钥。
初始化密钥有三种方式:
-
导入密钥:将其他设备上的密钥字符串复制到此粘贴导入
-
:使用随机数生成密钥,该方式只需在一台设备上执行一次,其他设备使用
导入密钥-
通过密码生成密钥:使用自定义的密码短语生成密钥,该方式需要在所有设备上都使用相同的密码短语
总而言之,请务必保证所有设备都使用相同的密钥,否则数据快照将无法跨设备使用,比如无法通过云端同步数据快照。
### 创建数据快照
1. 点击顶部工具栏
数据历史 按钮或者
Alt+
H 可打开数据历史界面
2. 切换到最后一个页签
3. 点击
创建快照,填写
备注并确认
浏览数据快照时只能通过快照创建时间和备注进行区别,所以备注信息应该尽量详细一些,以备后续能够准确识别不同的数据快照。
### 浏览数据快照
创建完数据快照后可以在左侧看到快照时间列表,点击不同快照以后可以浏览其备注。
### 回滚数据快照
在快照时间列表条目右侧都有一个回滚按钮,点击以后将弹出确认对话框,如果确认回滚的话将使用快照数据完全替换现有数据。
### 清理数据快照
-
设置 -
关于 -
数据仓库清理 将删除所有未引用的快照和相关数据对象。“引用的快照”指的是 repo/refs/ 下指向的快照:
- `latest` 指向最新一个快照
- `tags/*` 指向手动标记的快照
- 手动删除 `工作空间/repo/` 文件夹可以清空全部数据快照
### 忽略文件
如果需要在创建快照时忽略一些文件,请在文件系统上创建或编辑文本文件 `工作空间/data/.siyuan/syncignore`, 其中每一行使用 data 文件夹的相对路径进行配置,表示忽略文件或文件夹的路径,支持通配符。例如:
- `20210808180117-6v0mkxr/**/*`: 忽略 data/20210808180117-6v0mkxr 笔记本
- `assets/*.pdf`:忽略 data/assets/ 下的 PDF 文件
### #注意#
- 符号链接和隐藏文件不会被快照
[^18]: ### 回滚数据快照
在快照时间列表条目右侧都有一个回滚按钮,点击以后将弹出确认对话框,如果确认回滚的话将使用快照数据完全替换现有数据。
[^19]: # 资源文件图床
思源提供了云端图床服务,主要用于将文档带资源文件复制到微信公众号、知乎和语雀等平台,这些平台的编辑器在粘贴时会自动拉取资源文件到它们的平台上。
## 使用方式
1. 文档右上角
︙ 更多菜单中选择
上传资源文件到云端图床
2.
中选择
导出预览3. 点击
复制到公众号、
复制到知乎或
复制到语雀4. 到目标平台编辑器上粘贴
如果需要删除云端图床中的资源文件,请到 [链滴 - 设置 - 文件 - 笔记端](https://ld246.com/settings/file?type=3) 操作。删除后该文件占用的云端存储空间会立即释放,但是 CDN 缓存清理可能无法及时生效,这会导致该文件 URL 依然可以访问,直到 CDN 缓存 30 天以后自动过期。
## #注意#
- 请勿直接在其他平台使用云端图床提供的外链地址,这个地址不稳定,可能会因为换域名而影响可用性
- 请勿上传违法违规或敏感资源文件,上传的资源文件会通过第三方提供的服务进行审核(色情、暴恐、敏感人物等)。如果发现使用者上传违规资源文件,使用者账号会被永久封禁,并承担相应的法律责任
[^20]: # 收集箱
## 概述
我们可以通过云端收集箱对外部数据进行收集,然后在思源中通过收集箱面板从云端获取这些数据并发送到笔记本中进行进一步整理。
## 使用方式
目前提供以下两种方式进行数据接入。
### 微信输入
1. 在 [链滴 - 设置 - 账号](https://ld246.com/settings/account) 中绑定微信
2. 关注 `B3log开源` 公众号

3. 关注后点击右下角绑定账号
4. 对该公众号发送消息(可从收藏中选择待发送消息),仅支持文本、图片和超链接
5. 在思源中打开收集箱面板(Alt+6)
关注公众号并绑定账号后除了可以通过公众号输入,也可以通过添加 `思源小助手` 为联系人后输入,这样可以直接转发聊天记录。

支持的消息类型为文本、图片、语音、视频和文件,单个图片、语音、视频和文件的大小不超过 20MB。
#注意#:
- 仅限订阅会员使用,未订阅或者订阅过期后联系人关系会被删除
### API
- POST `https://ld246.com/apis/siyuan/inbox/addCloudShorthand`
- Body
```json
{
"title": "A simple text title",
"content": "Content with **Markdown**."
}
```
- 鉴权方式为 HTTP 请求标头 `Authorization`,值为 `token {Your API Token}`(注意大小写和空格),API Token 可以 [链滴 - 设置 - 账号](https://ld246.com/settings/account) 中找到
#注意#:
- 频率限制:每 24 小时最多插入 128 条
[^21]: # 微信提醒
## 概述
微信提醒功能用于将内容块发送到云端,到期时通过微信公众号模板消息推送到用户微信。
## 使用方式
1. 在 [链滴 - 设置 - 账号](https://ld246.com/settings/account) 中绑定微信
2. 关注 `B3log开源` 公众号

3. 关注后点击右下角绑定账号
4. 在思源中通过块标菜单设置提醒
## #注意#
- 提醒时间误差大概在 10 秒左右
- 内容块会以明文的形式发送到云端,且仅发送文本,不发送资源文件
- 请勿设置提醒违法违规或敏感内容,否则账号会被永久封禁,并承担相应的法律责任
[^22]: # 限制
- 最多支持创建 7 个云端同步目录
- 最多支持保存 12 个数据快照
- 云端存储空间初始化总大小为 `8G`
- 云端存储中的数据快照最长保留 30 天,即 30 天之前的未引用快照会被自动清理
- 每次数据同步后的最新快照不会被清理
- 手动标记备份上传到云端的快照不会被清理
- 30 天内的快照不会被清理
- 付费订阅到期以后,云端存储会被彻底删除
- 从到期前 15 天,每次打开软件都会弹出到期提醒,到期 2 天后停止提醒
- 到期前 1 天,会推送一次短信提醒到账号绑定的手机上
- 删除云端存储不影响本地数据
[^23]: # 功能特性
会员功能特性包括:
- 对接第三方云端存储[^8]
- 搜索资源文件内容[^24]
会员功能特需要付费后才能使用:
- [中国大陆地区](https://ld246.com/one-time-pay/siyuan)
- [非中国大陆地区](https://liuyun.io/one-time-pay/siyuan)
[^24]: # 搜索资源文件内容
在
搜索 界面右上角可以将搜索功能切换到
搜索资源文件内容,目前支持如下格式的资源文件内容搜索:
- 文本文件(.txt、.md、.json、.log、.sql、.html、.xml、.java、.h、.c、.cpp、.go、.rs、.swift、.kt、.py、.php、.js、.css、.ts、.sh、.bat、.cmd、.ini、.yaml、.rst、.adoc、.textile、.opml、.org、.wiki)
- .docx
- .pptx
- .xlsx
- .pdf
#注意#:
- 不支持大于 4MB 的文本文件
- 不支持大于 1024 页的 PDF
- 默认不支持大于 128MB 的 PDF,可通过环境变量 `SIYUAN_PDF_ASSET_CONTENT_INDEX_MAX_SIZE` 设置,值的单位是字节,比如:`SIYUAN_PDF_ASSET_CONTENT_INDEX_MAX_SIZE=256000000` 将上限调整为 256MB
- Android/iOS 端不支持 PDF 资源文件内容搜索