介绍
有许多程序能够在不同计算机之间保持文件同步。 Syncthing是一个令人信服的新选项,它是跨平台的,完全开源,非常灵活,易于使用。
在本指南中,我们将向您展示如何开始使用Syncthing来同步两个Ubuntu 14.04服务器实例之间的数据,这将允许您根据配置的观看
目录无缝同步这些服务器之间的文件。
前提和目标
要完成本指南,您需要访问两个Ubuntu 14.04服务器实例。
对于本指南的目的,我们将称呼这些服务器:
服务器( 服务器( 服务器
这些将是平等的合作伙伴,所以没有主要 / 次要的关系. 您应该有一个常规的用户帐户配置在每一个这些(你可以通过遵循步骤 1-4 在我们的 初始服务器设置指南Ubuntu 14.04在这里了解如何)。
本指南中的常规用户帐户将被称为Demouser
,但您应该使用任何您想要的用户名。
我们将在这些机器上安装和配置Syncthing,以便在这些机器之间共享文件. 完成本指南中描述的程序后,您应该有两个服务器,每个服务器都有一个目录,它将反映对其他计算机的更改。
我们将安装 Syncthing 作为系统级应用程序,并创建一个 Upstart 脚本,这将允许我们的 Syncthing 实例在启动时正确启动并重新启动,而不是像默认情况一样每次生成新实例。
初始下载和安装
我们需要做的第一件事是将Syncthing二进制下载到我们的每个服务器上。
要找到最新的包装版本,您可以前往 GitHub 上发布页面。
如果您的 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 中找到正确的配置文件和预定位字段。我们还将使用setuid
和setgid
参数指定用户和组。
接下来,我们设置了实际执行的命令的路径。最后,我们使用respawn
来告诉Upstart如果过早停止,自动重新启动过程。
完成后,保存并关闭文件。
您现在可以通过键入开始服务:
1sudo initctl start syncthing
在您的两个服务器上完成上述步骤。
在 Web UI 中设置安全性
我们终于准备好通过Web用户界面来配置我们的实例。
登录您的每个服务器的 Syncthing 接口,访问他们的公共 IP 地址和端口 8080
:
1http://server1_public_IP:8080
2http://server2_public_IP:8080
你会看到主 Syncthing 屏幕:
我们需要做的第一件事是为我们的界面添加一些安全性,然后进入右上角的编辑
菜单,然后点击设置
选项:
在右侧,我们需要为 Web 界面设置用户名和密码,我们还希望为我们的会话启用 TLS 加密,以便通过检查HTTPS
框来阻止我们的流量在过境中被拦截:
当你完成时,点击底部的保存
按钮。
您将看到一个提示您重新启动服务的消息,以便对更改产生影响:
点击重启
按钮。
您可能需要刷新页面以便更改正确地重新加载。当您这样做时,您很可能会遇到一个SSL警告,看起来像这样:
这只是让你知道签署 SSL 证书的实体不在您的浏览器的信任证书机构列表中。
然后,您将收到您配置的用户名和密码的身份验证提示:
填写相应的值并登录您的界面现在对外部流量更安全。
在两个服务器上完成这些步骤。
连接两个服务器和共享目录
为了共享内容,Syncthing 需要连接的两端将其他服务器添加到他们的节点列表中,然后,双方还必须添加一个存储库(目录)来同步。
要添加一个节点,你需要伴侣节点的ID,你可以通过上右角的编辑
菜单来获取这个ID,并选择显示ID
选项。
这将带来一个具有长 ID 的重叠,您可以复制。如果您正在配置智能手机应用程序,它还会给你一个QR代码。
在第二个服务器上,单击编辑
菜单并选择添加节点
。
在Node ID
字段中,粘贴您从第一台服务器上复制的ID。在Node Name
字段中,选择您想为另一台服务器使用的任何描述性名称。
当你完成时,点击保存
,添加新的节点。
在相反的顺序下运行相同的过程,以便两台服务器在配置中具有相反的服务器. 目前,忽略任何重新启动服务的请求,因为我们将首先做出一些额外的更改。
在 Web 接口中,您所连接的节点在右侧显示。您共享的存储库在左侧列出。默认情况下,将在您的主目录中创建一个名为同步
的文件夹,以作为默认的存储库。如果菜单被压缩,请单击名称以扩展列表:
点击编辑
按钮来配置 Repo。向下,您将有选择与您配置的任何节点共享此存储库。检查与相反节点相关的框,然后点击保存
按钮:
现在,您可以点击重新启动
按钮来实施您的更改:
现在,在~/Sync
目录中所做的任何更改都将镜像到相反的服务器上。 默认情况下,这将每60秒进行同步,但可以在设置
菜单中更改。
您可以从编辑
菜单中选择添加存储库
选项来添加您想要镜像的额外目录。
结论
在此时,您应该有两个服务器连接并同步单个目录的内容,您可以通过添加额外的存储库(目录)或添加额外的节点来轻松扩展此内容。
如果您计划将系统文件同步到普通用户无法访问的目录中,您可能需要修改 Upstart 文件以使用根
帐户或其他需要执行所需操作的用户帐户。