如何在 Ubuntu 14.04 上安装和配置 Syncthing 以同步目录

介绍

有许多程序能够在不同计算机之间保持文件同步。 Syncthing是一个令人信服的新选项,它是跨平台的,完全开源,非常灵活,易于使用。

在本指南中,我们将向您展示如何开始使用Syncthing来同步两个Ubuntu 14.04服务器实例之间的数据,这将允许您根据配置的观看目录无缝同步这些服务器之间的文件。

前提和目标

要完成本指南,您需要访问两个Ubuntu 14.04服务器实例。

对于本指南的目的,我们将称呼这些服务器:

服务器( 服务器( 服务器

这些将是平等的合作伙伴,所以没有主要 / 次要的关系. 您应该有一个常规的用户帐户配置在每一个这些(你可以通过遵循步骤 1-4 在我们的 初始服务器设置指南Ubuntu 14.04在这里了解如何)。

本指南中的常规用户帐户将被称为Demouser,但您应该使用任何您想要的用户名。

我们将在这些机器上安装和配置Syncthing,以便在这些机器之间共享文件. 完成本指南中描述的程序后,您应该有两个服务器,每个服务器都有一个目录,它将反映对其他计算机的更改。

我们将安装 Syncthing 作为系统级应用程序,并创建一个 Upstart 脚本,这将允许我们的 Syncthing 实例在启动时正确启动并重新启动,而不是像默认情况一样每次生成新实例。

初始下载和安装

我们需要做的第一件事是将Syncthing二进制下载到我们的每个服务器上。

要找到最新的包装版本,您可以前往 GitHub 上发布页面

Syncthing release page

如果您的 Linux 系统是 32 位的,请选择以syncthing-linux-386-...开头的选项。 如果您正在使用的服务器是 64 位的,请选择标记为syncthing-linux-amd64-...的选项。 不要将该文件下载到您的本地计算机上。

我们将使用我们每个服务器上的wget命令下载这些文件. 在您的服务器上,键入wget,然后添加您复制的链接。

1cd ~
2wget https://github.com/calmh/syncthing/releases/download/v0.8.15/syncthing-linux-amd64-v0.8.15.tar.gz

现在,我们可以通过键入卸载 tarball:

1tar xzvf syncthing*.tar.gz

移动到新创建的目录:

1cd syncthing*

在这里,我们有一个名为syncthing的可执行文件,我们可以使用它来启动服务,我们希望将其复制到我们的PATH中的一个位置,以便我们可以将其称为正常的应用程序。

通过键入 sudo 特权来完成此操作:

1sudo cp syncthing /usr/local/bin

现在,我们可以回到我们的主目录并安全地删除剩余的所有 Syncthing 文件和目录。

1cd ~
2rm -rf syncthing*

在您的两个服务器上完成上述所有步骤。

该应用程序现在已安装,但我们需要做一些事情,然后它就可以使用。

更改 GUI 选项以允许远程查看

默认情况下,Syncthing Web 接口仅适用于来自同一台计算机的连接,因为我们正在与远程服务器合作,因此不会为我们的目的工作。

要修复此问题,我们需要在 Syncthing 配置文件中编辑一行,但是配置文件尚未创建。

要自动创建该文件,我们可以简短启动服务。 输入syncthing命令以获取此功能并运行:

1syncthing

同步过程不是一个戴蒙,这意味着它在当前的壳会话中运行(我们会通过即时实施Upstart脚本来解决这个问题)。

过了一会儿,你会看到有关 Node ID 的信息消息,它看起来像这样:

1[2EQK3] 15:47:15 OK: Ready to synchronize default (read-write)
2[2EQK3] 15:47:15 INFO: Node 2EQK3ZR77PTBQGM44KE7VQIQG7ICXJDEOK34TO3SWOVMUL4QFBHA is "server1" at [dynamic]

当您看到此时,这意味着该过程已初始化正确. 现在我们可以通过键入来阻止该过程:

1CTRL-C

这将阻止这个过程,并使我们再次控制终端。

我们现在可以编辑创建的配置文件. 打开文本编辑器中的文件:

1nano ~/.config/syncthing/config.xml

寻找一个与GUI相关的部分,它应该是这样的:

1<gui enabled="true" tls="false">
2    <address>127.0.0.1:8080</address>
3</gui>

我们唯一需要做的改变是将 localhost 地址(127.0.0.1)更换为 0.0.0.0,它代表了所有网络接口。

1<gui enabled="true" tls="false">
2    <address>0.0.0.0:8080</address>
3</gui>

当您完成时,将保存并关闭文件,我们将通过 Web 界面进行更广泛的配置。

再次,在您正在配置的两个服务器上完成这些程序。

创建一个 Upstart 脚本来处理服务状态

接下来,我们将实施一个Upstart脚本来管理我们的流程,这将使我们能够在服务器启动时自动启动同步过程,这也将使我们能够运行它作为一个服务,而不会控制我们的会话。

我们将使用的 Upstart 脚本是从 Syncthing 讨论板上的帖子中获取的。

1sudo nano /etc/init/syncthing.conf

内部,我们将使用以下行来控制我们的Upstart过程:

 1description "Syncthing P2P sync service"
 2
 3start on (local-filesystems and net-device-up IFACE!=lo)
 4stop on runlevel [!2345]
 5
 6env STNORESTART=yes
 7env HOME=/home/demouser
 8setuid "demouser"
 9setgid "demouser"
10
11exec /usr/local/bin/syncthing
12
13respawn

让我们来谈谈这意味着什么。

接下来,我们定义什么时候该服务应该启动和停止. 在这里,我们告诉系统在文件系统和非本地网络接口出现后应该启动。

接下来,我们将设置一个环境变量,告诉Syncthing不要使用其自己的机制重新启动,这是因为它实际上每次都会产生一个新的过程,而不会清理旧的过程。

下一个环境变量设置了 Syncthing 将使用的首页目录。这将用于在 GUI 中找到正确的配置文件和预定位字段。我们还将使用setuidsetgid参数指定用户和组。

接下来,我们设置了实际执行的命令的路径。最后,我们使用respawn来告诉Upstart如果过早停止,自动重新启动过程。

完成后,保存并关闭文件。

您现在可以通过键入开始服务:

1sudo initctl start syncthing

在您的两个服务器上完成上述步骤。

在 Web UI 中设置安全性

我们终于准备好通过Web用户界面来配置我们的实例。

登录您的每个服务器的 Syncthing 接口,访问他们的公共 IP 地址和端口 8080:

1http://server1_public_IP:8080
2http://server2_public_IP:8080

你会看到主 Syncthing 屏幕:

Syncthing main screen

我们需要做的第一件事是为我们的界面添加一些安全性,然后进入右上角的编辑菜单,然后点击设置选项:

Syncthing settings

在右侧,我们需要为 Web 界面设置用户名和密码,我们还希望为我们的会话启用 TLS 加密,以便通过检查HTTPS框来阻止我们的流量在过境中被拦截:

Syncthing security

当你完成时,点击底部的保存按钮。

您将看到一个提示您重新启动服务的消息,以便对更改产生影响:

Syncthing restart

点击重启按钮。

您可能需要刷新页面以便更改正确地重新加载。当您这样做时,您很可能会遇到一个SSL警告,看起来像这样:

Syncthing SSL warning

这只是让你知道签署 SSL 证书的实体不在您的浏览器的信任证书机构列表中。

然后,您将收到您配置的用户名和密码的身份验证提示:

Syncthing username and password

填写相应的值并登录您的界面现在对外部流量更安全。

在两个服务器上完成这些步骤。

连接两个服务器和共享目录

为了共享内容,Syncthing 需要连接的两端将其他服务器添加到他们的节点列表中,然后,双方还必须添加一个存储库(目录)来同步。

要添加一个节点,你需要伴侣节点的ID,你可以通过上右角的编辑菜单来获取这个ID,并选择显示ID选项。

这将带来一个具有长 ID 的重叠,您可以复制。如果您正在配置智能手机应用程序,它还会给你一个QR代码。

Syncthing copy ID

在第二个服务器上,单击编辑菜单并选择添加节点

Node ID字段中,粘贴您从第一台服务器上复制的ID。在Node Name字段中,选择您想为另一台服务器使用的任何描述性名称。

Syncthing add node

当你完成时,点击保存,添加新的节点。

在相反的顺序下运行相同的过程,以便两台服务器在配置中具有相反的服务器. 目前,忽略任何重新启动服务的请求,因为我们将首先做出一些额外的更改。

在 Web 接口中,您所连接的节点在右侧显示。您共享的存储库在左侧列出。默认情况下,将在您的主目录中创建一个名为同步的文件夹,以作为默认的存储库。如果菜单被压缩,请单击名称以扩展列表:

Syncthing default repo

点击编辑按钮来配置 Repo。向下,您将有选择与您配置的任何节点共享此存储库。检查与相反节点相关的框,然后点击保存按钮:

Syncthing share with node

现在,您可以点击重新启动按钮来实施您的更改:

Syncthing restart

现在,在~/Sync目录中所做的任何更改都将镜像到相反的服务器上。 默认情况下,这将每60秒进行同步,但可以在设置菜单中更改。

您可以从编辑菜单中选择添加存储库选项来添加您想要镜像的额外目录。

结论

在此时,您应该有两个服务器连接并同步单个目录的内容,您可以通过添加额外的存储库(目录)或添加额外的节点来轻松扩展此内容。

如果您计划将系统文件同步到普通用户无法访问的目录中,您可能需要修改 Upstart 文件以使用帐户或其他需要执行所需操作的用户帐户。

Published At
Categories with 技术
Tagged with
comments powered by Disqus