- Syncthing 允许您在多个设备之间同步文件夹,而无需使用云服务,从而让您始终掌控自己的数据。
- 设置过程包括保护 GUI、添加远程设备以及定义具有适当同步模式的文件夹。
- 文件版本控制系统是防止数据丢失的关键,但必须对其进行适当调整,以避免磁盘空间被占满。
- Syncthing 是一款很棒的同步工具,但它应该始终与外部备份配合使用。
有一个非常好的解决方案 无需依赖云服务即可在多个设备间同步文件夹您的姓名: 同步它几乎可以在任何现代操作系统上运行,让您掌控自己的数据,而且,如果配置得当,它的自动化程度非常高,您甚至会忘记它的存在。
接下来你会看到 如何逐步安装、配置和充分利用 Syncthing 在不同的环境(GNU/Linux、Windows、Android 和 ZimaOS/Zimaboard)中,如何共享目录,可以使用哪些高级选项,以及非常重要的,如何使用文件版本控制系统来避免因粗心大意而导致磁盘空间不足或数据丢失。
Syncthing是什么?它的内部工作原理是什么?
Syncthing 是一个 开源文件同步工具 它允许您在多个设备(台式电脑、笔记本电脑、服务器、安卓手机等)上保持一个或多个文件夹的最新状态。它不使用像 Dropbox 那样的中央云服务器,而是基于 BYO(自带设备)云模式:您提供用于存储数据的机器。
该项目采用以下许可协议: Mozilla 公共许可证 2.0 它是用 Go 语言开发的。它使用自己的块交换协议,该协议允许它只发送文件中更改的部分,从而减少流量并加快修改大型文件时的同步速度。
每个设备运行 Syncthing守护进程 该守护进程监听传入的连接并与集群中的其他节点通信。它可以通过 Web 界面(可通过浏览器访问的图形用户界面)或桌面前端进行控制,通常在 GNU/Linux 系统上使用 GTK,桌面前端会在系统托盘中添加一个图标,使用户能够一目了然地查看同步状态。
所有在设备之间传输的数据都会 使用端到端TLS加密每台机器都由一个唯一的设备 ID 标识:一个长长的字母数字字符串,相当于机器的指纹。两个节点要交换数据,必须相互授权,这为防止未经授权的连接增加了一层额外的安全保障。
Syncthing 与两者都兼容。 IPv4 与 IPv6 一样 而且,在启用了 NAT 的网络中,即使两个节点位于家用路由器之后,也可以使用中继和全局发现功能来帮助它们相互发现。在简单的局域网中,本地发现通常就足够了:设备之间可以相互发现并自动提出加入请求。

Syncthing 的目标和设计理念
Syncthing 项目是围绕一系列……构建的。 相当清晰的原则 这些特点在其日常运行中显而易见。它不仅仅是“另一个文件同步器”,而是力求实现几个特定目标。
一方面,它的目的是留住你 避免数据丢失它旨在防止破坏性更改,并提供版本控制等选项来恢复已删除或被覆盖的文件。但是,要使其正常工作,必须仔细配置版本控制,我们稍后会讨论这一点。
它在设计时也充分考虑了安全性。Syncthing 应该是 能够抵御外部攻击者这样一来,未经授权的任何人均无法监听或篡改您的文件。因此,必须使用TLS加密,需要对设备进行身份验证,并且禁止将您的数据存储在第三方手中的中央服务器上。
另一个目标是 易用性其理念是,即使不具备深厚网络知识的人也能搭建一个功能相当强大的同步系统。这得益于清晰的网页界面、局域网设备自动检测以及合理的默认设置,从而最大限度地减少了不常见的配置。
最后,该项目的目标是 尽可能普遍它几乎可以在任何配置适中的现代计算机上运行。它提供适用于 GNU/Linux、Windows、macOS、BSD、Solaris、Docker 容器的二进制文件,移动端还提供官方 Android 应用。所有这些都无需假设用户始终拥有最新的技术或高端的互联网连接。
在 GNU/Linux 上安装 Syncthing
在 GNU/Linux 系统中,根据发行版的不同,安装 Syncthing 的方法有多种。大多数现代发行版都已包含 Syncthing。 官方或第三方软件包 您可以在他们的存储库中找到这些文件,如果您愿意,也可以从官方网站下载预编译的二进制文件。
在基于 Debian 的发行版(Debian、Ubuntu、Linux Mint、MX Linux 等)中,通常的做法是 添加官方 Syncthing 存储库导入 PGP 密钥,更新并安装。之后,您可以启用 systemd 服务,使其随系统自动启动,并使用通常安装在 [此处应填写安装路径] 的驱动器。 /lib/systemd/system/[email protected]将“username”替换为您的用户名。
在 Fedora 系统中,这个过程被简化了,因为 Syncthing 通常已经存在于软件仓库中。通常情况下,使用发行版的软件包管理器执行一个安装命令就足够了,如果你想让它在启动时运行,你可以像前面的情况一样,使用 systemd 激活相应的服务。
在 Arch Linux 及其衍生发行版(例如 Manjaro)中,官方软件包位于发行版的软件仓库中。此外,它通常也会被提供。 syncthing-gtk 作为图形前端但是,并非所有发行版都包含此功能。如果未包含,您始终可以通过 Web 界面轻松管理它。
安装完必要的软件包后,通常会在发行版菜单中找到几个条目:一个用于 启动 Syncthing 守护进程一条命令用于打开已安装的 GTK 界面,另一条命令则直接在浏览器中打开 Web 图形用户界面。在许多桌面环境中,启动 GTK 图形用户界面会触发后台守护进程(如果它尚未运行)。

Web界面和远程访问GUI
管理 Syncthing 最常用的方法是通过其自身的管理界面。 可通过浏览器访问的网页界面默认情况下,它监听于 127.0.0.1:8384这意味着它只能从运行该守护进程的计算机上打开。
要登录,只需打开您常用的浏览器并访问本地地址,例如: http://127.0.0.1:8384/首次加载时,强烈建议为 GUI 配置用户名和密码,这样,即使以后将其暴露在网络上,也不会任何人都能访问它。
界面语言通常会自动调整以适应 系统区域设置因此,除非您的环境配置特殊,否则您应该不会遇到英文文本显示问题。在主屏幕上,您可以看到本地设备的状态、已同步的文件夹以及远程设备列表。
如果您想从网络上的另一台计算机管理 Syncthing,您可以更改 GUI 的监听地址,例如将其设置为: 0.0.0.0:8384 要允许来自局域网内任何 IP 地址的连接,请转到“操作”→“设置”→“图形用户界面”选项卡。请注意,未经身份验证切勿打开此设置,因为网络上的任何人都有可能修改这些设置。
在 SSH 管理的服务器环境中,一种无需暴露接口即可访问接口的简洁方法是: 创建本地端口 SSH 隧道您将服务器的 8384 端口重定向到您的计算机并输入 http://127.0.0.1:8384 就像在本地运行一样。这样您就无需修改 Syncthing 设置或打开额外的端口。
在 Windows、macOS 和其他系统上安装
在 Windows 或 macOS 等系统中,最快的方法是下载一个 该软件包已从 Syncthing 官方网站编译完成您会找到适用于不同系统(Windows、Linux、macOS、BSD、Solaris)的版本,以及可直接使用的 Docker 容器。
在Windows系统中,下载安装程序或压缩文件后,您需要解压或运行它,然后按照典型的安装步骤进行操作。首次启动时, Syncthing 会自动生成加密密钥 用户配置文件中通常有一个初始配置文件,路径如下: C:\Users\tu_usuario\AppData\Roaming\Syncthing.
默认情况下,程序将创建一个名为“共享文件夹”的文件夹 同步到您的用户目录通常是类似这样的 C:\Users\tu_usuario\Sync这将是您使用的第一个同步文件夹,不过在设置自己的目录时,您可以将其删除或替换为其他文件夹。
在 macOS 或 BSD 系统上,操作过程类似:下载相应的二进制文件,安装后打开 Web 图形界面,即可看到欢迎界面。之后,您可以像在 GNU/Linux 或 Windows 系统上一样,添加设备、配置文件夹和调整常规设置。
如果您使用 Docker,则可以部署 Syncthing 作为容器这包括映射端口 8384 和数据存储卷。此外,正确定义容器将使用的 UID/GID 也至关重要,以确保正确的文件权限,尤其是在与主机共享卷时。
第一步:保护图形用户界面并识别设备
首次打开网页界面时,最好稍作停留,花一分钟时间…… 保护图形用户界面在“操作”→“设置”菜单的“图形用户界面”选项卡下,您可以设置用户名和密码。即使您只打算在本地使用,这也是一项基本的安全措施。
每个 Syncthing 安装包都附带一个 唯一设备 ID 它是自动生成的。要查看它,请在网页界面中转到“操作”→“显示 ID”。此时会显示一长串字母数字字符串,以及一个二维码。如果您想通过安卓手机添加设备而无需手动输入字符串,这个二维码非常方便。
建议您事先准备好所有计划连接的设备的 ID,尤其是在网络结构复杂或您不信任自动发现功能的情况下。这样,您可以手动添加设备,而无需依赖自动检测。
如果您在 GNU/Linux 中使用 GTK 图形前端,即使底层界面是相同的嵌入式 Web GUI,也可以从程序菜单中完成许多这些步骤。
知道团队 ID 后,就可以开始了。 从您的设备集群添加远程节点并配置它们之间的共享文件夹。
添加并批准远程设备
在 Syncthing 中,一组彼此共享文件夹的设备被称为 簇每个设备都需要先了解并批准其他设备才能交换数据,这有助于控制谁可以访问您的目录。
要从团队的 Web 界面添加新设备,请转到页面底部并单击“添加远程设备”。在那里,您可以…… 手动粘贴设备 ID 从另一台计算机,或者选择本地网络上自动检测到的计算机。
当 Syncthing 检测到局域网上的设备时,通常会显示部分设备 ID 和名称,因此您只需要…… 将显示的字符与实际 ID 进行比较 找到您要添加的设备。如果匹配,选中它即可,省去了复制粘贴长代码的麻烦。
在该窗口的“常规”选项卡中,您可以为设备设置一个描述性名称(例如,“笔记本电脑”、“NAS 服务器”或“Android 手机”),并调整连接参数,例如地址(通常“动态”效果很好,可以让 Syncthing 自行找到其他节点)。
保存后,另一台设备上将显示一个。 请求批准连接的通知双方都接受请求之前,设备不会被视为永久配对。一旦双方都接受了对方,您将在对方设备的“远程设备”部分看到每台设备。
创建和共享同步目录
一旦两个或多个设备连接在一起,就该…… 选择要同步的文件夹Syncthing 以文件夹为单位进行同步,您可以根据需要与不同的设备子集共享不同的目录。
为了便于组织,许多人会在他们的主目录中创建一个基本目录,例如: ~/syncthing以及所有你要共享的子文件夹。这样可以保持一定的秩序,避免最终出现混乱。 数十条线路散布在整个系统中。从中长期来看,这会成为一个棘手的问题。
共享文件夹在所有计算机上的名称或路径不必相同。您可以共享 从计算机访问 ~/syncthing/dir1 在另一个地方,它被保存为 ~/备份/其他事项就 Syncthing 而言,这两个目录是链接的,不过您必须记住您给它们命名的名称,以免将文件放在错误的位置。
要向设备添加新文件夹,请在文件夹列表底部单击“添加文件夹”。在“常规”选项卡上,您可以定义…… 内部文件夹名称 (可能与文件系统中的文件夹名称匹配)以及数据将在文件系统中存储的实际路径。
在“共享”选项卡中,您选择 您想与哪些远程设备共享该文件夹?例如,如果您之前添加了一台名为“Devuan”的笔记本电脑,则选中它并保存。另一台计算机将收到接受该文件夹的邀请,此时它需要指定要将文件夹保存到自身文件系统中的哪个位置。
文件夹同步模式和高级选项
在设置共享文件夹时,除了路径和设备之外,您还可以调整几个重要细节,包括: 同步类型Syncthing 提供三种基本模式:发送和接收、仅发送和仅接收。
默认模式为“发送和接收”,这意味着 双向同步在任何一台设备上进行的更改(例如创建、修改或删除文件)都会同步到其他设备。这非常适合协作工作文件夹,或者当您希望台式机和笔记本电脑始终保持一致时。
如果您选择“仅发送”,则该设备将充当 仅发送更改的源其他设备可以接收新文件或修改,但无法将更改发送回设备。例如,这对于手机将照片上传到电脑非常有用,可以避免电脑上的照片被意外删除后,手机上的照片也会受到影响。
“仅接收”模式的作用恰恰相反:该设备 仅接收来自其他方的更新 而且它从不向集群发送任何更改。这可以用于充当备份接收器的机器,在这种机器上发生的任何更改都不会传播到源机器。
在文件夹设置的“高级”选项卡中,您会找到其他微调选项: 扫描间隔 (Syncthing 检查文件夹更改的频率)、磁盘空间限制、文件验证规则以及在受支持的系统上同步权限或所有者等元数据的参数。
从那里,您还可以探讨诸如验证文件时的优先级顺序之类的方面,或者将文件夹与版本控制机制结合起来(我们将在后面更详细地讨论),以便更好地控制文件删除或覆盖时发生的情况。
忽略文件、与更多设备共享以及基本管理
每个 Syncthing 文件夹都可以有自己的文件 忽略的模式在文件夹设置的“忽略模式”选项卡中,您可以使用通配符和类似于以下示例中的表达式,定义哪些文件或路径不需要同步: .gitignore.
这对于排除某些因素非常有用。 临时文件、缓存、编译文件 或者任何没有必要在计算机之间复制的数据。这可以减少本地和远程设备的流量、CPU 使用率和磁盘空间。
如果您决定将已在两台设备之间共享的文件夹添加到另一台设备上,则说明该文件夹应该在另一台设备上可用。 第三支队伍随后加入。只需编辑原始设备上的文件夹,转到“共享”选项卡,然后选择新设备即可。Syncthing 随后会将所有必要内容发送到新设备并保持其最新状态。
在文件夹的主菜单中,您可以使用“移除”按钮暂时暂停、恢复或删除同步。从一台设备移除文件夹不会自动从其他设备中删除,但会停止从该特定设备进行同步。
最好时不时地在网页界面中检查每个文件夹的状态:在那里您可以看到 同步进度,传输的数据量计算出的哈希值,以及(如果出现问题)错误消息,指示出了什么问题,例如权限不足或路径已不存在。
Syncthing 中的文件版本控制
Syncthing 的文件版本控制系统是一项关键功能, 防止意外删除和覆盖但是,如果配置不当,它会变成一个占用大量磁盘空间的黑洞。了解它的工作原理可以避免不必要的麻烦。
默认情况下,当同步文件夹中的文件被修改或删除时,Syncthing 只会更新该文件。 在其他设备上复制此更改。这意味着,如果您不小心在一台计算机上删除了重要文件,同步完成后,该文件将从其他计算机上消失,除非您有外部备份,否则没有恢复选项。
启用文件夹的文件版本控制后,Syncthing 将停止覆盖或直接删除原始文件。取而代之的是, 将旧版本移动到特定目录 称为 .stversions 在共享文件夹本身内。这样,您就可以保留版本历史记录,以便在后悔更改时可以回溯。
问题在于,如果您处理非常大的文件(例如视频或音频),并且没有设置任何限制,则文件夹 .stversions 它可以不受控制地增长数月之久,占用数十甚至数百GB的空间。确实有用户亲眼目睹过这种情况。 版本控制过程消耗了 160 GiB 由于从未清理过旧版本,导致单个目录中存在大量空间。
为了避免这种情况,Syncthing 提供了几种版本控制模式,每种模式都有不同的清理标准:无版本、回收站、单版本、交错版本和外部版本。每种模式都有其特定的使用场景,具体选择哪种模式取决于您如何使用文件夹。
可用的版本控制模式以及应该选择哪一种。
如果您不希望保留任何历史记录,可以将文件夹保持在默认模式。 “无版本控制”在这种情况下,删除就是删除,而覆盖则是永久性的,至少对 Syncthing 而言是这样。这是最简单的方法,但如果其中一台设备出现故障,风险也最大。
启用“回收站”模式后,每次删除或替换文件时,Syncthing 都会将其移动。 将其保存到 .stversions 文件夹,而不会自动删除它。当您拥有充足的磁盘空间并且想要保存所有历史记录以防万一时,这非常有用,但请注意,您需要不时手动清理它。
“简单版本控制”允许您定义 基本保留规则您可以指定保留旧版本的天数,或者每个文件允许的最大版本数。您还可以调整 Syncthing 检查是否删除不再符合这些条件的版本的时间间隔。
交错版本控制更为复杂。Syncthing 根据版本发布时间存储版本,其策略类似于某些备份系统:它维护…… 开头部分出现频率非常高。 它会随着时间的推移而间隔保存这些版本。例如,在第一个小时,它每30秒保存一个版本;在第一天,每小时保存一个版本;在前30天,每天保存一个版本;之后,直到达到最大年龄,每周保存一个版本。
最后,“外部”模式允许您将版本管理委托给第三方。 你编写的外部脚本每次需要对文件进行版本控制时,Syncthing 都会调用您的命令,并传入原始路径和版本保存的路径。如果您想将 Syncthing 与您自己的备份系统、冷归档、高级压缩或其他自定义逻辑集成,此选项非常有用。
Syncthing在日常生活中的实际应用
Syncthing 已在许多家庭和专业环境中稳定运行多年,实际使用案例可以很好地说明这一点。 在无需商业云的情况下,它能发挥多大的作用?我们来看一些典型场景。
一个非常常见的用途是维护 台式电脑和笔记本电脑之间的共享目录 对于视频、音频或其他高要求项目,您只需将原始文件复制到共享文件夹,然后在需要的地方(有时在笔记本电脑上,有时在台式机上)进行处理,Syncthing 就会自动处理所有更改,无需您担心 U 盘或外置硬盘的问题。
另一种常见场景是在所有设备上同步一个包含重要文档的文件夹:例如, 您的 KeePass 密码管理器数据库模板、配置或小型脚本,您可以将其放置在任何计算机上,而无需依赖 Dropbox、Google Drive 或 Mega 等服务。
在安卓手机上,Syncthing 被广泛用于同步。 将相机照片导入电脑或您自己的服务器您将手机上的相机文件夹配置为“仅发送”模式,并将计算机上的一个目录配置为“仅接收”模式,这样您拍摄的所有内容都会自动复制到您的主计算机,但 PC 上的任何错误都不会导致手机上的内容被删除。
最后,一些企业已经完全用云端取代了他们的工作流程:以前他们将内容上传到专有服务,而现在 它们直接在计算机之间复制文件。 使用 Syncthing,从而可以控制数据的存储位置和传输方式。
安全建议以及将其用作备用电源的信息
虽然 Syncthing 是一款强大且安全的同步工具,但需要注意的是: 严格来说,它并不是一个备份系统。它的作用是在多台计算机上复制文件夹的状态;如果某些内容被删除或损坏,这种更改很可能会传播到所有节点。
如果您想更多地将其用于备份目的,可以设置方案,将源计算机上的目录设置为“仅发送”模式,将中央服务器上的目录设置为“仅接收”模式。这样可以降低服务器上的删除操作传播到客户端的风险,但仍然 它无法保护您免受因用户自身设备引起的错误的影响。.
关键在于,对于真正重要的文件,你必须保留它们。 Syncthing 独立备份无论是在断开连接的外部驱动器上、具有快照的另一台服务器上,还是在可信的远程备份服务上,Syncthing 都是拼图中的又一块,而不是备份的替代品。
在设备众多或用户技术水平较低的环境中,建议对用户进行系统操作培训,讲解从共享文件夹删除文件会产生哪些后果,以及如果需要从版本控制系统中恢复数据该如何操作。对系统使用方法的基本了解可以有效避免灾难的发生。
在使用 Syncthing 时,注意这些事项,充分利用其版本控制选项并妥善组织文件夹,您可以设置一个 强大、私密且灵活的文件同步无需依赖第三方,并完全掌控您的数据及其位置,这在一切都趋向商业云的世界中越来越有价值。
专门研究技术和互联网问题的编辑,在不同数字媒体领域拥有十多年的经验。我曾在电子商务、通讯、在线营销和广告公司担任编辑和内容创作者。我还在经济、金融和其他领域的网站上撰写过文章。我的工作也是我的热情所在。现在,通过我的文章 Tecnobits,我尝试探索技术世界每天为我们提供的所有新闻和新机会,以改善我们的生活。