syncthing,跨平台远程自动同步工具

简介

Syncthing 是一个跨平台的同步工具,支持 Windows、MacOS、Linux、FreeBSD、Android 等等平台。

特点:易于使用,界面简单,支持版本管理

图片.png syncthing 首页主要分为三类:

  • 文件夹:同步的文件夹
  • 此设备:设备的信息
  • 远程设备:同步文件夹的远程设备

安装

Windows

下载地址:https://github.com/syncthing/syncthing/releases/tag/v1.29.2

解压,点击 syncthing.exe 即可运行

浏览器打开:http://127.0.0.1:8384/

Linux

使用包管理器安装

1
2
# Debian/Ubuntu
sudo apt install syncthing

如果觉得自带的包管理器版本低,可以添加 syncthing 的仓库

1
2
3
# Add the release PGP keys:
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
1
2
# Add the "stable" channel to your APT sources:
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
1
2
3
# Update and install syncthing:
sudo apt-get update
sudo apt-get install syncthing

启动

1
systemctl --user start syncthing

停止

1
systemctl --user stop syncthing

开机自动启动

1
systemctl --user enable syncthing

删除开机自动启动

1
systemctl --user disable syncthing

浏览器打开:http://127.0.0.1:8384/

如果是服务器,需要编辑修改监听地址

1
vim $HOME/.config/syncthing/config.xml
1
2
3
4
5
<address>127.0.0.1:8384</address>

修改为

<address>0.0.0.0:8384</address>

重启服务

Android

syncthing-fork

这是第三方开发的 app

下载方式:

安装根据提示即可

Docker

docker compose

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
services:
  syncthing:
    container_name: syncthing
    image: syncthing/syncthing
    hostname: my-syncthing
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./syncthing_data:/var/syncthing
      - $HOME:/root
    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
    healthcheck:
      test: curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1
      interval: 1m
      timeout: 10s
      retries: 3

远程设备

远程设备顾名思义,表示需要同步的设备

配对设备

首次使用需要配对设备,步骤:

  1. 添加远程设备:找到需要添加的设备 ID,添加即可,手机可直接扫码
  2. 在目标设备同意添加

设备地址

发现设备默认采用dynamic策略,会自动判断同步网络情况选择合适的网络传输

如果需要设置优先策略,比如局域网内设备传输,可以优先设置局域网地址。步骤:

  1. 点击 添加远程设备或 编辑 已经添加的设备
  2. 找到 高级,更改地址
  3. dynamic前添加设备的 IP 地址和端口,格式:tcp://ip:port,多个地址使用英文 ,隔开
  4. 示例:tcp://192.168.68.11:22000, dynamic

同步文件夹

表示同步的文件夹,实现跨设备自动后台同步

步骤:

  1. 回到主页,找到 文件夹分类,点击 添加文件夹
  2. 填写相关信息,参考后续介绍

常规

  • 文件夹标签:描述性标识,可随意定制,建议使用 文件夹/文件夹这种命名,这样做的好处一是识别性,二是在其他设备可自动作为文件夹目录,同步到 Android 设备尤为有用
  • 文件夹 ID:文件夹的唯一标识,不需要更改,也没必要更改
  • 文件夹路径:要想分享的文件夹的路径

共享

选择共享设备,以及密码设置,中转设备加密设置技巧:

  • 密码不为空:强制要求目标设备加密,可以用在中转设备上,这样中转设备上的文件将会加密,再从中转设备上添加的文件夹分享给第三个设备,第三个设备填入第一个设备设置的密码,就可以解密。
  • 密码为空:目标设备不加密

文件版本控制

syncthing 支持文件版本控制,在同步文件夹自动创建 .stversions文件夹,删除的文件会自动放入此文件夹

不启用文件版本控制

顾名思义

回收站版本控制

当 Syncthing 替换或删除文件时,文件将移动到 .stversions 目录。

简单文件版本控制

当 Syncthing 替换或删除文件时,文件将移动到 .stversions 目录中,文件名带有日期戳版本。

阶段文件版本控制

当 Syncthing 替换或删除文件时,文件将移动到 .stversions 目录中,文件名带有日期戳版本。 超过最长保留时间,或者不满足下列条件的历史版本,则会自动删除……

外部文件版本控制

外部命令处理版本控制。必须从共享文件夹中移除文件。如果应用程序的路径包含空格,应用半角引号括起来。

忽略模式

这个忽略模式适用于本机设备,只针对本次分享的文件夹的忽略,开启后会在同步文件夹新建 .stignore文件用于保存忽略语法

例如:

  • Windows 上想同步某个文件夹,但是某些文件夹不想同步,就可以设置
  • Android 上会产生一些 .开头的文件夹,同步到其他设备会污染文件夹,也可以忽略

具体情况请自行把握

语法:

1
2
3
4
5
6
(?d)  此前缀表示,如果文件阻止删除目录则文件可被删除
(?i)  此前缀表示,后面的模式在匹配时不区分大小写
!     给定条件的反转(即不排除)
*     单级通配符(仅匹配单层文件夹)
**    多级通配符(用以匹配多层文件夹)
//    注释,在行首使用

高级

  • 监视更改:使用来自文件系统的通知来检测更改的项目。 监视更改无需定期扫描即可发现大多数更改。
  • 文件夹类型:可以选择发送接收,只发送,只接受,加密接收
  • 完全重新扫描间隔(秒):默认 3600 秒,表示间隔 1 小时会重新扫描一次文件夹是否有更改

其他暂略……

系统服务

Windows

直接运行 syncthing 会有一个前台的窗口,关掉就会退出运行,解决方法是安装为系统服务,让系统开机自动启动

要想实现这个功能,需要借助第三方工具,NSSM

关于 NSSM 介绍和安装可查看这篇文章:nssm,创建 Windows 系统服务的工具

创建 syncthing 服务

1
nssm install syncthing "D:\remote\syncthing\syncthing.exe" -no-browser

修改 syncthing 服务,指定运行用户

1
nssm edit syncthing

找到 Log on,选择 This account,输入当前用户,密码。保存退出

启动服务

1
nssm start syncthing

停止服务

1
nssm stop syncthing

删除服务

1
nssm remove syncthing

软件数据备份和恢复

对 syncthing 软件本身的设置(包括同步文件夹和设备等等)备份和恢复

Windows

配置文件所在位置:

1
%USERPROFILE%\AppData\Local\Syncthing

备份该文件夹的内容即可,恢复放入此文件即可

Linux

配置文件所在位置:

1
$HOME/.config/syncthing

备份该文件夹的内容即可,恢复放入此文件即可

Android

syncthing-fork

  1. 点击左上角 三横杠打开设置
  2. 左下角点击设置
  3. 点击 导入与导出

具体的路径页面有所提示,目前是:

1
backups/syncthing/

恢复也需要在此文件夹存在文件

备份模式

如果想要达到备份效果,即是在某一端设备不会自动删除文件,可以在

操作-高级-文件夹,选中某一个共享的文件夹,找到Ignore Delete,选中。

这样就不会在同步时,如果某一方设备删除了文件,本地设备不会跟着删除,达到备份效果。

常见用途:备份照片,视频等。

重要提示

  • 软件升级前一定要查看发布日志!!,防止升级导致的兼容问题从而导致数据丢失

问题汇总

问题 1

Documents/school" (l9jth-kpuji): folder marker missing (this indicates potential data loss, search docs/forum to get information about how to proceed

出现这样的错误,需要在分享的文件下新建 .stfolder 文件夹,重新确认

页面浏览量Loading
网站总访客数:Loading
网站总访问量:Loading
使用 Hugo 构建
主题 StackJimmy 设计
-->