Contents

Docker宝库:跨设备同步神器Syncthing

/blog/电脑折腾/附件/玩NAS/Docker宝库:跨设备同步神器Syncthing.jpg

简介

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

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

部署流程(Docker)

1. 下载安装包

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

2. Docker部署

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

  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. 对方设备接收:在对方设备上登录管理界面后,会弹出接收同步的提示,按要求填写好要同步的文件夹的保存路径即可,同时,在“高级”中,“文件夹类型”:“发送与接收”、“仅发送”、“仅接收”等模式可以按需选择。