Syncthing - 文件同步

Syncthing 是一款持续文件同步程序

软件介绍

Syncthing 是一款持续文件同步程序。它可以在两台或多台计算机之间实时同步文件,并安全地防止他人窥探。您的数据只属于您自己,您有权选择数据的存储位置、是否与第三方共享以及如何在互联网上传输。

软件功能

  • 私密:数据绝不会存储在您的计算机之外的任何地方。不存在任何可能受到合法或非法攻击的中央服务器
  • 加密:所有通信均使用 TLS 进行保护。所采用的加密技术包含完美的前向保密性,可防止任何窃听者访问您的数据
  • 验证:每台设备都通过强大的加密证书进行身份验证。只有您明确允许的设备才能连接到您的其他设备
  • 便携:通过浏览器访问响应迅速且功能强大的界面来配置和监控 Syncthing。适用于 macOS、Windows、Linux、FreeBSD、Solaris、OpenBSD 等众多平台。您可以在台式电脑上运行它,并将其与服务器同步以进行备份
  • 简单:无需 IP 地址或高级配置:它可以通过局域网和互联网直接运行。每台设备都通过一个 ID 进行标识。将您的 ID 提供给好友,共享文件夹即可观看:如果您不想进行端口转发或不知道如何操作,UPnP 也可以
  • 开源:所有源代码均可 GitHub 上获取,所见即所得,绝无任何隐晦之处

软件支持

  • Linux
  • Windows
  • macOS
  • FreeBSD
  • OpenBSD
  • NetBSD
  • Dragonfly
  • Illumos
  • Solaris
  • Source Code
  • Android(第三方)

Docker 部署

支持 Docker 部署,不需要的话,跳过该部分~

  • 使用 repo 中的 Dockerfile,或 syncthing/syncthingDocker Hub 中拉取镜像。
  • 使用 /var/syncthing 卷在主机上提供同步文件。您可以添加更多文件夹并根据自己的喜好进行映射。
  • 请注意,Syncthing 默认以 UID 1000 和 GID 1000 运行。这些值可以通过环境变量进行更改PUID。PGID此外,Syncthing 实例的名称也可以通过 --hostname=syncthing 参数选择定义。
  • 不要以 root 身份运行的情况下授予 Syncthing 附加功能,请使用 PCAP与 相同语法的环境变量 setcap(8)
  • 例如,PCAP=cap_chown,cap_fowner+ep
  • 要设置不同的 umask 值,请使用UMASK环境变量。例如:UMASK=002

1. Docker 命令:

$ docker pull syncthing/syncthing
$ docker run -p 8384:8384 -p 22000:22000/tcp -p 22000:22000/udp -p 21027:21027/udp \
    -v /wherever/st-sync:/var/syncthing \
    --hostname=my-syncthing \
    syncthing/syncthing:latest

2. Docker compose:

---
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
    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

注意,Docker 的默认网络模式会阻止本地 IP 地址被发现,因为 Syncthing 只能看到子网内容器的内部 IP 172.17.0.0/16。如果没有手动配置本地设备地址,这将导致传输速率不佳。
因此,建议使用 主机网络模式

1. Docker 命令:

docker pull syncthing/syncthing
docker run --network=host \
   -v /wherever/st-sync:/var/syncthing \
   syncthing/syncthing:latest

2. Docker compose:

---
version: "3"
services:
  syncthing:
    image: syncthing/syncthing
    container_name: syncthing
    hostname: my-syncthing
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /wherever/st-sync:/var/syncthing
    network_mode: host
    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

注意,现在只有 syncthing 可以控制其监听的接口和端口。如果存在冲突,您可以编辑 syncthing 配置来更改默认值。

GUI 安全性:

默认情况下,Docker 镜像中的 Syncthing 会监听 0.0.0.0:8384 端口,以允许通过 Docker 代理进行 GUI 连接。这是由 STGUIADDRESSDockerfile 中的环境变量设置的,因为它与 Syncthing 默认使用的环境变量不同。这意味着您应该在 GUI 中设置身份验证,就像任何其他可从外部访问的 Syncthing 实例一样。如果您不需要 GUI,或者您使用主机网络,则可以取消设置该STGUIADDRESS变量,让 Syncthing 回退到监听 127.0.0.1:

docker pull syncthing/syncthing
docker run -e STGUIADDRESS= \
   v /wherever/st-sync:/var/syncthing \
   syncthing/syncthing:latest

取消设置环境变量后,Syncthing 将遵循配置文件/GUI 设置对话框中设置的内容。

构建项目

有经验开发者可自行构建项目,需要会 Golang

从源代码构建 Syncthing 非常简单。从发行版中下载源码 或 Git 拉取项目代码,只需运行 go run build.go,即可创建二进制文件 ./bin
所有代码均根据 MPLv2 许可证进行授权!

如果您要开发 Syncthing 或需要对其进行特殊打包,则可能只需要执行构建过程。对于所有其他用途,我们建议使用官方二进制版本。
如果您仍然倾向于从源代码构建 Syncthing 供自己使用,请注意,它内置了自动升级机制,会用下载的版本覆盖您构建的二进制文件。为了避免这种情况,您可以使用--no-upgrade构建标志(见下文),但您需要自行负责升级。

1. 分支和标签:
进行开发时,你应该以分支为基础main。这个分支通常用于下一个版本,并且拉取请求也应该基于它。
如果您希望构建和打包 Syncthing 的版本,则应该使用最新标签(vX.Y.Z),因为的内容main 可能不稳定且不适合一般使用。

2. 构建条件:

  • Go 的最新稳定版本。之前的稳定版本应该也能使用;旧版本可能无法使用。这主要遵循 Go 的 发布策略。
  • Git
  • 如果您要构建 Debian 软件包,则需要 FPM。请参阅 FPM 的 安装信息。
  • 要构建 Windows 可执行文件,建议安装 goversioninfo,以便将文件属性和图标添加到已编译的二进制文件中。
  • 构建 Android 二进制文件需要 Android NDK

因为 Syncthing 使用 Go 模块,所以您无需设置或关注“GOPATH”。但是,GOPATH 仍然是默认的,因此 目前~/go最好不要将 Syncthing 源代码放入其中。

3. 构建(Unix)

  • 满足构建条件
  • 打开一个终端
  • 运行以下命令
# 为您的 synthing 源选择一个位置
$ mkdir -p ~/dev
$ cd ~/dev

# 克隆项目代码
$ git clone https://github.com/syncthing/syncthing.git

# 进入项目
$ cd syncthing

# 应该在 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">~/dev/ synthing</mark> 里面
$ go run build.go

除非出现问题,您应该拥有一个syncthing已构建并准备好的二进制文件:~/dev/syncthing/bin

3. 构建(Windows)

# 为您的 synthing 选择一个位置
> md "%USERPROFILE%\dev"
> cd /d "%USERPROFILE%\dev"

# 克隆项目代码
> git clone https://github.com/syncthing/syncthing.git

# 构建项目
> cd syncthing
> go run build.go

除非出现问题,否则您将拥有一个syncthing.exe已构建并准备就绪的二进制文件%USERPROFILE%\dev\syncthing\bin

相关链接

友情提示

只分享 Win / Mac / Linux 版本,其他版本自行前往 Github Releases 或 官网网站 下载!

百度网盘
1
官方网站
2
Github
3
下载权限
查看
  • 免费下载
    评论并刷新后下载
    登录后下载
  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余
实用软件

ImageToolbox - 全能型图片处理工具

2025-5-12 0:03:20

实用软件

DeepSeek Chat - 完整聊天记录导出插件

2025-6-18 19:16:05

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索