怎样在 Linux Mint 20 上安装 Syncthing

本教程将向您展示如何安装 同步 在 Linux Mint 20. Syncthing 是一个免费的点对点连续文件同步程序,它允许您跨多个设备同步文件,适用于 Linux、BSD、macOS、Windows、Android、iOS 和 Solaris。

它是流行的 Resilio Sync(以前称为 BitTorrent 同步) 应用。 在一台机器上创建、修改或删除文件将自动复制到您的其他设备。 Syncthing 不会将您的文件上传到 Nextcloud 等中央服务器,而是直接在您的设备之间交换您的数据。 您的所有数据都经过加密 TLS 在您的设备之间传输时。

同步功能

  • 免费和开源。
  • 同步速度快。
  • 支持单向同步。
  • 选择性同步(忽略模式)。
  • 如果两个对等点无法相互连接,它可以使用中继服务器。
  • 支持LDAP认证。

目录

  • 通过官方 Deb 存储库在 Linux Mint 20 上安装 Syncthing
  • 将 Syncthing 设置为 Systemd 服务
  • 在其他操作系统上安装 Syncthing
  • 配置防火墙
  • 同步网页界面
  • 开始在您的设备之间同步文件
  • 启用用户身份验证
  • 仅发送和仅接收文件夹
  • 故障排除技巧

通过官方 Deb 存储库在 Linux Mint 20 上安装 Syncthing

Syncthing 包含在默认的 Linux Mint 存储库中。 但是,建议从上游官方存储库安装 Syncthing,这样您将获得最新版本。

打开终端窗口并使用 curl 下载 GPG 密钥,然后导入密钥 apt-key.

sudo apt install curl

curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

如果你看到 OK 在终端中,这意味着 GPG 密钥已成功导入。 然后使用以下命令添加官方 deb 存储库。

echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

由于此存储库使用 https,因此我们需要安装 apt-transport-https 包,因此 APT 包管理器可以与此存储库建立 https 连接。

sudo apt install apt-transport-https

更新本地包索引并在 Linux Mint 上安装 syncthing。

sudo apt update

sudo apt install syncthing

将 Syncthing 设置为 Systemd 服务

官方的 Syncthing deb 包附带了所需的 systemd 服务文件。 在下面 /lib/systemd/system/ 目录,你会发现一个 [email protected] 文件。 通过运行以下命令启用同步以在启动时自动启动。 代替 username 使用您的实际用户名。

sudo systemctl enable [email protected]username.service

上面的命令将创建一个符号链接,指向 [email protected] 文件。

Created symlink from /etc/systemd/system/multi-user.target.wants/[email protected] to /lib/systemd/system/[email protected]

现在我们可以使用以下命令启动 Syncthing 服务。

sudo systemctl start [email protected]username.service

检查状态

systemctl status [email protected]username.service

输出:

同步 Linux 薄荷

提示:如果上面的命令没有立即退出,请按 重新获得对终端的控制权。

我们可以看到 Syncthing 自动启动已启用并且正在运行。

syncthing systemd 服务会在下面创建配置文件 /home/username/.config/syncthing/ 和一个文件夹 /home/username/Sync 作为默认同步文件夹。 主要的配置文件是 /home/username/.config/syncthing/config.xml.

在其他操作系统上安装 Syncthing

转到 Syncthing 下载页面并在 Windows、macOS、BSD、Android 等其他操作系统上安装 Syncthing。 目前没有 iOS 的官方客户端。 您可以使用第三方应用 MobiusSync。

配置防火墙

Syncthing 使用端口 22000 与对等方通信。 如果您的计算机或服务器启用了 UFW 防火墙,那么您需要使用以下命令允许端口 22000。

sudo ufw allow 22000/tcp

访问 Syncthing Web 界面

默认情况下,Syncthing 服务侦听 127.0.0.1:8384。 现在在 Web 浏览器的地址栏中,键入 127.0.0.1:8384 访问 Syncthing Web 界面。 您可以添加其他 Syncthing 设备并与它们共享文件夹。

linux mint-syncthing-web-interface

开始在您的设备之间同步文件

一旦我们有两个运行 Syncthing 的设备,我们就可以开始在它们之间同步文件。

在 Syncthing Web 界面中,单击 行动 > 显示 ID 在右上角。 您将看到设备 ID,它是一长串字母和数字。 二维码,也是设备 ID,用于在智能手机上配置 Syncthing。

同步设备 ID

复制设备ID,然后打开第二台设备的Syncthing Web界面,点击 添加远程设备 在右下角。 然后粘贴设备 ID 并为设备命名。 单击保存按钮。

同步添加远程设备

现在第二个设备将尝试连接到第一个设备。 在第一台设备上刷新 Web 界面,您将看到以下消息。 点击 添加设备 将第二个设备添加到第一个设备的设备列表中。

同步添加设备

现在这两个设备已连接。

Web 界面的左侧窗格是默认同步文件夹(/home/username/Sync)。 点击 Add Folder 按钮添加新文件夹。 为此文件夹提供一个描述性标签并设置文件夹路径。

同步添加新文件夹

Syncthing 作为您自己的用户帐户运行,因此您需要对共享文件夹具有写入权限。 如果您在共享文件夹时看到以下错误消息,则表示您对该文件夹没有写权限。

2020-06-21 20:05:49: Failed to create folder marker: mkdir .stfolder: read-only file system

您可以授予写权限 setfacl.

sudo apt install acl
sudo setfacl -R -m u:username:rwx /folder/path/

笔记:如果问题仍然存在,请参阅本文末尾的故障排除提示。

在里面 Sharing 选项卡,选择您的其他 Syncthing 设备。

同步共享设备

在里面 Ignore Pattens 选项卡,您可以输入不应同步的文件的名称模式。

在里面 Advanced 选项卡,您可以选择文件夹类型、重新扫描间隔等。

同步高级共享设置

单击保存按钮开始同步。 另一台设备的 Web 界面中将出现一条消息。 点击 添加 接收文件。

同步添加共享文件夹

现在两台设备正在同步文件。 在右侧,您可以看到下载速率、上传速率、本地文件夹大小等。

同步检查同步进度

启用用户身份验证

默认情况下,任何有权访问您计算机的人都可以访问您的 Syncthing Web 界面。 我们可以启用用户身份验证来限制访问。 点击 行动 右上角的按钮,然后选择 设置 -> 图形用户界面。

在 Debian 8 上安装同步

输入用户名 GUI认证用户 字段,输入密码 GUI 认证密码字段. 然后保存您的设置。

同步 gui 用户认证

保存更改后,重新启动 Syncthing systemd 服务,否则在重新加载页面时您可能会看到 502 bad gateway 错误。

sudo systemctl restart [email protected]username.service

现在使用您的新用户名和密码登录到 Syncthing Web 界面。

仅发送和仅接收文件夹

在 Syncthing 中共享文件夹时,您可以转到“高级”选项卡并选择三种文件夹类型之一:

  • 发送和接收(默认)
  • 仅发送
  • 只收

您可能希望选择仅发送或仅接收。 例如,如果您有 3 台计算机:A、B 和 C,并且您希望将计算机 A 和 B 上的文件夹聚合到计算机 C 上的单个文件夹中,那么您可以在计算机 C 上将文件夹类型设置为仅接收。这样,计算机 C 会将所有文件放在一个文件夹中。 计算机 A 和 B 仍保留原始文件。 不多也不少。

同步文件夹类型

当您在计算机 C 上使用相同的文件夹路径时,Syncthing 可能会警告您“此路径是现有文件夹的子目录”。 您可以忽略此警告,因为您有一个仅接收文件夹。 文件夹中的现有文件不会被删除。

通过中继服务器同步

如果两个 Syncthing 实例无法相互连接,那么 Syncthing 将尝试使用中继服务器来传输文件。

同步

它们无法相互连接的一个常见原因是它们都在 NAT 设备后面并且没有配置端口转发。 配置端口转发后,您可以禁用中继服务器。 就是这样。 点击 Edit 按钮并选择 Advanced 选项卡,更改地址 dynamictcp://ip-address:22000. 当然你需要使用你的真实IP地址。

同步禁用中继服务器

同步大量小文件

Syncthing 不适合同步像 osm tile 文件这样的大量小文件,因为它会很快达到 Linux 文件系统 inotify 的限制。 如果两台设备都运行 Linux,那么您可以使用 rsync (远程同步)工具来同步大量的小文件,像这样:

rsync -aP /path/to/source/folder/  [email protected]:/path/to/destination/folder

故障排除提示

无法连接

如果您的 Syncthing 实例无法相互连接,您可以使用 ss (socket stats) 实用程序,用于检查 Syncthing 是否正在侦听 TCP 端口 22000。

sudo ss -lnpt | grep syncthing

从下面的屏幕截图中可以看出,我的 Syncthing 正在侦听端口 8384(Web 界面)和 22000(点对点连接)。

linux mint-syncthing-listen-port-22000

如果没有,您可以编辑配置文件。

nano ~/.config/syncthing/config.xml

找到以下行。

<listenAddress>default</listenAddress>

改变 defaulttcp://your-IP-address.

<listenAddress>tcp://12.34.56.78</listenAddress>

保存并关闭文件。 然后重新启动 Syncthing。

sudo systemctl restart [email protected]username.service

无法创建文件夹标记

如果要同步系统文件夹,例如 /etc/,您可能会看到以下错误消息:

Failed to create folder marker, read-only file system

这是因为 syncthing systemd 服务(/lib/systemd/system/[email protected]) 有以下内容 ProtectSystem 禁止对 systemd 文件夹(/usr/、/boot/、/etc/)进行写操作的变量。

ProtectSystem=full

我们可以添加排除项,以便 Syncthing 可以写入文件夹。 创建一个文件夹来存储我们自定义的 systemd 配置。

sudo mkdir /etc/systemd/system/[email protected]username.service.d/

然后在这个目录下创建一个文件。

sudo nano /etc/systemd/system/[email protected]username.service.d/permission.conf

在此文件中添加以下行。

[Service]
ReadWritePaths=/shared/foler/one/  /shared/foler/two/

文件夹由空格分隔。 您可以添加任意数量的文件夹。 该文件夹必须存在于您的系统上,否则 Syncthing 将无法重新启动。

保存并关闭文件。 然后重新加载systemd。

sudo systemctl daemon-reload

并重新启动 Syncthing。

sudo systemctl restart [email protected]username.service

全局状态中的文件夹大小不准确

如果您与多个设备共享文件夹,就会发生这种情况。 假设您将一个文件夹从设备 1 共享到设备 2。如果设备 2 未完成同步文件,而您将文件夹从设备 2 共享到设备 3,则设备 3 上显示的全局文件夹大小将小于实际大小.

文件夹同步停止

检查 Syncthing 日志以找出它停止同步的原因。

sudo journalctl -eu [email protected]

问题处理请求

如果看到如下错误,可以查看Nginx错误日志(/var/log/nginx/syncthing.error.log) 或 Apache 错误日志 (/var/log/apache/syncthing_error.log) 找出导致此问题的原因。

Syncthing seems to be experiencing a problem processing your request. Please refresh the page or restart Syncthing if the problem persists.

就我而言,这是因为我启用了 ModSecurity Web 应用程序防火墙。

异步复制

请注意,Syncthing 使用异步方法,因此在一个节点上所做的更改需要一些时间才能复制到其他节点。 如果您的应用程序对同步延迟敏感,建议指定一个节点作为主节点。 仅在主节点上进行更改,并使用从节点作为备份。

包起来

我希望本教程可以帮助您在 Linux Mint 上安装和使用 Syncthing。 与往常一样,如果您发现这篇文章有用,请订阅我们的免费时事通讯以获取更多提示和技巧。 保重🙂