Syncthing - 免费开源替代 Resilio / BT Sync 的文件夹同步工具神器 (搭建同步网盘)

自建网盘云储存同步服务的软件有很多,Seafile、NextCloud、ownCloud、BT Sync (Resilio Sync) 等。而 Syncthing 则有着自己非常特别的优点,受到众多高手们的推荐,被誉为是 Resilio Sync / BT Sync 和 Dropbox 的最佳开源替代品。

Syncthing 最大的特色是采用了与 Resilio Sync (BitTorrent Sync) 类似的 P2P 分布式技术,无需中心服务器,即可让多台设备互相实时同步文件,用过 Resilio Sync 的朋友都明白这种同步方式的优势了。它们两者的实现方式很相似,区别是 Resilio 属于商业软件,需付费使用,在国内也已被墙,而 Syncthing 不仅完全免费且开源,相比 Resilio 还增加了「文件版本控制」、「单向同步」等堪称杀手级的功能特性。

Syncthing 功能上非常接近于 Resilio Sync / BT Sync,不过说它是一款用于搭建网盘的服务器软件或者云存储服务应用似乎并不十分恰当,相较于 Seafile、NextCloud 等服务器工具,Syncthing 实际上更像是一款文件/文件夹同步工具。

得益于跨平台,Syncthing 的应用场景和范围非常广泛,可以简单用来备份手机照片视频文档,也可以满足公司、企业、团队、个人的各种复杂的文件/文件夹的同步与共享需求。

比较可惜的是,目前 Syncthing 仅有安卓版的官方客户端,并未发布 iOS 版,只有一个由第三方做的相对简陋的 iOS APP 「fsync」可以暂时顶替。

Syncthing是使用Go语言开发的跨平台文件同步工具。开源、免费、简单易用。支持Linux、Windows、Mac、FreeBSD、Solaris等操作系统。你可以在官网找到对应各个平台的下载链接。

Syncthing @ Centos7

1. 安装

wget https://github-production-release-asset-2e65be.s3.amazonaws.com/14712850/c43fd4be-8f8f-11e8-990e-904dc6f3c490?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20180817%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20180817T083727Z&X-Amz-Expires=300&X-Amz-Signature=aef12420a4aa814ef4e2c5ae3e80ced595a224db55785d31fc62ccfd1f883c71&X-Amz-SignedHeaders=host&actor_id=10145852&response-content-disposition=attachment%3B%20filename%3Dsyncthing-linux-amd64-v0.14.49.tar.gz&response-content-type=application%2Foctet-stream
tar zxvf syncthing-linux-amd64-v0.14.49.tar.gz
cd syncthing-linux-amd64-v0.14.49
sudo install syncthing /usr/bin
sudo cp etc/linux-systemd/system/* /lib/systemd/system
sudo cp etc/linux-systemd/user/* /lib/systemd/user
sudo systemctl daemon-reload

详细流程可参考官方文档Geting-Started

2. 防火墙配置

sudo firewall-cmd --permanent --add-port=22000/tcp
sudo firewall-cmd --permanent --add-port=21027/udp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

3. 为当前用户启动syncthing服务

sudo systemctl enable syncthing@${USER}.service
sudo systemctl start syncthing@${USER}.service
sudo systemctl status syncthing@${USER}.service

服务启动后,syncthing会在用户的家目录加创建一个名为Sync的默认共享目录。

4. 连接WebUI

通过浏览器访问 http://127.0.0.1:8384 可以连接到syncthing的管理界面。

在界面上可以选择语言,支持简体中文。

管理界面十分简单,具体操作可参考官方文档[https://docs.syncthing.net/intro/gui.html]

5. 全局设置

5.1. 常规设置

  • 设备名称 默认使用主机名
  • 最低可用磁盘空间 设置主路径所在分区允许的最低可用磁盘空间,若剩余空间小于该百分比,则中止同步
  • API Key 显示当前的RestAPI的Key,可随机生成新Key
  • 匿名使用报告 是否向syncthing官方发送统计信息
  • 自动升级 默认仅升级到stable版本
  • 默认文件夹路径 默认情况下,共享文件夹时会创建在用户家目录下,可修改此配置更换目录位置。

5.2. UI设置

  • GUI 监听地址 若设置为0.0.0.0:8384,则可以由其他设备访问
  • 账户密码设置 设置界面的准入密码,防止被盗用
  • 主题选择 现在支持Default、Dark、Black三种主题

5.3. 连接设置

  • 协议监听地址 协议监听地址默认为default,即监听在本机的22000/TCP端口并使用官方中继服务dynamic+https://relays.syncthing.net/endpoint,也可以配置为不使用中继服务,或使用专有中继服务。详情可参考[https://docs.syncthing.net/users/config.html#listen-addresses]
  • 上传下载速度限制 默认为0,不做限制。
  • 启用NAT遍历 待调研
  • 本地发现 广播发现syncthing设备
  • 全球发现 使用公网上的全球发现服务进行设备发现
  • 开启中继 当两个设备无法直接通讯时,例如在两个不同的内网,则需要启用中继服务
  • 全球发现服务器 可以设置为私有的发现服务器

6. 添加远端设备

点击右下角的Add Remote Device可添加待同步的远端设备。

6.1. 常规

  • 设备ID 在添加远端设备时,必须指定设备ID。在启动之后,syncthing会为本机分配一个全球唯一的ID,可以在UI的右上角菜单中Action->Show ID查看。若启动了本地发现服务(默认启动),则可以在这里看到已经局域网中已经存在的syncthing设备。
  • 设备名 在没有设置的情况下,syncthing使用主机名作为设备名。在连接远端设备时,可以为其设已一个本地的别名。

6.2. 共享

  • 中介(introducer)开关 将此新设备上拥有的“远程设备”都自动添加到您这边的“远程设备”列表中(如果它们跟您存在相同的文件夹的话)。
  • 自动接受开关 自动地创建或共享这个远端设备在默认路径通告的文件夹。
  • 将指定文件夹共享给设备 选择并将本地已有的共享文件夹共享给此设备

6.3. 高级

  • 地址列表 syncthing使用“全球发现服务”和“局域网广播”发现其他的syncthing节点,此时远端设备的IP地址是通过发现服务动态获取的。也可以在“高级”选项卡中手动指定设备端的IP地址,从而不使用发现服务。
  • 压缩 选择要压缩的数据类型,可选项有:不压缩、仅元数据、全部
  • 设备速率限制 可设置上传及下载的速度限制

7. 添加共享目录

点击左侧的下方的添加文件夹按钮以添加共享目录。

7.1. 常规

  • 文件夹标签 即目录名称,可选的文件夹说明性标签。在不同设备上可以不一致。
  • 文件夹 ID 随机生成的ID号,用于区别各个目录
  • 文件夹路径 默认在默认目录下创建,可参考5.2. UI设置
  • 共享给 将目录共享给选择的设备

7.2. 版本控制

支持不启用、回收站式、简易版本控制、阶段版本控制、外部版本控制。

详情可参考[https://docs.syncthing.net/users/versioning.html]

7.3. 忽略模式

可以配置不需要同步的文件名patten,在两个设备上均可配置,取并集。

7.4. 高级

  • 监视更改 是否启动文件系统的通知功能来监视文件变化。注意即使开启了此功能,也不会在文件变化后立即同步,而是等待一个较短的超时时间,接近一分钟。
  • 完整扫描 设置完整扫描间隔,以免同步发生缺失,默认间隔一小时。对于大型的基本不修改内容的目录,可设置得更大,例如一天。
  • 文件夹类型 支持发送与接受,或仅发送
  • 文件拉取顺序 支持字母顺序小文件优先大文件优先新文件优先旧文件优先
  • 最低可用磁盘空间
  • 忽略文件权限变化

8. RestAPI

为方便其他软件/系统集成syncthing的文件同步功能并通知文件同步状态变化,syncthing提供了一系列的RestAPI,包含一个基于Rest的EventAPI。

为确认API调用者拥有合法的调用权限,在调用时需要将HTTP Header的头部设置X-API-KEY字段为syncthing的apikey的值。该值可以在管理界面的设置中生成并查看,也可以使用下述bash命令获取:

grep apikey ~/.config/syncthing/config.xml | sed "s/ *<\/*apikey> *//g"

具体的API文档请参考[https://docs.syncthing.net/dev/rest.html]

Syncthing @ Windows

在Windows下,Syncthing提供了带有图形界面的工具SyncTrayzor,你可以在官网上找到最新版本的下载链接。

软件启动后会弹出一个嵌入浏览器的窗口,其界面风格与使用方式与Linux相同。

分享 评论