跳至主要內容

Syncthing文件同步

Milton原创大约 4 分钟HomeLabNASself-hosted数据同步

Syncthing 是一个 P2P 分布式的文件同步软件,可以安装这个软件的设备之间相互同步文件,不需要中心服务器,而且基本能自动识别局域网,跑满局域网的网速。

Syncthing 有一个独特的发现机制,可以自动搜索局域网内和外网上已经建立连接的设备。不过这个发现方式是通过他们的服务器执行的,搜索时会等待一点时间,这个主要在移动端感知比较明显,因为软件不能在后台一直运行,每次打开都要重新发现一次。 如果对服务发现有较大需求,或者服务发现出现连接慢、时常断开、速度不稳定等问题,可以使用官方的镜像部署一个服务发现服务器,提高同步效率,也保障个人隐私。

安装

Docker

---
version: "3"
services:
  syncthing:
    image: syncthing/syncthing
    container_name: syncthing
    hostname: my-syncthing
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /wherever/st-sync:/var/syncthing  ## 存储文件夹
    ports:
      - 8384:8384 ## Web UI
      - 22000:22000/tcp ## TCP file transfers
      - 22000:22000/udp ## QUIC file transfers
      - 21027:21027/udp ## Receive local discovery broadcasts
    restart: unless-stopped

Mac & Windows

在这两端上均有官方软件提供安装,开启后就能在系统后台保持一个服务实时更新文件了,管理方式也是网页,默认地址为 127.0.0.1:8384

iOS

iOS 以前没有 Syncthing 的客户端,所以很多人放弃使用它。不过我发现在前几年就有 Mobius Sync 这个第三方 app 可以支持 Syncthing,而且官方页面也有这个 app 的图标。

这个 app 具有内购项目,免费版文件容量上限只有30MB,而且不能跨 app 同步文件,要想完整使用需要支付38元。

配置

安装完软件后,就是配置同步设备和同步文件夹了。 首次进入图形页面会先让我们设置账号密码,加强文件的安全性。

设置同步设备

添加设备只需要将设备的 id 填入到“添加远程设备”中即可,本机的设备 id 在右上角的”操作“中可以看到。填写完就会在另一端设备上看到有设备请求添加,同意即可。

在添加设备后,如果添加的是类似 NAS 这样的文件存储中心,可以以它为中介,自动添加和 NAS 建立连接的远程设备。这个自动添加不是立刻生效,需要等一点时间它就会自动出现在远程设备列表里了。

设置同步文件夹

建立同步文件夹也十分简单,在本机可以先创建好一个同步文件夹,然后在已经建立连接的远程设备中勾选要同步的设备就可以了。 被同步的设备会接收到通知,选择接受并设置好本地文件夹的位置,就完成了同步文件夹的建立。

在设置时还可以选择是否要版本控制。

对于一些设备,可能最多的用途是查看文件,而不是操作,就可以设置文件夹为仅接收模式。

删除同步文件夹不会删除本地文件,而是将两台设备的文件夹同步取消了。

设置忽略文件

在多端同步时往往会遇到一些预期外的文件被同步上来,比如 Mac 系统的 .DS_Store 文件。对于一些不需要同步的文件,可以设置忽略模式来避免同步它们。

以我之前建立 Obsidian 同步文件夹为例,有些笔记库的配置文件我不想同步上来,因为我发现不同终端的配置文件经常起冲突,这时候就需要设置忽略模式来让 Syncthing 只同步笔记文件。

.obsidian/*
.stignore
//.obsidian
.stversions
.DS_Store

由此可以看出,Syncthing 是会将文件夹下所有文件都同步的服务,一些隐藏文件夹很容易就被带上来一起同步了,这是在使用中要特别注意的。

参考

  1. Syncthing – 数据同步利器---自己的网盘,详细安装配置指南,内网使用,发现服务器配置,更新dockeropen in new window
  2. Syncthingopen in new window