# SiYuan 更好的同步插件

Better Sync 是一个为 [SiYuan](https://github.com/siyuan-note/siyuan) 设计的插件，它实现了一种新的同步系统，允许更快的同步速度，并在不同 SiYuan 实例之间实现点对点风格的同步。

有关完整的更改列表，请参阅[更新日志](CHANGELOG_zh_CN.md)。

## 功能特点

- **点对点同步**：无需第三方服务器即可在两个 SiYuan 实例之间进行同步
- **启动时同步**：打开 SiYuan 时自动与远程同步整个工作区
- **修改后自动更新**：文件被修改后自动将其推送到远程
- **手动触发同步**：需要时通过自定义按钮手动触发同步
- **更快的同步速度**：相比 WebDav 同步更快，尤其是在同一网络中
- **客户端-服务器模式同步**：此插件也可以像常规服务器一样运行。如果你使用 Docker 镜像将 SiYuan 实例托管在公共网站上，则它也可以在家庭网络外部访问。
- **同步冲突跟踪**：插件在同步过程中出现错误时创建冲突文件，当文件在两台机器上都被修改时。
- **实验性实时同步**: 利用 websockets 实现跨设备近乎即时的更改同步。
- **同步前自动创建数据快照，避免数据丢失**: 在同步前创建数据快照，以防止数据丢失。
- **插件、主题和资产同步**: 不仅同步笔记，还同步插件、主题和资产。

## 基本设置

0. **了解同步模型**：
    - Better Sync 在两个 SiYuan 实例之间以点对点模式工作
    - **主机设备**：安装和配置插件的设备
    - **远程设备**：你希望与其同步的另一个 SiYuan 实例
    - 同步在这些对等设备之间是双向的（既可以推送也可以拉取）

1. **安装插件**：
   - 在主机设备上打开 SiYuan，导航到 `设置 > 应用市场 > 插件`
   - 搜索 "Better Sync" 并安装它

2. **启用网络服务**：
    - 在远程设备上打开 SiYuan，导航到 `设置 > 关于`
    - 启用 `网络服务` 选项

3. **配置同步目标**：
   - 点击插件旁边的齿轮图标进入主机设备上的插件设置
   - 将对端设备的 IP 地址和 API Token 复制到插件设置中
   - IP 地址应写成 `http://xxx.xxx.x.xxx:6806`

4. **自定义同步选项**：
    - 根据你的喜好，在插件菜单中自定义提供的同步选项

5. **其他细节**：
    - 建议在远程设备上也安装并启用该插件，以便在该设备上使用 SiYuan 时获得更可靠、即时的同步体验

> **注意事项**
> - 如果使用的 SiYuan 版本早于 `3.1.28`，在启用了 `网络服务` 后，必须设置访问码才能正确访问设备的 API。
> - 当与移动设备同步时，如果应用程序在后台运行，服务器可能无法访问，这会导致同步失败。在这种情况下，建议在移动设备上安装插件并直接从那里进行同步。

## 未来功能

以下功能可能会在 Better Sync 的未来版本中添加：

- [x] **同步冲突跟踪**：检测并管理不同设备之间的同步冲突
- [x] **基于历史记录的保护**：在同步之前将文件添加到历史记录中，以避免数据丢失
- [x] **同步锁定机制**：实现锁定机制，防止多个设备同时进行同步
- [ ] **选择性文件同步**：允许用户包含或排除特定文件或文件夹进行同步
- [ ] **单向同步选项**：增加手动选择仅推送或仅拉取的同步模式
- [ ] **同步状态日志记录**：详细记录所有同步操作，便于故障排除，并将日志输出到磁盘文件中
- [ ] **支持多对等设备同步**：允许从一个主机同步到多个不同的对等设备。

## 免责声明

**风险自负**：Better Sync 提供“按原样”使用，不附带任何保证。尽管我们努力确保其可靠运行，但在使用此插件前，您需自行负责备份您的 SiYuan 数据。

**数据丢失可能性**：同步涉及复杂操作，在某些条件下可能导致数据丢失或损坏。请始终为重要数据维护单独的备份。

**性能影响**：根据您的配置和数据量，同步可能会暂时影响系统性能。

通过使用 Better Sync，您承认这些风险，并同意不会因使用此插件而引发的任何问题追究插件开发者的责任。
