18次发布
0.1.6 | 2020年6月29日 |
---|---|
0.1.4 | 2020年5月30日 |
0.0.10 | 2020年3月24日 |
0.0.2 | 2019年10月31日 |
0.0.0 | 2019年7月23日 |
#346 在 压缩 类别中
每月 70 次下载
在 asuran-cli 中使用
430KB
8K SLoC
Asuran
我们相信备份应该是简单、快速且永久的。
Asuran是一种新的存档格式和Rust实现。它旨在成为2020年代的归档器,并从头开始编写,以利用最前沿研究的见解,并从现代硬件中提取最后一丝性能,同时仍然提供用户在归档器中依赖的功能,如加密、压缩和全局去重。
Asuran也非常快,查看一些基准测试!
关于稳定性的说明
Asuran和asuran-cli是预_alpha软件,在版本1.0.0之前,发布仅供评估和测试。在1.0.0之前,API可能在补丁版本之间进行破坏性更改,在0.2.0之前的补丁版本之间可能存在破坏性格式更改(在0.2.0之后,破坏性格式更改仅在次要版本增加之间发生)。请在更新前始终阅读更改日志。
使命宣言
Asuran应适合长期数据存档,应与操作系统和硬件独立,安全、灵活、快速且易于嵌入。
它应努力使备份过程变得快速简单,并允许用户尽可能多地保留他们的文件历史记录在可用的空间中。毕竟,一个因为太慢而从未运行或因为占用太多空间而被删除的备份有什么用呢?
Asuran在不受信任的存储上使用时应是安全的,并且不应泄露任何可能以任何程度揭示存储库内容的任何数据。
它是如何工作的?
Asuran通过将您的文件分割成多个块来工作。它使用可选的可选择内容定义块分割算法来分割文件,默认情况下为FastCDC,即使文件的某个部分发生变化,其他块也很可能不会发生变化。
然后,这些块在提交到内容可寻址存储后端进行检索之前可选地(但默认情况下为)进行压缩和加密。Asuran尽量确保每个块只在其存储库中存储一次,在大多数用例中,它可以100%地做到这一点。
整个存档结构通过Merkle树过程进行验证,因此您可以确信,如果您的恢复成功,您的数据是完整且未被篡改的。
您可以在单个存储库中存储尽可能多的存档,并且可以使用尽可能多的计算机写入同一个存储库。
整个数据流是在一个现代的异步堆栈之上构建的,允许的性能是之前这个领域的竞争者只能梦想的。
安装和使用
您可以从我们的发布页面下载副本,或者自行从源代码构建。
请注意,我们发布页面上的构建需要核心品牌的sandybridge或更新的/等效的CPU,并且需要支持AVX指令。如果您需要在较低的CPU或没有这些指令的旧机器上运行,您需要从源代码自行构建。
在大多数情况下,您将与命令行asuran客户端(asuran-cli)交互。您可以从本存储库的asuran-cli目录中自行从源代码构建,或者使用以下命令安装:
cargo install asuran-cli
可选地使用env RUSTFLAGS="-C target-cpu=native -C target-feature=+aes" cargo install asuran-cli
构建,以获得更好的性能。
有关用法,请参阅asuran-cli --help
。
asuran-cli
本质上是一个薄包装器,它将asuran
库的API粘合在一起。该asuran
crate提供了一个高级接口,用于与存储库交互,并且它始终是一个独立的组件,并将享有与asuran-cli
本身相同级别的支持。
文档
请参阅我们的RustDocs以获取API文档,以及Internals文档以讨论格式。
支持
软件开发是一项艰苦的工作,不断改进asuran需要占用我大量的时间。
我目前正在努力建立一个patreon/open collective/sponus或类似的项目,但在此期间,如果您想支持我,请随意将您最喜欢的加密货币给我。
- BTC: bc1q99tz5sv4mn9l3mhx3qc3lh64skgx85uxssg3tc
- ETH: 0xd9CdBD945fE347FDAC4DFA71E13cB3EED7595882
- XRP: r46gGdwgMVMaWreVbRzSoxm9QrT3uSoEWC
- USDT: 0xd9CdBD945fE347FDAC4DFA71E13cB3EED7595882
- BCH: qrrsykuptuu7urt38k4u29j3kvnfa9n3msjssg6cje
如果您想以这里未列出的货币捐赠,请提交一个问题,我将添加地址。
基本概述和术语
asuran格式分为三个逻辑层
-
后端/存储库
后端和存储库被交替使用。这是数据实际存储的地方。它是一个内容可寻址的存储后端,其中blob(称为
Chunk
)通过其明文的HMAC进行寻址 -
存档
这是一个数据结构,存储在存储库中,描述了如何将块拼接在一起形成对象/文件。如果您将存储库比作时光机器备份,存档就是您的快照
-
清单
清单是一个特殊的数据结构,存储在存储库的其他部分之外,但相邻,它维护指向所有存档结构的指针,并为存储库中的所有数据提供验证的根。
比较
与Borg的比较
-
Asuran具有更好的多线程使用
Asuran有一个非常适合充分利用CPU核心的流水线,并且由于归档速度通常由压缩限制,而不是读取/写入或加密/hmac在现代CPU上的SSD(或仅仅是快速旋转的Rust存储),这导致了显著的加速。
-
可切换的存储后端
Asuran 拥有一个框架,用于描述新的存储后端并在运行时切换它们,因此您不仅限于在本地文件系统或运行 SSH 的 Linux 机器上存储文件。
-
可选择的切片器
Asuran 允许您选择您的内容定义的分块算法,包括使用 FastCDC 或静态块大小切片器,让您可以在性能/去重比之间做出权衡。
-
存储库格式隐藏块长度
由于我们使用隐藏块长度的存储库格式,Asuran 不像 borg 那样容易受到基于块长度的指纹攻击。
与 Restic 的比较
-
Asuran 非常快
Asuran 通常比 borg 快,borg 通常比 Restic 快,所以这个就顺理成章了。
-
可选/可切换加密
Asuran 支持多个与安全级别大致相当的加密套件,允许您满足组织使用特定加密套件的要求,或者选择在您的硬件上运行最快的加密套件。如果您实际上正在备份到受信任的存储,也可以完全禁用加密。
-
支持压缩
Asuran 允许您在存储库之间选择无压缩、ZStd、LZMA 或 LZ4 压缩,让您可以根据时间/空间权衡来选择。
与 Rdedup 的比较
-
内置目录遍历
Asuran 将遍历目录并自动存储其结构。无需执行额外的步骤,也不需要事先创建 tarball 来减少去重。
-
多后端支持
请参阅上述 borg 部分的说明
所有方面的改进
-
适合嵌入的高级 API
Asuran 展示了一个高级 API,该 API 由
asuran-cli
消费,使得将 Asuran 归档的兼容性嵌入到其他应用程序变得容易。 -
支持多种输入格式
Asuran 对其备份的文件来源无偏见。它不必来自文件系统;Asuran 也可以轻松地从 tarball 导入单个文件或直接从数据库中转储表。
许可证
Asuran 根据 BSD 2 Clause + Patent 许可证分发。
通过向本项目做出贡献,您同意根据 BSD 2 Clause + Patent 许可证许可您的贡献。
贡献
请参阅贡献指南以获取入门指南以及有关我们的程序和流程的入门知识。
如果您有任何问题,请随时加入聊天并提问!我们欢迎任何技能水平的人。
我现在正在进行关于开发状况的每周博客系列我的个人网站。这可能有助于新贡献者了解目前正在进行的任务。
如果您在 github 上,请转到我们的 gitlab。github 仓库仅是镜像。
聊天 & 支持
我们的主要聊天在 Matrix。
特别感谢
本项目及其持续开发得以实现,得益于我们的名人堂成员。
依赖关系
~9–21MB
~272K SLoC