0

0

Linux:使用Syncthing在服务器之间同步文件

看不見的法師

看不見的法師

发布时间:2025-06-19 17:14:19

|

652人浏览过

|

来源于php中文网

原创

syncthing 比 nfs 或 samba 更易于设置和使用,是在需要保持机器之间数据持续同步的情况下,您的不二之选。

您是否考虑过在 Linux 机器之间保持文件和/或文件夹同步?虽然可以使用 Samba 或 NFS 来实现,但这些解决方案并非专为同步设计。通过 Syncthing,您不仅可以设置加密同步选项,还能在计算机、移动设备和服务器之间进行同步。最重要的是,Syncthing 比其他两个选项更易于设置和使用。当您需要保持机器之间的数据处于持续同步状态时,这就是您要走的路。

我将逐步引导您完成在 AlmaLinux 和 Ubuntu Linux 上安装 Syncthing 的过程,以便您可以看到在两者之间同步文件是多么简单。

您需要什么?您只需要运行 AlmaLinux 和 Ubuntu Linux 实例以及一个具有 sudo 权限的用户。当然,您可以使用两个 AlmaLinux 实例、两个 Ubuntu 实例或两个完全不同的发行版。

准备好这些东西后,让我们开始安装 Syncthing。

安装 Syncthing在 AlmaLinux 上安装 Syncthing 需要下载一个文件,解压缩它,然后将一个文件移动到新创建的目录中。以下是具体步骤:

登录到您的 AlmaLinux 机器。 使用以下命令下载最新版本的 Syncthing: curl -s https://api.github.com/repos/syncthing/syncthing/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi - 使用以下命令解压缩文件: tar xvzf syncthing*tar.gz 使用以下命令移动所需文件: sudo mv syncthing-linux*/syncthing /usr/bin 使用以下命令验证安装: syncthing --version Ubuntu 的安装更为简单。只需按照以下步骤操作:

打开终端窗口。 发出命令: sudo apt-get install syncthing -y 等待安装完成。 创建 Systemd 文件要在启用 systemd 的发行版上将 Syncthing 作为服务运行,您必须使用以下命令创建一个 systemd 文件:

sudo nano /etc/systemd/system/syncthing@.service

注意 @ 符号?它在那里,因此您可以以用户身份启动 Syncthing。 在该文件中,粘贴以下内容:

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target
<p>[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4</p><h1>Hardening</h1><p>ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true</p><p>[Install]
WantedBy=multi-user.target

保存并关闭文件。 使用以下命令重新加载 systemd 守护程序:

sudo systemctl daemon-reload

假设您想以用户“jack”身份运行 Syncthing。启动和启用该服务的命令是:

sudo systemctl enable --now syncthing@jack

在 AlmaLinux 和 Ubuntu 上执行相同的操作。

允许 Syncthing 通过防火墙由于我们使用的是两个不同的发行版,因此您需要使用两种不同的防火墙工具。在 AlmaLinux 上,我们将使用以下命令打开防火墙端口:

sudo firewall-cmd --zone=public --add-service=syncthing --permanent
sudo firewall-cmd --zone=public --add-service=syncthing-gui --permanent
sudo firewall-cmd --reload

对于 Ubuntu,可以使用以下命令打开防火墙:

sudo ufw allow syncthing
sudo ufw allow syncthing-gui

配置 Syncthing使用以下命令打开 Syncthing 配置文件:

Imagine By Magic Studio
Imagine By Magic Studio

AI图片生成器,用文字制作图片

下载
sudo nano ~/.local/state/syncthing/config.xml

在该文件中,找到以下部分: 将 tls="false" 更改为 tls="true" 并确保地址部分配置为托管机器的 IP 地址。完成后,保存并关闭文件。

使用以下命令重新启动 Syncthing 服务:

sudo systemctl restart syncthing@jack

访问 Syncthing Web UI打开 Web 浏览器并将其指向 <a href="https://www.php.cn/link/63737972b84c4b64087649e2b45eba01">https://www.php.cn/link/63737972b84c4b64087649e2b45eba01</a>(其中 SERVER 是托管机器的 IP 地址)。在主页面上,您将收到警告,指出您需要设置远程访问密码。单击“设置”(图 1)来执行此操作。在“设置”弹出窗口中,单击“GUI”选项卡,然后设置用户名和密码。

Linux:使用Syncthing在服务器之间同步文件图 1:Syncthing 设置按钮(右下角)。

当你完成时点击保存。这将把你带到登录页面,你需要输入你刚刚设置的用户名和密码。

连接机器现在,您已经在两台机器上启动并运行了 Syncthing,现在是时候连接它们了。在一台机器上,进入 Syncthing 仪表盘,点击“操作”,然后点击“显示 ID”。你会看到一个二维码和一长串随机字符串。复制该字符串,然后移动到另一台机器。在第二台机器上,在“远程设备”部分,点击“添加设备”。在“设备 ID”部分,粘贴第一台机器的 ID,给设备起一个名字,然后点击“保存”。

进入“共享”选项卡,在“未共享文件夹”部分,勾选“默认文件夹”选项,然后勾选“自动接受”选项(图 2)。

Linux:使用Syncthing在服务器之间同步文件图 2:向 Syncthing 添加第二个节点。

点击“保存”,然后刷新仪表盘。连接的机器现在应该被列为“最新”。

确保您对两台机器都执行了这个过程。

Syncthing 的默认文件夹是 ~/Sync。你在其中一台机器上添加到该文件夹的任何文件或文件夹都将自动与另一台机器同步。你可以通过在一台机器上发出以下命令来测试:

touch ~/Sync/testing

如果你检查第二台机器,你会发现 testing 文件已经同步。

这就是在 Syncthing 的帮助下同步机器的全部内容。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

455

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

183

2023.10.30

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1567

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

649

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1228

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1204

2024.04.29

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Linux网络安全之防火墙技术汇总
Linux网络安全之防火墙技术汇总

共31课时 | 3.1万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.6万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号