认识
官网:http://zsync.moria.org.uk/
文档:https://zsync.moria.org.uk/papers
仓库:
`zsync` 是一个开源的文件同步工具,它的核心思想是只下载文件发生变化的部分,而不是整个文件。这使得在更新大型文件(如操作系统镜像、软件发行版、大型数据集等)时,可以极大地节省带宽和时间。可以把它想象成一个更通用、更灵活的 “增量下载” 或 “差分更新” 工具。
它与著名的 `rsync` 工具理念相似,但有一个关键区别:`rsync` 需要在服务器和客户端都安装相应软件并进行双向通信,而 `zsync` 的设计是客户端从标准的 HTTP/web 服务器上下载文件,服务器端不需要运行任何特殊的守护进程。
`zsync` 是一个极其高效的工具,专为优化大文件分发和更新而设计。它完美体现了“用计算换带宽”的思想,对于需要频繁下载大型文件(尤其是其新版本)的用户来说,是一个不可或缺的利器。虽然它不像 `rsync` 那样全能,但在其特定的“从 web 服务器进行单向增量下载”场景下,它是非常出色和便捷的选择。
组成
核心工作原理
`zsync` 的工作流程基于一个预先生成的 `.zsync` 元数据文件。整个过程分为两个步骤:
- 准备阶段(由文件发布者完成):
- 文件发布者(例如,Linux 发行版镜像站)拥有一个大型文件,比如 `ubuntu-24.04.iso`。
- 他们使用 `zsyncmake` 命令为该文件生成一个对应的元数据文件 `ubuntu-24.04.iso.zsync`。
- 这个 `.zsync` 文件包含了原始文件的校验和(默认使用 SHA-1)和块大小等信息。
- 最后,将 `ubuntu-24.04.iso` 和 `ubuntu-24.04.iso.zsync` 两个文件都上传到 web 服务器上。
- 同步阶段(由终端用户完成):
- 用户已经有一个旧版本的文件,比如 `ubuntu-23.10.iso`,现在想获取新版本 `ubuntu-24.04.iso`。
- 用户只需下载很小的 `.zsync` 元数据文件:`wget http://example.com/ubuntu-24.04.iso.zsync`
- 然后运行命令:`zsync ubuntu-24.04.iso.zsync`
- `zsync` 会开始工作:
- 读取本地文件:它会检查当前目录下是否已经存在一个同名的文件(或旧版本文件)。如果存在,它会读取这个文件。
- 计算校验和:它将本地文件切分成块,并计算每个块的校验和。
- 与元数据对比:将本地块的校验和与下载来的 `.zsync` 文件中描述的新文件块的校验和进行对比。
- 下载差异部分:只从远程服务器下载那些本地没有的、或者已经发生变化的数据块。
- 重组新文件:最后,`zsync` 将本地已有的块和新下载的块组合起来,重建出完整的、全新的 `ubuntu-24.04.iso` 文件。
即使本地文件是旧版本甚至是文件名不同,但只要数据块有重合,`zsync` 就能利用上这些重合的部分,从而减少下载量。
性质
主要优点
- 极致节省带宽:这是最主要的好处。如果新版本和旧版本之间只有 10% 的内容不同,那么你大约只需要下载 10% 的数据量加上一小部分元数据开销。
- 对服务器友好:服务器只需要提供普通的 HTTP 文件下载服务,无需任何特殊后台程序或模块。所有的计算工作都在客户端进行。
- 支持断点续传:如果下载中断,下次重新运行 `zsync` 命令时会从中断的地方继续。
- 灵活性强:不要求本地文件必须和远程文件同名。你可以用任何相关的本地文件作为“基础”来减少下载量。
主要缺点
- 需要预先准备:文件发布者必须记得为每个文件生成 `.zsync` 文件。
- 客户端需要安装:用户需要在自己的电脑上安装 `zsync` 客户端软件。
- 计算开销:同步过程需要在客户端进行大量的校验和计算,这会占用 CPU 时间和磁盘 I/O。对于性能很低的设备,计算时间可能比直接下载整个文件还要长(但在绝大多数现代设备上,节省的下载时间远多于计算时间)。
构建
### 如何使用
- 安装 zsync:
- Ubuntu/Debian: `sudo apt install zsync`
- Fedora/CentOS/RHEL: `sudo dnf install zsync` 或 `sudo yum install zsync`
- macOS: `brew install zsync`
- Windows: 可以通过 WSL 或从源码编译。
- 基本使用语法:
“`bash
zsync [options] <
http://cdimage.ubuntu.com/ubuntu/releases/24.04/release/ubuntu-24.04-desktop-amd64.iso.zsync
“`
zsync [options] <
http://cdimage.ubuntu.com/ubuntu/releases/24.04/release/ubuntu-24.04-desktop-amd64.iso.zsync
“`
应用
- Linux 发行版镜像:像 Ubuntu 等发行版官方推荐使用 `zsync` 来更新你的安装镜像,而不是重新下载整个 ISO 文件。
- 大型软件分发:游戏客户端、大型商业软件更新。
- 定期更新的大型数据集:科学计算、机器学习领域的大型数据库更新。
参考
DeepSeek / 介绍 zsync