技术

通过ZeroTier+SyncThing实现高速率自动文件夹同步

ZeroTier

ZeroTier 是一种软件定义的网络(SDN)解决方案,它使用户能够创建和管理虚拟网络,将分布在不同地理位置的设备连接在一起,就像它们在同一个本地网络中一样。以下是对 ZeroTier 的详细介绍:

主要特点

  • 跨平台支持:ZeroTier 支持多种操作系统,包括 Windows、macOS、Linux、iOS 和 Android 等,甚至可以在嵌入式设备上运行。
  • 易于使用:用户只需几分钟即可设置和配置网络。通过简单的图形界面和命令行工具,用户可以轻松地创建和管理虚拟网络。
  • 高效的网络性能:ZeroTier 使用高效的点对点(P2P)连接来确保最低的延迟和最高的带宽,同时提供强大的加密机制来保证数据传输的安全性。
  • 灵活性和可扩展性:用户可以根据需要创建多个虚拟网络,每个网络可以有不同的配置和权限设置,适应不同的应用场景。
  • 安全性:ZeroTier 提供端到端加密和认证,确保网络通信的私密性和安全性。只有授权的设备才能加入网络,并访问网络资源。
  • 分布式架构:ZeroTier 的分布式网络架构消除了单点故障,提高了网络的可靠性和可用性。

SyncThing

Syncthing 是一个开源的文件同步工具,旨在让用户在多个设备之间同步文件和文件夹。它支持跨平台操作,并且不依赖于任何第三方服务器,所有数据都是通过点对点(P2P)方式传输的。以下是对 Syncthing 的详细介绍:

主要特点

  • 开源和自由:Syncthing 是一个完全开源的软件,用户可以自由使用、修改和分发。
  • 跨平台支持:支持 Windows、macOS、Linux、FreeBSD、Solaris 和 Android 等多种操作系统。
  • 点对点传输:通过 P2P 连接进行文件传输,不依赖于第三方服务器,保证了数据的私密性和安全性。
  • 安全性:所有传输的数据都经过 TLS 加密,确保数据在传输过程中的安全性。此外,每个节点都有一个唯一的 ID,用于身份验证。
  • 实时同步:当文件发生变化时,Syncthing 会立即检测到并在其他设备上进行同步,确保文件始终保持最新状态。
  • 分布式架构:没有中央服务器,所有节点都是平等的,消除了单点故障的风险,提高了系统的可靠性。
  • 易于使用:提供了一个直观的 web 界面,用户可以通过浏览器轻松配置和管理同步任务。

安装ZeroTier

这里没有直接安装ZeroTier,而是借助docker-zerotier-planet项目通过命令行进行安装在阿里云服务器上
  • 克隆仓库
    • git clone https://github.com/xubiaolin/docker-zerotier-planet.git
    • git clone https://ghproxy.imoyuapp.win/https://github.com/xubiaolin/docker-zerotier-planet.git
  • 执行setup命令
    • ./deploy.sh
  • 下载 planet 文件
    • 脚本运行完成后,会在 ./data/zerotier/dist 目录下有个 planetmoon 文件
    • 可以直接访问安装完成后的url下载,也可以用scp等其他方式下载
    • 下载文件备用
  • 新建网络
    • 访问 http://ip:3443 进入controller页面
      • 使用默认账号为:admin
      • 默认密码为:password
    • 创建网络
    • 设置网络IP段
      • 选择easy setup
  • 客户端配置
    • 客户端下载
    • MacOS
      • 进入 /Library/Application\ Support/ZeroTier/One/ 目录,并替换目录下的 planet 文件
      • 重启 ZeroTier-One:
        • cat /Library/Application\ Support/ZeroTier/One/zerotier-one.pid | sudo xargs kill
      • 加入网络
        • zerotier-cli join 网络 id
      • 管理后台同意加入请求
      • zerotier-cli peers 可以看到 planet 角色
    • iPhone
      • 国区没有对应的App,需要通过登录外区的Apple Id,然后在App Store下载

安装SyncThing

本地安装

  • 下载集成
  • 安装启动
  • 访问WebUI添加节点
    • http://localhost:8384
    • 添加远程设备,会自动提示已经识别到的设备,没识别到可以通过ID添加
    • 选择共享的文件夹

Docker安装(安装后启动成功,但是不生效)