笔者作为一个 IT 销售人员,除了要会推销自己的产品,处理报价、合同等商务工作,还得熟悉方案,甚至有时候还要着手给客户写技术方案,因此平时手头有大量的文档处理,工作时间一般电脑不离身。销售有个好就是时间比较自由,换言之就是任何时间都在休息,也都在上班!

所以我很多时候在家里也会处理一些文档类工作,比方晚上和周末。以前是怎么干的呢?1)下班的时候把工作电脑文件通过微信、QQ 发到云上;2)拷到 U 盘里。然后做完之后再同步回去,很不方便。

在 Syncthing 之前,我曾试过百度云、Onedrive、SyncToy 等文件同步应用,它们有的速度慢,有的占用资源高,有的得付费,总之都觉得不太好。Syncthing 这样一款开源、轻量级、速度贼快的点到点文件同步系统可以说甚合我意,它支持市面上大多数操作系统如 Windows/MAC OS/Android/Linux 等,它让你的数据在两个终端间通过加密方式传输,同时也不会把存放在别的地方,很安全。而且这是一款超过 20 年的开源软件,生命周期很长,所以针对它的第三方拓展也比较多。

使用 Syncthing 搭建个人同步服务器

Syncthing 安装

Windows 安装 Syncthing 非常简单,直接到官网下载最新版解压后运行里面的主程序 syncthing.exe,弹出来的批处理窗口就是它的主程序了。经过几秒的初始化系统会用你默认浏览器打开http://127.0.0.1:8384,这就是 Syncthing 的操做和管理后台了。


如果你仅用于 Windows 间的文件同步和传送,那就在多台电脑间安装即可愉快食用。不瞒您说,我这博客可是用的马云家 100M 带宽的 ECS 啊,不做个文件同步服务器有点可惜的,于是下面介绍 CentOS 下的安装方法。

# 下载syncthing,可以暂时不用管版本,等安装好打开之后会自动检查更新,1.2.0 是截至 20290710 的最新版本
wget https://github.com/syncthing/syncthing/releases/download/v1.2.0/syncthing-linux-amd64-v1.2.0.tar.gz
# 解压下载下来的压缩包
tar xzvf syncthing-linux-amd64-v1.2.0.tar.gz
# 进入解压出来的文件夹
cd syncthing-linux-amd64-v1.2.0
# 将syncthing二进制程序复制到/usr/local/bin目录,然后就可以通过“syncthing”命令运行syncthing了
cp syncthing /usr/local/bin
# 将syncthing的其他文件删除
rm -rf syncthing*

至此 Syncthing 的主文件已经安装好了,接下来开放端口。Syncthing 默认监听以下几个端口:

22000 (TCP) --节点访问端口
8384 (TCP) --Web控制端口
21027 (UDP)
44647 (UDP)
37269 (UDP)

我是自己使用,只打开前两个就行了,开放防火墙端口请根据自己服务器的情况来设置。阿里云需要到后台区设置,定位到云服务器-实例-管理-本实例安全组-配置规则-添加安全组规则,然后参考如下配置:

使用 Syncthing 搭建个人同步服务器

授权对象建议写成 0.0.0.0/0,即是允许所有人访问

开放端口之后直接输入syncthing运行它,初始化的行应该跟 Windows 版是一样的,咱们也不用管它,CTRL + C叫停它。修改生成的配置文件,定位到/root(你的当前用户名)/.config/syncthing/config.xml,用VIM工具或WinScp之类的 FTP 将127.0.0.1:8384改成 0.0.0.0:8384 即可,也可以直接使用命令:

sed -i 's/127.0.0.1/0.0.0.0/g' '/root/.config/syncthing/config.xml'

至此 Linux 版本的 Syncthing 已经搭建完成,输入syncthing运行它。然后就可以在浏览器输入你的服务器IP:8384访问管理它了。

Syncthing 使用

建议将服务器端的面板设置个管理密码,依次定位到操作-设置-图形界面修改。系统咱们已经建好了,如何实现文件同步呢?主面板只三块清晰内容,分别是“文件夹”、“当前设备”、“远程设备”,作为本地和远程设备的一览。事实上 Syncthing 是通过唯一识别码来进行连接和文件传输的,点击“添加远程设备”,粘贴对面服务器/PC 的设备ID后发起连接申请,对面确认后即可选择文件/文件夹同步了。

使用 Syncthing 搭建个人同步服务器

具体到文件同步管理,这里面有个功能深得我心。它的“忽略模式”允许用户排除主文件夹下不想被同步的文件夹或内容,能非常灵活的管理和设置,对于我这种安良付费的 ECS,如果随便把每个文件都上传,一则费时间,二则费钱。


如果你的两个同步服务器是处于局域网内普通电脑,那么系统会进行网络寻址,数据流不会经过路由器直接在局域网内同步。如果两个电脑没在一个局域网也没有对应的公网 IP 了,Syncthing 还能通过它分布全球的中继服务器进行数据同步——只不过速度稍慢了。

如果你像我一样,有自己的云服务器,建议关闭设置里边的“全球发现”和“NAT 遍历”,这样它就不会 P2P 传输了~

使用 Syncthing 搭建个人同步服务器

以上是它的全球用传输热点图

Syncthing 扩展

以上完成了 Syncthing 的安装和使用,这样一般会占用你系统 50MB 左右的内存,可以说相当轻量级了。不过,程序在启用的时候系统任务栏会常驻一个程序,界面也比较简陋,于是有的朋友开发了对应的 GUI,把它弄到了系统托盘。我试了一下觉得没啥必要。需要的朋友可以看看这两个链接:

  • https://github.com/sieren/QSyncthingTray
  • https://github.com/canton7/SyncTrayzor

移动端支持

Syncthing 本身是支持 Android 的,但是我并不希望文件实时同步到手机,很耗电对不对?不过毕竟有需要的时候,怎么办呢?安装个 Kodexploer 在手机上能对单独文件或目录浏览、下载、分享就行啦——建议你:保持 Syncthing 和 Kodexploer 的文件目录一致比较省事儿。

使用 Syncthing 搭建个人同步服务器

Kodexplorer 是个相当强大的文件管理工具,可以文件外链共享、预览、编辑等

下一步工作

在查询相关资料的时候,了解到斐讯 N1 这么个强大的玩意儿,于是……已经买了 N1 盒子准备折腾,初步打算:

  • 在 N1 上刷 Debian,安装 OMV(OpenMediaVault)作为小型家用 NAS 使用
  • 在以上基础上安装 LNMP,可以跑 WordPress
  • 内网穿透,绑定域名
  • 安装 Syncthing,不再同步文件到阿里云
  • …  …