笔者作为一个 IT 销售人员,除了要会推销自己的产品,处理报价、合同等商务工作,还得熟悉方案,甚至有时候还要着手给客户写技术方案,因此平时手头有大量的文档处理,工作时间一般电脑不离身。销售有个好就是时间比较自由,换言之就是任何时间都在休息,也都在上班!
所以我很多时候在家里也会处理一些文档类工作,比方晚上和周末。以前是怎么干的呢?1)下班的时候把工作电脑文件通过微信、QQ 发到云上;2)拷到 U 盘里。然后做完之后再同步回去,很不方便。
在 Syncthing 之前,我曾试过百度云、Onedrive、SyncToy 等文件同步应用,它们有的速度慢,有的占用资源高,有的得付费,总之都觉得不太好。Syncthing 这样一款开源、轻量级、速度贼快的点到点文件同步系统可以说甚合我意,它支持市面上大多数操作系统如 Windows/MAC OS/Android/Linux 等,它让你的数据在两个终端间通过加密方式传输,同时也不会把存放在别的地方,很安全。而且这是一款超过 20 年的开源软件,生命周期很长,所以针对它的第三方拓展也比较多。
1. Syncthing 安装
Windows 安装 Syncthing 非常简单,直接到官网下载最新版解压后运行里面的主程序 syncthing.exe
,弹出来的批处理窗口就是它的主程序了。经过几秒的初始化系统会用你默认浏览器打开http://127.0.0.1:8384
,这就是 Syncthing 的操做和管理后台了。
如果你仅用于 Windows 间的文件同步和传送,那就在多台电脑间安装即可愉快食用。不瞒您说,我这博客可是用的马云家 100M 带宽的 ECS 啊,不做个文件同步服务器有点可惜的,于是下面介绍 CentOS 下的安装方法(其他 Linux 也适用)。注意,本例实用root
用户直接安装运行,建议实用其他低权限用户安装。
# 下载 syncthing,可以暂时不用管版本,等安装好打开之后会自动检查更新,1.27.8 是截至 2024/06/09 的最新版本
wget https://github.com/syncthing/syncthing/releases/download/v1.27.8/syncthing-linux-amd64-v1.27.8.tar.gz
# 解压下载下来的压缩包
tar xzvf syncthing-linux-amd64-v1.27.9.tar.gz
# 进入解压出来的文件夹
cd syncthing-linux-amd64-v1.27.8
# 将 syncthing 二进制程序复制到/usr/local/bin 目录,然后就可以通过“syncthing”命令运行 syncthing 了
cp syncthing /usr/local/bin
# 将除 syncthing 运行文件之外的的其他说明文件删除
rm -rf syncthing*
# 运行主程序
syncthing
对于这一步,因为众所周知的网络原因,或者你命令行不太熟悉,可以直接将该压缩包下载到咱电脑本地,解压后将其中的主程序即syncthing
通过 ftp 拖到/usr/local/bin
目录,再运行它初始化也是可以的……至此 Syncthing 的主文件已经安装好了,接下来开放端口。Syncthing 默认监听以下几个端口:
22000 (TCP) --节点访问端口
8384 (TCP) --Web 控制端口
21027 (UDP)
44647 (UDP)
37269 (UDP)
我是自己使用,只打开前两个就行了,开放防火墙端口请根据自己服务器的情况来设置。阿里云需要到后台区设置,定位到云服务器-实例-管理-本实例安全组-配置规则-添加安全组规则
,然后参考如下配置:
开放端口之后直接在命令行输入syncthing
运行它让主程序初始化生成相关配置文件,片刻后按Ctrl+c
叫停它。接着我们手动修改生成的配置文件,定位到/root/.config/syncthing/config.xml
或者/root/.local/state/syncthing/config.xml
,将其中的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'
sed -i 's/127.0.0.1/0.0.0.0/g' '/root/.local/state/syncthing/config.xml
'
至此 Linux 版本的 Syncthing 已经搭建完成。再次在命令行输入syncthing
运行它,然后就可以在浏览器输入你的服务器 IP:8384
访问用户界面管理它了。
2. Syncthing 使用
建议将服务器端的面板设置个管理密码,依次定位到操作-设置-图形界面修改。系统咱们已经建好了,如何实现文件同步呢?主面板只三块清晰内容,分别是“文件夹”、“当前设备”、“远程设备”,作为本地和远程设备的一览。事实上 Syncthing 是通过唯一识别码来进行连接和文件传输的,点击“添加远程设备”,粘贴对面服务器/PC 的设备 ID 后发起连接申请,对面确认后即可选择文件/文件夹同步了。
具体到文件同步管理,这里面有个功能深得我心。它的“忽略模式”允许用户排除主文件夹下不想被同步的文件夹或内容,能非常灵活的管理和设置,对于我这种安良付费的 ECS,如果随便把每个文件都上传,一则费时间,二则费钱。
如果你的两个同步服务器是处于局域网内普通电脑,那么系统会进行网络寻址,数据流不会经过路由器直接在局域网内同步。如果两个电脑没在一个局域网也没有对应的公网地址,Syncthing 还能通过它分布全球的中继服务器进行数据同步——只不过速度稍慢了。
如果你像我一样,有自己的云服务器,建议关闭设置里边的“全球发现”和“NAT 遍历”,这样它就不会 P2P 传输了~
3. Syncthing 扩展
以上完成了 Syncthing 的安装和使用,这样一般会占用你系统 50MB 左右的内存,可以说相当轻量级了。不过,程序在启用的时候系统任务栏会常驻一个程序,界面也比较简陋,于是有的朋友开发了对应的 GUI,把它弄到了系统托盘。我试了一下觉得没啥必要。需要的朋友可以看看这两个链接:
- https://github.com/sieren/QSyncthingTray
- https://github.com/canton7/SyncTrayzor
4. Syncthing 移动端支持
Syncthing 本身是支持 Android 的,但是我并不希望文件实时同步到手机,很耗电对不对?不过毕竟有需要的时候,怎么办呢?安装个 Kodexploer 在手机上能对单独文件或目录浏览、下载、分享就行啦——建议你:保持 Syncthing 和 Kodexploer 的文件目录一致比较省事儿。
5. 下一步工作
在查询相关资料的时候,了解到斐讯 N1 这么个强大的玩意儿,于是……已经买了 N1 盒子准备折腾,初步打算:
- 在 N1 上刷 Debian,安装 OMV(OpenMediaVault)作为小型家用 Nas 使用
- 在以上基础上安装 Lnmp,可以跑 WordPress
- 内网穿透,绑定域名
- 安装 Syncthing,不再同步文件到阿里云
- … …
[…] 在探索 Syncthing 的时候,偶然听有人建议说让我不要把数据存储放阿里云了,不如直接用斐讯 N1 做个软路由,数据放家里省钱省事儿…于是我开始去了解:斐讯 N1 是个什么鬼?原来 N1 开发的本源是作为一个挖矿机,因为斐讯翻车成了众人的闲置物品。在大神手里,垃圾都能变废为宝,况且 N1 盒子本身具有良好的性能和外观,还能轻松定制化,于是被广大爱好者折腾成了电视盒子、软路由、NAS、游戏机等等。 […]