Syncthing 教程:多设备文件实时同步,告别手动备份

zheng头像
zheng 2026-07-26 13:34
楼主

为什么要用 Syncthing?

试想一个场景:你在阿里云服务器上跑着博客、小程序后端、各种 Docker 容器,每次改了代码都要 scp 上传,或者写个备份脚本定期 rsync。麻烦不说,还容易忘了备份,真到服务器挂了那天欲哭无泪。

Syncthing 解决了这个问题:文件在哪改,瞬间同步到另一台设备。不需要手动操作,不需要定时任务,完全静默运行。而且它是开源、免费、端到端加密的,文件不经过任何第三方服务器。

核心概念

Syncthing 的精髓就三个词:设备 → 文件夹 → 共享

  • 设备:每台安装了 Syncthing 的电脑/手机都有一个唯一的设备 ID,像一个身份证号。
  • 文件夹:你指定哪些目录要同步,每个文件夹可以独立配置。
  • 共享:一个文件夹可以只和部分设备共享,A↔B 同步的项目,C 完全看不到。

这意味着你可以灵活控制:公司文件只同步到笔记本,个人照片同步到家里 NAS,互不干扰。

安装 Syncthing

Linux 服务器(Debian/Ubuntu)

# 下载最新版本(以 v2.1.2 为例)
curl -sL "https://github.com/syncthing/syncthing/releases/download/v2.1.2/syncthing-linux-amd64-v2.1.2.tar.gz" -o /tmp/st.tar.gz
tar xzf /tmp/st.tar.gz -C /tmp
cp /tmp/syncthing-linux-amd64-v2.1.2/syncthing /usr/bin/syncthing

# 创建 systemd 服务实现开机自启
cat > /etc/systemd/system/syncthing.service << 'EOF'
[Unit]
Description=Syncthing
After=network.target

[Service]
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --home=/var/lib/syncthing
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable syncthing --now

注意:国内服务器可能无法直连 GitHub,可以先把安装包下载到本地再用 scp 传上去,或者用镜像站。

macOS

# 下载并解压到 ~/bin/
curl -sL "https://github.com/syncthing/syncthing/releases/download/v2.1.2/syncthing-macos-arm64-v2.1.2.zip" -o /tmp/st.zip
unzip /tmp/st.zip -d ~/bin/

# 创建 LaunchAgent 实现开机自启
cat > ~/Library/LaunchAgents/com.syncthing.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "...">
<plist version="1.0">
<dict>
    <key>Label</key><string>com.syncthing</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/你的用户名/bin/syncthing</string>
        <string>serve</string>
        <string>--no-browser</string>
        <string>--no-restart</string>
    </array>
    <key>RunAtLoad</key><true/>
    <key>KeepAlive</key><true/>
</dict>
</plist>
EOF

launchctl load ~/Library/LaunchAgents/com.syncthing.plist

Android

Google Play 搜索「Syncthing-Fork」安装即可,Material Design 界面,操作直观。

配置设备互联

第一步:获取设备 ID

每台设备启动后都会生成一个唯一 ID。查看方式:

  • Linux/macOS:打开 Web 管理界面(默认 http://127.0.0.1:8384),右上角「操作 → 显示 ID」
  • Android:App 首页直接显示设备 ID 和二维码

第二步:添加远程设备

在 Mac 的 Web 界面中,点击右下角「添加远程设备」,输入服务器的设备 ID,设备名随便填。服务器端会自动弹出一个确认框,点「添加设备」即可。

注意:两端都要互相添加对方。Mac 上加服务器,服务器上加 Mac。

第三步:创建共享文件夹

比如要把服务器的 /var/www 同步到 Mac 的 /Volumes/298G/server-sync

  1. 服务器端:点「添加文件夹」→ 路径填 /var/www → 在「共享」标签里勾上 Mac 设备
  2. Mac 端:会自动弹出提示「xxx 想和你共享文件夹 server-sync」→ 点「添加」,路径填你本地想存的目录

配置完成后,Syncthing 会立即开始扫描和同步。你可以在 Web 界面实时看到传输进度。

实战案例:我的博客服务器同步方案

我的博客跑在阿里云上(Typecho + SQLite),之前靠 crontab 定时 rsync 备份到本地硬盘,有两个问题:

  1. 不是实时的:间隔太短浪费资源,太长可能丢失数据
  2. 单向的:本地改了文件还得手动上传

换成 Syncthing 后:

  • 服务器上改了主题 CSS,保存后1-2 秒内自动同步到本地
  • 本地下好了一个新插件文件夹,拖进去瞬间出现在服务器上
  • 手机装 Syncthing-Fork 后,可以新建一个独立文件夹只跟电脑同步,服务器完全不知道

关机重启也不用管,两端都设了开机自启,完全无感

常见问题

Q: 连接不上怎么办?

检查几点:①两端 Syncthing 版本是否一致(大版本号必须相同);②防火墙/安全组是否放了 Syncthing 端口(默认 22000/TCP + 21027/UDP);③国内服务器如果连不上全球发现服务器,可以通过 relay 中继连接,Syncthing 会自动处理。

Q: 对网络要求高吗?

不高。Syncthing 是 P2P 传输,文件直接从 A 到 B,不经过中转服务器。局域网内走内网速度,跨网络走 relay 中继。带宽取决于你的网络。

Q: 手机同步耗电吗?

Syncthing-Fork 默认只在充电 + WiFi 时同步,可以按需调整。日常使用几乎无感。

Q: 有文件冲突怎么办?

如果两台设备同时改了同一个文件,Syncthing 会保留一份冲突副本,文件名后面加 .sync-conflict-日期-时间,不会静默覆盖。

写在最后

Syncthing 属于那种「装了就忘不掉」的工具。它不会弹通知、不需要你手动操作、不占用注意力,但它确确实实在帮你做事。从此服务器文件随时能丢——因为你本地永远有一份实时同步的副本。

开源地址:github.com/syncthing/syncthing:

此内容需要评论后才能查看哦 (*^▽^*)

FRP 内网穿透进阶:STCP 安全加密隧道 Tmux 终端复用器:SSH 断线任务不中断

最新回复

暂无回复,来说两句吧

发表评论

站点总访问量:6298