我是如何使用 Syncthing 提升工作效率的

Syncthing 是一个安全的去中心化的文件共享工具,类似 BitTorrent Sync,不过这款产品是开源的,完全免费。具体工作原理有点类似早期的 BT 下载,需要一个发现服务器,从而让你的设备们相互建立连接。好在发现服务器在程序安装好以后就会默认配置官方的发现服务器,通常使用就已经足够了,当然你也可以自己搭建一个私有的发现服务器。

网上很多人说 Syncthing 是一个私人网盘,其实我不太认同。这款软件本身不会存储你任何文件,也不会上传文件到任何第三方的服务器。它做的只是帮助你把文件同步到不同设备上而已。当然,同步过程中,至少要有两台设备都是开机状态。Syncthing 使用 TLS 加密,避免中间人窃取数据。

此外 Syncthing 同步速度特别快,特别是在局域网中,这体验是iCloud、Dropbox等各种网盘不能比的。同时如果有多台设备同时参与同步,文件共享的速度甚至会比点对点直接发文件更快,有点类似 BT 下载。

Syncthing 支持Mac,Windows,Linux等平台。具体安装使用说明可以参考 Syncthing官网,这里就不过多赘述。

开始之前先说说我设备的情况,我有两台 Macbook,家里有的一台 Windows 台式机,和一台常年开机的Linux工控主机。通常,我会在公司放一台 MacBook,在家会用 Windows 台式机,偶尔会用另外一台 MacBook。

同步桌面以及重要的工作文件: 通常如果都是 Mac,可以开 iCloud 同步多台 Mac 之间的同步文件。但是对于跨平台就无能为力了。所以这时候可以有 Syncthing 出场了。我关掉了所有 iCloud 的文件同步,首先用 Syncthing 同步了三台电脑的桌面以及一个用来存放各种工作文件的文件夹。因为我有个习惯,当前的工作文件会放在桌面上。这样一来,三台电脑桌面就可以保持完全同步,下班回家也不用带电脑回去,未完成的工作,到家了可以继续。这里有一个很重要的点,就是那台Linux工控主机,它也参与了文件共享,充当了一个文件中转的作用,这样即使家里其他电脑没有开机,也不用担心文件无法同步。

同步常用软件的配置: 比如 VIM、ZSH、TMUX、Clash,甚至现在写博客用的 Gridea 工作文件夹等等,这些工具在使用过程中,当遇到问题的时候,顺手修改配置,如果多台设备需要挨个修改配置也是非常麻烦,甚至修改多了以后,不同电脑的软件配置会完全不一样。当有了 Syncthing 以后,一切都变得那么自然,所有电脑都步调一致。当然,如果都是 Mac,你可以同步整个个人文件夹,这样会来的更加简单粗暴。

与好基友共享一些你懂的资源: 这个不能提升工作效率!

下面说说 Syncthing 在使用过程中的小技巧。

文件忽略: Syncthing 提供了一个 .stignore 功能,类似于 .gitignore, 但是这个 .stignore 有一个问题,Syncthing 本身并不会同步这个文件,导致多台设备的文件忽略都要单独配置,更蛋疼的地方在于,一旦修改了这个配置,又要重复以上的工作。针对这个问题,可以建一个 .stglobalignore 文件,把具体的忽略信息写到 .stglobalignore 里面,然后如下图所示的配置即可。

Mac Linux Windows 之间共享的常用 .stglobalignore :

//---Mac-specific---//
//Mac Comments, Finder Windows Size, Tags, ...
(?d).DS_Store
.DocumentRevisions-V100
//Mac Folder Icons, which will not sync to Windows
(?d)Icon*
.Spotlight-V100
.TemporaryItems
.Trashes
.fseventsd
//Mac Flag to enable translation of Folder Names
(?d).localized
//Mac Temporary iCloud files while synching
.iCloud
//Mac OS Metadata on Windows or Linux filesystems
(?d)._*

//---Windows-Specific---//
(?d)desktop.ini
(?d)Thumbs.db
(?d)$RECYCLE.BIN
*.lnk

//---Linux-specific---//
.Trash-*

//---QNAP-specific---//
(?d)[email protected]__thumb
(?d).AppleDB

//---Synology-specific---//
(?d)@eaDir

//---Application-specific---//
//-Syncthing
(?d).stignore
(?d).stfolder
//-vi(m)
(?d)*.*.sw[a-p] # Thankys to Tom Hale!
//-Dropbox
.dropbox
.dropbox.attr
//-Microsoft Office temporary files/lock files
(?d)~*
//-KDE
.directory

//---OTHER---//
Microsoft-Benutzerdaten
Notizbuch von Wolf.url
Outlook-Dateien
RDC Connections
.parallels-vm-directory
Default.rdp