https://mp.weixin.qq.com/s/rjViZNai1nhtVt8VaD_VQQ
开篇词
在企业级内网环境中,我们经常面临一个痛点:服务器完全隔离于互联网,但又需要在这几台机器之间实时同步文件(如备份日志、同步静态资源或分发配置)。
传统的 rsync 定时任务不够实时,NFS 挂载在网络波动时容易卡死。今天,我们来介绍一款开源神器 —— Syncthing。它无需中心服务器,支持 P2P 传输,且完全开源免费。
本文将演示如何在 完全离线 的 Linux 环境下,部署并配置两台服务器的双向同步。
准备工作
• 服务器 A (Master): IP 192.168.1.100 (示例)
• 服务器 B (Slave): IP 192.168.1.101 (示例)
• 系统环境: CentOS 7 / Ubuntu 20.04 (通用)
• 工具: 一台能上网的电脑(用于下载安装包),U盘或 SCP 工具。
null
第一步:获取离线安装包
由于服务器无法上网,我们需要先在有网的电脑上下载 Syncthing 的二进制文件。
null
- 访问 GitHub 发布页:https://github.com/syncthing/syncthing/releases 或者官网 https://syncthing.net/downloads/
- 下载对应架构的 Linux 版本(通常是 syncthing-linux-amd64-v2.xx.x.tar.gz)。
- 通过 SCP 或 U 盘将压缩包上传至两台服务器的 /tmp 目录。
第二步:安装与部署
(以下操作在两台服务器上均需执行)
我们将 Syncthing 安装到 /usr/local/bin 以便全局调用。
# 1. 解压安装包
cd /tmp
tar -zxvf syncthing-linux-amd64-*.tar.gz
# 2. 进入解压后的目录
cd syncthing-linux-amd64-*
# 3. 复制二进制文件到系统路径
sudo cp syncthing /usr/local/bin/
# 4. 验证安装
syncthing --version
如果看到版本号输出,说明二进制文件已就位。
第三步:配置 Systemd 后台服务
为了让 Syncthing 开机自启并在后台运行,我们需要创建一个 Systemd 服务文件。
建议创建一个专用用户运行(如 syncthing),也可以直接用 root(生产环境请注意权限)。这里演示使用 root 用户。
新建文件 /etc/systemd/system/syncthing.service:
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=https://docs.syncthing.net/
After=network.target
[Service]
# 指定运行用户,如果是非 root 用户请修改此处
User=root
# 关键:指定配置文件和数据目录,防止乱放
ExecStart=/usr/local/bin/syncthing -no-browser -home=/etc/syncthing
Restart=on-failure
SuccessExitStatus=3 4
[Install]
WantedBy=multi-user.target
启动服务:
# 创建配置目录
mkdir -p /etc/syncthing
# 重新加载服务配置
systemctl daemon-reload
# 启动并设置开机自启
systemctl enable syncthing
systemctl start syncthing
# 查看状态
systemctl status syncthing
第四步:修改配置以允许远程访问