使用 syncthing 同步多台设备的文件

又来折腾 syncthing 了,毕竟买了个 10T 的大硬盘,得好好利用起来才行。

syncthing 是一个跨平台、开源的数据同步工具。它可以让你的文件夹,在多台设备保持同步。

Syncthing 支持平台

Syncthing 官方支持 Linux、Windows、OS X、FreeBSD、Solaris 等系统,并且有第三方的 iOSAndroid 应用。

所以利用它,我可以让我手机(Android)的文件,同步到电脑(macOS,Windows)。同时它还可以在 Linux 上用,所以我可以把文件同步到服务器上,也可以同步到刷了小钢炮系统的斐讯 N1 上(系统自带 syncthing)。甚至我可以这些设备全部都使用,确保我的某个文件夹,同步到所有的设备上。(虽然现在没有重要到这样的文件……)

总之,它是一款很强大的软件,并且还免费开源,很了不起。其实我一年半之前就折腾过了 之前的文章 ,不过说来惭愧,当时折腾了一阵子,就没有再使用它了。因为当时的版本是 0.14 ,很多功能还不完善,并且在 Mac 上面,要使用只能二进制执行文件,并没有做出一个 app ,感觉不太方便。不过我的手机上面一直都有保留着它,即使不怎么使用了。

现在的变化

时间过去这么久,这个应用现在更新了很多次,变得越来越好用了。例如:

  1. 有 docker 版本,Linux 上安装起来更加方便
  2. Windows 和 macOS 都有了 GUI 版本,使用门槛降低
  3. 同步的时候可以选择 仅发送,(而不接收,可以防止对方误操作而导致己方的文件也丢失)

可能其它的功能我还没有用到,所以并不能更好地体验这个应用,不过就上面这几点,我就挺满意了。

开始安装

在其官网: syncthing.net 上面可以看到下载链接,不过都是放在 GitHub 上的,可能得用代理才能下载。

安卓手机可以去 Google play 搜索。

我这里主要介绍用 docker 将它装在服务器上面。

docker run \
--name=syncthing \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-e UMASK_SET=022 \
-p 8384:8384 \
-p 22000:22000 \
-p 21027:21027/udp \
-v /home/syncthing/appdata/config:/config \
-v /home/syncthing/data1:/data1 \
-v /home/syncthing/data2:/data2 \
--restart unless-stopped \
linuxserver/syncthing

这里开放的 webUI 端口为 8384,所以启动成功后到浏览器输入 IP:8384 即可进入管理界面。因为我们是在服务器上使用,一定要设置用户,不然别人随便输入你的 IP:8384 就可以来管理你的设备了,很不安全。如果是在家里使用的话,例如群晖,或者和我一样使用 小钢炮 ,那不用设置也没多大问题。

添加用户

这里的添加用户,可以理解成和微信的添加好友相似。两台设备需要添加好友了才能互相发送文件,而要添加可以使用 二维码 ,也可以使用 ID 。这里我以服务器作为被添加的设备。

点击右上角的 【操作】➡️【显示 ID 】即可看到。如果手机想添加这台设备,打开应用后,向左滑来到设备这里,点右上角的 ➕ ,然后点击二维码就可以扫码了。如果是电脑,就只能用 ID 的方式来添加了。点右下角的【添加远程设备】然后输入服务器的 ID 即可。

同步文件

这里我以手机文件同步到服务器为例。在手机上向右滑来到左边的 文件夹 这里。点击右上角的 ➕ 。文件夹标签可以随便起,目录选择要同步的文件夹,要同步到哪台设备,就把那台设备的开关打开。这样手机端的设置就完成了。

然后过一会服务器的就会收到通知,我们可以在浏览器的 webUI 里看到,提示某某人分享一个某某文件夹给你,是否接受。接受时可以设置要把这个文件夹放在哪里。

这样设置好后,就只需要等待了,手机会慢慢地把文件上传到服务器里。因为这个应用是使用 端–端 加密的,所以不用怕被中间人知道你在传输什么,不过可能也是因为这个原因吧,感觉传输的速度不是那么快,最高好像只能达到 2M/s 。

当然这个过程也是可以反过来的,把服务器的文件同步到手机上。

我本来是打算尝试一下,把服务器里 qbittorrent 下载好的文件,利用这个应用取回手机。但是,速度实在太慢了,虽然最大时能有 2M/s ,但是大部分时间都是几百 k 的速度。如果设置成服务器下载完,让它同步到我的小钢炮里面就还行,毕竟两台设备都是 24 小时开机。但是手机就没必要了,非要把文件取回手机,我还是选择开启一个临时的 HTTP 服务。

暂时我的使用方案

我目前的使用有两个

  1. 把手机的微信下载内容,同步到小钢炮。
  2. 把手机里用 vue 这个软件拍的视频,同步到电脑(用于在电脑剪辑)

以后想到其它玩法再来更新。