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

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

介绍

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

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

先决条件和目标

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

在本指南中,我们将称这些服务器为:

  • serverone
  • servertwo

这些将是平等的合作伙伴,因此没有主/次关系。您应该在每台服务器上配置一个常规用户帐户(您可以按照我们的 Ubuntu 14.04 初始服务器设置指南中的步骤 1-4 找出如何做)。

本指南中的常规用户帐户将被称为 demouser,但您可以使用任何用户名。这不必与您的常规非根帐户分开。

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

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

初始下载和安装

我们开始的第一件事是在每台服务器上下载 Syncthing 二进制文件。

要找到最新打包的版本,您可以转到 GitHub 上的发布页面。在页面底部有每种操作系统类型的按钮。

!Syncthing release page

如果您的 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

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

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 用户界面配置我们的实例。

通过访问它们的公共 IP 地址和端口 8080,登录到每台服务器的 Syncthing 界面:

http://server1_public_IP:8080
http://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 的覆盖层,您可以复制其中的 ID。它还会给您一个 QR 码,以防您正在配置智能手机应用程序。复制第一个节点的 ID。

!Syncthing copy ID

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

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

!Syncthing add node

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

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

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

!Syncthing default repo

点击“编辑”按钮以配置存储库。在底部,您将有选项将此存储库与您配置的任何节点共享。选中与另一节点相关联的框,然后点击“保存”按钮:

!Syncthing share with node

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

!Syncthing restart

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

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

结论

到这一步,你应该已经连接了两台服务器,并同步了一个目录的内容。你可以通过添加额外的仓库(目录),或者添加额外的节点来扩展这个功能。

如果你计划将系统文件同步到普通用户无法写入的目录,你可能需要修改 Upstart 文件,以使用 root 账户或其他必要的用户账户来执行所需的操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/785113.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎样优化 PostgreSQL 中对日期时间范围的模糊查询?

文章目录 一、问题分析&#xff08;一&#xff09;索引未有效利用&#xff08;二&#xff09;日期时间格式不统一&#xff08;三&#xff09;复杂的查询条件 二、优化策略&#xff08;一&#xff09;使用合适的索引&#xff08;二&#xff09;规范日期时间格式&#xff08;三&a…

前沿重器[53] | 聊聊搜索系统6:精排

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

IDEA启动tomcat之后控制台出现中文乱码问题

方法1&#xff1a; 第一步&#xff1a;file--setting--Editor--File Encodings 注意页面中全部改为UTF-8&#xff0c;然后apply再ok 第二步&#xff1a;Run--Edit Configuration&#xff0c;将VM options输入以下值&#xff1a; -Dfile.encodingUTF-8 还是一样先apply再ok …

视频图文理解关联技术与创业团队(二)

上一篇&#xff1a;google gemini1.5 flash视频图文理解能力初探&#xff08;一&#xff09;提到了gemini 1.5 flash 可以对视频进行理解以及分析&#xff0c;但是整体在检索任务上效果不佳。 这几天参加了人工智能大会 网上收集&#xff0c;看一看有相似能力的一些技术点、创…

生物素化果胶粒子包裹药物阿霉素;DOX/Bio-PEC

生物素化果胶粒子包裹药物阿霉素&#xff08;DOX/Bio-PEC&#xff09;是一种新型的药物载体系统&#xff0c;结合了生物素和果胶多糖的优势&#xff0c;旨在提高药物的靶向性和控释性能。以下是对该系统的详细解析&#xff1a; 一、生物素化果胶粒子的制备 原理与步骤&#xff…

独立开发者系列(22)——API调试工具apifox的使用

接口的逻辑已经实现&#xff0c;需要对外发布接口&#xff0c;而发布接口的时候&#xff0c;我们需要能自己简单调试接口。当然&#xff0c;其实自己也可以写简单的代码调试自己的接口&#xff0c;因为其实就是简单的request请求或者curl库读取&#xff0c;调整请求方式get或者…

甄选范文“论区块链技术及应用”,软考高级论文,系统架构设计师论文

论文真题 区块链作为一种分布式记账技术,目前已经被应用到了资产管理、物联网、医疗管理、政务监管等多个领域。从网络层面来讲,区块链是一个对等网络(Peer to Peer, P2P),网络中的节点地位对等,每个节点都保存完整的账本数据,系统的运行不依赖中心化节点,因此避免了中…

MATLAB基础应用精讲-【数模应用】分层聚类(附python代码实现)

目录 前言 知识储备 层次聚类 1. 算法解读: 2. 步骤和细节: 3. 举例: 4. 算法评价: 5. 算法的变体: 算法原理 基本思想 分层聚类网络的原理 分层聚类网络的优势 分层聚类网络的应用领域 SPSSAU 分层聚类案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果…

Johnson Counter

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 参考代码 描述 请用Verilog实现4位约翰逊计数器&#xff08;扭环形计数器&#xff09;&#xff0c;计数器的循环状态如下。 电路的接口如下图所示。 输入描述&#xff1a; input clk , input …

[氮化镓]Kevin J. Chen组新作—肖特基p-GaN HEMTs正栅ESD机理研究

这篇文章是发表在《IEEE Electron Device Letters》上的一篇关于Schottky型p-GaN栅极高电子迁移率晶体管&#xff08;HEMTs&#xff09;的正向栅极静电放电&#xff08;ESD&#xff09;机理研究的论文。文章由Jiahui Sun等人撰写&#xff0c;使用了基于碳化硅&#xff08;SiC&a…

设计模式探索:观察者模式

1. 观察者模式 1.1 什么是观察者模式 观察者模式用于建立一种对象与对象之间的依赖关系&#xff0c;当一个对象发生改变时将自动通知其他对象&#xff0c;其他对象会相应地作出反应。 在观察者模式中有如下角色&#xff1a; Subject&#xff08;抽象主题/被观察者&#xf…

第11章 规划过程组(二)(11.10制订进度计划)

第11章 规划过程组&#xff08;二&#xff09;11.10制订进度计划&#xff0c;在第三版教材第395~397页&#xff1b;文字图片音频方式 第一个知识点&#xff1a;定义及作用 分析活动顺序、持续时间、资源需求和进度制约因素&#xff0c;创建项目进度模型&#xff0c;从而落实项目…

六、数据可视化—Wordcloud词云(爬虫及数据可视化)

六、数据可视化—Wordcloud词云&#xff08;爬虫及数据可视化&#xff09; 也是一个应用程序 http://amueller.github.io/word_cloud/ Wordcloud词云&#xff0c;在一些知乎&#xff0c;论坛等有这样一些东西&#xff0c;要么做封面&#xff0c;要么做讲解&#xff0c;进行分析…

Java并发/多线程CompleteableFuture详解

目录 CompleteableFuture 创建 获得结果的方法 辅助方法 allOf和anyOf的区别 CompletableFuture 里大约有五十种方法&#xff0c;但是可以进行归类: 变换类 thenApply 消费类 thenAccept 执行操作类 thenRun thenApply/thenAccept/thenRun 结合转化类 thenCombine 结…

浅析Nginx技术:开源高性能Web服务器与反向代理

什么是Nginx&#xff1f; Nginx是一款轻量级、高性能的HTTP和反向代理服务器&#xff0c;也可以用作邮件代理服务器。它最初由俄罗斯的程序员Igor Sysoev在2004年开发&#xff0c;并于2004年首次公开发布。Nginx的主要优势在于其非阻塞的事件驱动架构&#xff0c;能够处理大量并…

python-24-零基础自学python while循环+交互+数据的存储

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版 知识点&#xff1a; 文件处理 with open&#xff08;&#xff09;while 练习内容&#xff1a;10章练习题10-3、10-4、10-5 练习10-3&#xff1a;访客 编写一个程序&#xff0c;提示用户输入名字。用户做…

北森锐途人才竞聘盘点管理测评:高管领导力六大评判标准深度解析万达商管中国绿发等

北森锐途人才管理测评&#xff1a;高管领导力评判标准深度解析 在企业高管的盘点与竞聘测评领域&#xff0c;众多管理人才面临评估自身领导力的挑战。面对能力卓越、职级显赫的同僚&#xff0c;许多管理者感到缺乏一套权威且专业的评价体系。然而&#xff0c;无论是天赋异禀的领…

【回溯 - 1】46. 全排列

46. 全排列 难度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/problems/permutations/description/ 问题描述 给定一个 不含重复数字 的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nu…

ICMP隧道

后台私信找我获取工具 目录 ICMP隧道作用 ICMP隧道转发TCP上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 执行后门木马&#xff0c;本地上线 ICMP隧道转发SOCKS上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 ​执行后…

经常用借呗和花呗对征信有影响吗?

说起支付宝里的花呗和借呗&#xff0c;大伙儿肯定都不陌生&#xff0c;它们俩就像是支付宝里的信用贷款双胞胎&#xff0c;名字相近&#xff0c;性格却大相径庭。现在&#xff0c;这俩兄弟都乖乖地接入了央行的征信大家庭&#xff0c;你的每一次使用&#xff0c;都会被记录得清…