# Docker宝库：Syncthing跨设备同步神器

![Docker宝库：跨设备同步神器Syncthing.jpg](/blog/电脑折腾/附件/玩NAS/Docker宝库：跨设备同步神器Syncthing.jpg)
## 简介

Syncthing 是一款开源且免费的跨平台文件同步工具，它可以在多个设备之间进行实时或异步的文件同步，支持版本管理、单向或双向同步等。

它基于点对点（P2P）技术实现设备间的文件同步。这意味着它去中心化，不需要通过中心服务器来同步文件，从而避免了中心化服务器可能带来的限制和隐私问题（可以跨网络，比方说单位电脑和家里电脑直接同步）。Syncthing 确保数据只存储在用户信任的设备上，并通过TLS加密进行设备间的通信，同时采用完全正向保密技术来增强数据安全。

## 部署流程（Docker）

### 1. 下载安装包

如果是windows等平台安装，可以在官网[https://syncthing.net/](https://syncthing.net/https:/)直接下载对应的安装包。如果是Docker安装，则可以使用linuxserver/syncthing镜像进行安装。

### 2. Docker部署

使用以下Docker命令来启动部署容器。这个命令会创建一个名为syncthing的容器，并将要共享的根目录挂载到容器内部，并在容器停止时自动重启。

```bash
  docker run -d \
  --name=syncthing \
  --hostname=syncthing `#optional` \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -p 8384:8384 \
  -p 22000:22000/tcp \
  -p 22000:22000/udp \
  -p 21027:21027/udp \
  -v /opt/syncthing/config:/config \
  -v /path/to/data1:/data1 \
  -v /path/to/data2:/data2 \
  --restart unless-stopped \
  lscr.io/linuxserver/syncthing:latest
```

代码解释：

* `-d`：后台运行容器。
* `--name="mt-photos"`：给容器命名为syncthing（可自行修改）。
* `--hostname=syncthing`：设备名称，用于区别各个同步设备的名称（可自行修改。部署完毕后在程序的管理界面也可以修改）。
* `-v /opt/syncthing/config:/config`：将本地的/opt/syncthing/config目录挂载到容器的/config目录。
* `-v /path/to/data1:/data1`：将本地的/path/to/data1目录挂载到容器的/data1目录，用于指定一个同步文件夹。本地目录和容器内均可以自定义，但是需要注意在程序管理页面设置要同步的目录时，路径使用的是容器内的目录路径。
* `-v /path/to/data2:/data2`：（本行可选）将本地的/path/to/data2目录挂载到容器的/data2目录，用于指定另一个同步文件夹。本地目录和容器内均可以自定义容器内的目录名可以自定，如果想增加第三个同步目录，可以安照这个格式再加一行。
* `-p 8384:8384`：宿主机端口:容器端口。将容器的8384端口映射到宿主机的8384端口，其中宿主及的端口可以自行修改为空闲端口。
* `-e TZ="Asia/Shanghai"`：设置容器的时区为上海时间。
* `--restart="unless-stopped"`：除非手动停止，否则容器在退出时会自动重启。

## 开始使用

启动容器后，您可以通过浏览器访问http://localhost:8384来查看和使用。进入管理页面后：

### 界面介绍

* 左侧是本地文件夹列表，会有一个默认的文件夹DefaultFolder，可以选择“添加文件夹”来指定本机需要同步的文件夹。
* 右侧上方是“当前设备”的基本信息和状态，里边包含了“识别”（也就是设备ID），各个设备之间可以通过这个设备ID来互相识别、联络。
* 右侧下方是远程设备列表。可以查看已连接的远程设备的相关信息和同步状态。
* 右上角是设置。

### 基础设置

* 右上角操作-设置-常规，可以修改设备名。
* 右上角操作-设置-图形用户界面，可以设置登录用户名和密码，修改主题等。
* 右上角操作-设置-常规，可以修改设备名。

### 开始同步

假设你已经在另外一个设备上（windows、Mac、Linux、手机都可以）部署/安装并配置好了Syncthing。

1. **添加设备**：在主界面右下角点“添加远程设备”，输入对方设备的ID，保存即可。之后在对方设备的管理界面里也按照前边的步骤，添加本机ID为远程设备。等一会即可看到两个设备已连接了。
2. **添加要同步的文件夹**：在主界面左侧点击“添加文件夹”，填写“文件夹标签”和“文件夹路径”。文件夹标签是文件夹的标识名称，文件夹路径要使用宿主机内的路径。例如：在docker部署的时候用的是`-v /path/to/data1:/data1` ，如果要选择data1文件夹下的aaa文件夹，则需要填写`/data1/aaa`而不是`/path/to/data1/aaa`。
3. **指定同步设备**：主界面点击刚才创建的文件夹，再点击“选项”，切换到“共享”标签，勾选要接受同步的设备。此外还有“版本控制”、“忽略模式”和“高级”三个标签可供选择。其中“高级”中，“文件夹类型”可以选择本机是“发送与接收”、“仅发送”、“仅接收”等模式。
4. **对方设备接收**：在对方设备上登录管理界面后，会弹出接收同步的提示，按要求填写好要同步的文件夹的保存路径即可，同时，在“高级”中，“文件夹类型”：“发送与接收”、“仅发送”、“仅接收”等模式可以按需选择。

