[[Obsidian 官方同步简介|Obsidian Sync]] 提供了一个无头客户端,可以在不使用桌面应用的情况下同步仓库。适用于 CI 流水线、代理程序和自动化工作流。同步最新更改或持续保持文件为最新状态。
安装 [[Obsidian Headless]]**(公开测试版)**,以便在不使用 Obsidian 桌面应用的情况下通过命令行与 [[Obsidian 官方同步简介|Obsidian Sync]] 进行交互。无头同步使用与桌面应用相同的[[同步安全和隐私|加密和隐私保护机制]],包括端到端加密。
## 快速开始
> [!error] 开始之前请备份你的数据
> 1. 请务必在开始之前备份数据,以防出现意外情况。
> 2. 请勿在同一设备上同时使用桌面应用同步和无头同步,否则可能导致数据冲突。每台设备只应使用一种同步方式。
安装 [[Obsidian Headless|Obsidian Headless]]**(公开测试版)**:
```shell
npm install -g obsidian-headless
```
你必须拥有一个有效的 [[订阅计划与容量限制|Obsidian Sync 订阅]]。
```shell
# 登录
ob login
# 列出你的远程仓库
ob sync-list-remote
# 设置仓库进行同步
cd ~/vaults/my-vault
ob sync-setup --vault "My Vault"
# 执行一次性同步
ob sync
# 执行持续同步(监视更改)
ob sync --continuous
```
## 命令
### `ob sync-list-remote`
列出你的账户可用的所有远程仓库,包括分享的仓库。
### `ob sync-list-local`
列出本地已配置的仓库及其路径。
### `ob sync-create-remote`
创建一个新的远程仓库。
```
ob sync-create-remote --name "Vault Name" [--encryption <standard|e2ee>] [--password <password>] [--region <region>]
```
| 选项 | 描述 |
| --- | --- |
| `--name` | 远程仓库名称(必填) |
| `--encryption` | `standard` 为托管加密,`e2ee` 为端到端加密 |
| `--password` | 端到端加密密码(省略时会提示输入) |
| `--region` | 服务器[[Sync regions\|区域]](省略时自动选择) |
### `ob sync-setup`
设置本地仓库与远程仓库之间的同步。
```
ob sync-setup --vault <id-or-name> [--path <local-path>] [--password <password>] [--device-name <name>] [--config-dir <name>]
```
| 选项 | 描述 |
| --- | --- |
| `--vault` | 远程仓库 ID 或名称(必填) |
| `--path` | 本地目录(默认:当前目录) |
| `--password` | 端到端加密密码(省略时会提示输入) |
| `--device-name` | 在[[版本历史|同步版本历史]]中显示的设备名称 |
| `--config-dir` | [[设置文件夹|设置文件夹]]名称(默认:`.obsidian`) |
### `ob sync`
为已配置的仓库运行同步。
```
ob sync [--path <local-path>] [--continuous]
```
| 选项 | 描述 |
| --- | --- |
| `--path` | 本地仓库路径(默认:当前目录) |
| `--continuous` | 持续运行,监视更改 |
### `ob sync-config`
查看或更改仓库的[[同步文件和设置|同步设置]]。不带选项运行时将显示当前配置。
```
ob sync-config [--path <local-path>] [options]
```
| 选项 | 描述 |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--path` | 本地仓库路径(默认:当前目录) |
| `--mode` | 同步模式:`bidirectional`(双向,默认)、`pull-only`(仅下载,忽略本地更改)或 `mirror-remote`(仅下载,还原本地更改) |
| `--conflict-strategy` | `merge`(合并)或 `conflict`(冲突) |
| `--file-types` | 要同步的附件类型:`image`、`audio`、`video`、`pdf`、`unsupported`(逗号分隔,留空则清除) |
| `--configs` | 要同步的设置类别:`app`、`appearance`、`appearance-data`、`hotkey`、`core-plugin`、`core-plugin-data`、`community-plugin`、`community-plugin-data`(逗号分隔,留空则禁用设置同步) |
| `--excluded-folders` | 要排除的文件夹(逗号分隔,留空则清除) |
| `--device-name` | 用于在同步版本历史中标识此客户端的设备名称 |
| `--config-dir` | 设置文件夹名称(默认:`.obsidian`) |
### `ob sync-status`
显示仓库的同步状态和配置。
```
ob sync-status [--path <local-path>]
```
### `ob sync-unlink`
断开仓库的同步连接并移除已存储的凭据。
```
ob sync-unlink [--path <local-path>]
```
## 原生模块
Obsidian Headless 包含一个预编译的原生扩展,用于在 Windows 和 macOS 上设置文件创建时间(birthtime)。这可以在从服务器下载文件时保留原始的创建时间戳。
该扩展以 N-API 版本 3 为目标,因此编译后的二进制文件具有 ABI 稳定性,可在不同 Node.js 版本间使用而无需重新编译。
在 Linux 上,不支持 birthtime——该扩展不会包含在内,同步功能可以正常运行,不受影响。
预编译二进制文件包含以下平台:
- `win32-x64`
- `win32-arm64`
- `win32-ia32`
- `darwin-x64`
- `darwin-arm64`