背景
在现在网盘到处限速的情况下,而且还时不时的删资源,搞不好还能关停(@360 云盘),最重要的还是隐私问题,你把数据交给云盘,它就真的不会看看里面是啥内容吗?
之前尝试过 Nextcloud,可惜这个体验总感觉差这么一点,它用的是传递的用户名密码方案,总感觉安全差点意思。
功夫不负有心人,最近发现了一个工具 Syncthing,这个工具非常的优秀
Syncthing 有很多的优点
- 同步速度快,支持文件系统监听,一有修改立刻同步,并且速度可以直接打满带宽。
- 数据加密传输,传输数据前需要各个节点确认,安全性很高
- 分布式技术,支持部分节点故障的情况下,剩余节点正常同步
- 支持文件版本管理,找回误删除的数据
- 支持配置忽略模式,不想同步的文件不同步
- 部署方便,因为是用 Go 编写的,只有一个二进制,并支持的多个平台部分(Windows,Linux,Mac,Android)
不过也有一些缺点
- 当对一个文件夹重命名时,同步端会先把原文件夹删除再下载新重命名的文件夹,效率有点慢
- iPhone 没有对应的免费客户端
- 同步使用 NAS 下 SMB 挂载的目录时,如果直接通过 NAS 添加文件,syncthing 会感知不到文件变化就不同步了。另外也没有带同步端没有强制同步的按钮,不能手动同步。
- 不支持懒加载模式,就是需要的时候再下载同步。
使用
下面就介绍一下下面的这个使用场景怎么部署。
小明在家中有一台华为家庭存储,一台在家中长期运行的 Linux 主机,并且还有一台 Mac 笔记本电脑。
他有两个使用场景
- Mac 修改的内容能够随时备份到家中的家庭存储中,并且当误删除文件的时候,能通过家庭存储找回数据。
- 将家庭存储的部分资源(如通过迅雷下载的电影)同步到 Mac 中
华为家庭存储设置
华为 NAS 先开启 SMB,设置用户名密码,这里假设用户名 kitty 密码 12345 家庭存储的 IP 是192.168.1.2
Linux 主机设置
这里我假设你是通过你的 Mac 电脑通过 SSH 远程访问的 Linux 主机,毕竟长期运行的 Linux 一般也用不着屏幕。
- 使用 Mount 命令挂载 SMB 到本地的一个目录
1 | $ sudo mount -t cifs -o rw,file_mode=0644,dir_mode=0755,username=kitty //192.168.1.2/<这里换成华为用户名> ~/MyNAS |
- 在~/MyNAS 下面创建一个叫 Sync 的目录
- 从https://syncthing.net/网站上将 Linux 版本的 syncthing 下载下来,二进制复制到/usr/local/bin
- 直接运行
./syncthing
- Syncthing 会默认监听本地的 8384 端口,这里使用 ssh 命令将这个服务转发到 Mac 上来
1 | $ ssh -L 18384:localhost:8384 用户名@Linux的IP |
然后就可以在电脑上的http://localhost:18384访问 syncthing 的控制界面了。
- 不过这里的 Default Folder 对应的目录还是
/Sync, 我们先直接将这个移除掉,改成保存路径/MyNAS/Sync
点击
然后按照下面的截图中这样写就行了,注意文件夹 ID 最好写成 default,不然跟其他设备同步的时候会麻烦一点。
- 因为 Syncthing 对于 NAS 通过 SMB 挂载的文件监听不敏感,所以将扫描间隔从 3600s 调整为 60s
Mac 电脑配置
- 从https://syncthing.net/网站上将 Mac 版的 dmg 文件,直接安装就可以了。安装完成后会在顶部的状态栏出现一个小图标。
- 点击设置,勾选一下开机启动
- 本地浏览器打开http://localhost:8384,点击右下角的添加远程设备
- 从 http://localhost:18384 中通过操作->显示设备 ID 拿到的 ID 复制到上一步的弹窗中
- 两个浏览器都要点击确认一下。之后在界面 Default Folder 设置中的共享中,将要共享的设备勾选一下,两个浏览器再确认一下就完成了。
文件版本控制
这是 Syncthing 非常好用的一个功能,如果再 A 机器配置了版本控制,A 机器删除了文件,这个版本控制是不记录的,只有 B 机器删除了文件同步到 A 的时候,A 机器的版本控制才会工作。
说一下怎么配置吧,在 Linux Syncthing 的控制界面,打开版本控制标签。有很多可以选的。这里就选了一个稍微简单一点的建议版本控制,60 天后清除。最多 5 个版本。
想恢复的时候从这个历史版本里面
找到要恢复的文件,恢复就好了。
效果
实际效果啊那是非常的好,比那个 Nextcloud 好用太多了。