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

介绍

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

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

先决条件和目标

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

为了本指南的目的,我们将调用这些服务器:

  • serverone
  • servertwo

这些将是平等的合作伙伴,因此没有主要/次要关系。 你应该有关于这些配置的普通用户帐户(你可以找到如何按照我们的第1步-4 初始服务器安装指南的Ubuntu 14.04在这里)。

本指南中的普通用户帐户将被称为demouser ,但你应该用你喜欢的任何用户名。 这不必与您的常规非root帐户分开。

我们将在每台机器上安装和配置Syncthing,以便文件可以在它们之间共享。 完成本指南中介绍的过程后,您应该有两个服务器,每个服务器都有一个目录,用于将更改反映到另一台计算机。

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

初始下载和安装

首先我们需要做的是开始下载Syncthing二进制到我们的每个服务器。

要找到最新的封装版本,你可以去在GitHub上发布页面 每个操作系统类型都有向下的按钮。

同步发布页面

如果你的Linux系统是32位的,选择与“开头的选择syncthing-linux-386-... ”。 如果您正在使用的服务器是64位,选择标有一个“ syncthing-linux-amd64-... ”。 不要将文件下载到本地计算机上。 相反,右键单击相应的文件,然后选择“复制链接地址”或任何类似的选项。

我们将使用下载这些文件wget对我们每个服务器上的命令。 在您的服务器,请键入wget后面有一个空格,然后粘贴您复制的链接。 版本和系统架构可能会有所不同:

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

现在,我们可以通过键入打开tarball:

tar xzvf syncthing*.tar.gz

移动到新创建的目录:

cd syncthing*

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

通过键入以下命令使用sudo权限:

sudo cp syncthing /usr/local/bin

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

cd ~
rm -rf syncthing*

在两台服务器上完成上述所有步骤。

该应用程序现已安装,但还有一些事情需要做,在它准备使用之前。

将GUI选项更改为允许远程查看

默认情况下,Syncthing Web界面仅适用于来自同一台计算机的连接。 这不会为我们的目的工作,因为我们使用远程服务器。

要解决这个问题,我们需要在Syncthing配置文件中编辑一行。 但是,配置文件尚未创建。

要自动创建文件,我们可以简单地启动服务。 键入syncthing命令得到这个启动和运行:

syncthing

syncthing过程不是一个守护进程,这意味着它在当前shell会话中运行(我们会解决这个问题通过瞬间实现一个Upstart脚本)。 它将启动过程并创建一些必要的文件。

稍后,您将看到有关您的节点ID的信息性消息,如下所示:

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

当你看到这个,这意味着进程已正确初始化。 现在,我们可以通过键入以下内容停止此过程:

CTRL-C

这将停止过程,并让我们再次控制终端。

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

nano ~/.config/syncthing/config.xml

寻找一个处理GUI的部分。 它应该看起来像这样:

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

我们需要做的唯一的变化就是更换本地主机地址( 127.0.0.1 )与0.0.0.0 ,它代表所有网络接口。 完成后,此部分将如下所示:

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

保存并在完成后关闭文件。 我们将在以后通过Web界面做更广泛的配置。

同样,在您配置的两个服务器上完成这些过程。

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

接下来,我们将实现一个Upstart脚本来管理我们的进程。 这将允许我们在服务器引导时自动启动Syncthing进程。 它也将让我们作为一个服务运行,而不控制我们的会话。

我们将用Upstart的脚本是从拍摄的Syncthing讨论板后 在编辑器中通过键入以root权限创建并打开Upstart文件:

sudo nano /etc/init/syncthing.conf

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

description "Syncthing P2P sync service"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

env STNORESTART=yes
env HOME=/home/demouser
setuid "demouser"
setgid "demouser"

exec /usr/local/bin/syncthing

respawn

让我们来看看这是什么意思。

我们从服务的一般描述开始。 接下来,我们定义服务应该何时启动和停止。 在这里,我们告诉系统它应该在文件系统和非本地网络接口启动后启动。 每当系统离开正常运行级别时,它将停止。

接下来,我们将设置一个环境变量,告诉Syncthing不要使用自己的机制重新启动。 这是因为它实际上每次产生一个新的过程,而不清理旧的。 为了避免这种情况,我们将实现在此Upstart脚本中重新启动的能力。

下一个环境变量设置将由Syncthing使用的主目录。 这将用于在GUI中查找正确的配置文件和预填充字段。 我们也将使用指定的用户和组setuidsetgid分别参数。 修改所有这三个值以指向您的用户的信息。

接下来,我们设置了我们将要执行的实际命令的路径。 最后,我们用respawn来告诉Upstart如果过早停止时自动重新启动该进程。 这用于在Syncthing进程尝试在内部重新启动时自动重新启动进程(干净地)。

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

您现在可以通过键入以下内容来启动服务:

sudo initctl start syncthing

在两台服务器上完成上述步骤。

在Web UI中设置安全性

我们终于可以通过Web用户界面配置我们的实例。

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

http://server1_public_IP:8080
http://server2_public_IP:8080

您将看到主Syncthing屏幕:

同步主屏幕

我们需要做的第一件事是向我们的界面添加一些安全性。 转到右上角的“编辑”菜单,然后单击“设置”选项:

同步设置

在右侧,我们需要为Web界面设置用户名和密码。 我们还希望为我们的会话启用TLS加密,以便我们的流量不会在传输中被拦截,方法是选中“HTTPS”框:

同步安全

完成后,单击底部的“保存”按钮。

您将看到一条消息,提示您重新启动服务,以使更改生效:

同步重启

点击“重新启动”按钮。

您可能需要刷新页面以使更改正确重新加载。 执行此操作时,您很有可能会遇到类似于以下内容的SSL警告:

同步SSL警告

这只是让您知道,签署SSL证书的实体不在您的浏览器的可信证书颁发机构列表中。 这是预期的,因为证书是自签名的。 可以安全地单击“仍然继续”继续。

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

同步用户名和密码

填写相应的值并登录。您的接口现在更安全地从外部流量。

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

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

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

要添加节点,您将需要伴随节点的ID。 您可以通过转到右上角的“编辑”菜单并选择“显示ID”选项来获取此ID。

这会显示一个重叠式广告,其中包含您可以复制的长ID。 它还会给你一个QR码,以防你配置智能手机应用程序。 复制第一个节点的ID。

同步复制ID

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

将显示一个叠加层,其中包含您必须配置以添加其他服务器的字段。 在“节点ID”字段中,粘贴从第一个服务器复制的ID。 在“节点名称”字段中,选择要用于其他服务器的任何描述性名称。 将“地址”保留为“动态”:

同步添加节点

完成后,单击“保存”以添加新节点。

以相反的顺序运行此相同的过程,以便两个服务器在其配置中具有相反的服务器。 暂时,请忽略重新启动服务的任何请求,因为我们将首先进行一些其他更改。

在Web界面中,您连接到的节点显示在右侧。 您共享的存储库在左侧列出。 默认情况下,文件夹,名为Sync会在你的home目录中创建作为默认存储库。 如果菜单已压缩,请单击名称以展开列表:

复制默认repo

单击“编辑”按钮配置repo。 在底部,您可以选择与您配置的任何节点共享此存储库。 选中与对端节点相关的框,然后点击“保存”按钮:

与节点共享共享

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

同步重启

现在,在所做的任何修改~/Sync目录将被镜像到对面服务器。 默认情况下,这将每60秒同步一次,但可以在“设置”菜单中更改。

您可以通过从“编辑”菜单中选择“添加存储库”选项来添加要镜像的其他目录。 对于要关联的目录,每个服务器上的“存储库ID”必须相同。

结论

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

如果您计划在系统文件同步到普通用户不会有写权限的目录,你可能需要修改Upstart文件,使用root帐户或任何其他必要的用户帐户来执行所需操作。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏