[[Obsidian Sync 簡介|Obsidian Sync]] 提供無介面客戶端,讓您無需使用桌面應用程式即可同步保管庫。適用於 CI 管線、代理程式及自動化工作流程。可同步最新變動或持續保持檔案為最新狀態。
安裝 [[無介面 Sync|Obsidian Headless]]**(開放測試版)**,即可從命令列與 [[Obsidian Sync 簡介|Obsidian Sync]] 互動,無需 Obsidian 桌面應用程式。無介面 Sync 使用與桌面應用程式相同的[[安全性與隱私|加密與隱私保護]],包括端對端加密。
## 快速開始
> [!error] 開始前請先備份您的資料
> 1. 務必在開始前備份資料,以防發生任何意外狀況。
> 2. 請勿在同一裝置上*同時*使用桌面應用程式的同步功能與無介面 Sync,以免造成資料衝突。每台裝置只使用一種同步方式。
安裝 [[無介面 Sync|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` | 伺服器[[同步區域|區域]](若省略則自動選擇) |
### `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`