7 个版本 (破坏性更新)
0.22.0 | 2024 年 6 月 22 日 |
---|---|
0.21.1 | 2024 年 2 月 23 日 |
0.20.0 | 2024 年 2 月 6 日 |
0.19.0 | 2024 年 2 月 2 日 |
0.1.0 | 2024 年 1 月 24 日 |
#936 in 文件系统
每月 425 次下载
用于 xcp
99KB
2K SLoC
libxcp: 高级文件复制引擎
libxcp
是一个高级文件复制引擎。它支持多线程、细粒度进度反馈、可插拔驱动和 .gitignore
过滤器。 libxcp
是 xcp 命令行工具的核心功能。
特性
- 在 Linux 上,它使用
copy_file_range
调用来复制文件。这是 Linux 下文件复制的最有效方法;特别是它具有文件系统感知能力,可以通过在服务器端执行复制操作来大大加快网络挂载的复制速度。然而,与copy_file_range
不同,稀疏文件会被检测并适当处理。 - 支持现代文件系统功能,如 reflinks。
- 针对“现代”系统(即多核、大量 RAM 和固态硬盘,特别是连接到主系统总线上的硬盘,例如 NVMe)进行了优化。
- 对于具有并行 IO 的系统,可选的激进并行性。在现代化笔记本电脑上的快速实验表明,在 NVMe 硬盘中进行并行复制可能会有所裨益。这显然非常依赖于系统。
- 可切换的“驱动程序”,以方便测试复制优化的替代策略。目前有 2 个驱动程序可用
- 'parfile':之前的硬编码 xcp 复制方法,它并行化树遍历和文件复制。这是默认设置。
- 'parblock':一个实验性驱动程序,它在块级别并行化复制。在某些架构中,这可能有助于性能提升,但会增加复杂性。欢迎测试。
- 通过回退操作支持非 Linux 类 Unix 操作系统(OS X、*BSD)。尽管在这种情况下尚不支持稀疏文件。
- 可选地理解
.gitignore
文件以限制复制的目录。
测试
libxcp
本身没有很多测试;但是,顶级 xcp
应用程序有一个完整的功能测试套件,包括模糊测试和压力测试。现在应将其视为测试套件。
依赖关系
~17–26MB
~478K SLoC