PAXR(便携式存档交换修订版)存档格式是一种通用且高效的文件压缩和打包标准,旨在实现跨平台兼容性和数据完整性。该格式由 PAXR 联盟(一个由数据存储和压缩行业领导者组成的团体 )开发,旨在解决现有存档格式的局限性,同时为现代计算环境提供高级功能。
PAXR 的核心采用无损压缩算法的组合,包括 LZMA2、Brotli 和 Zstandard,以实现高压缩比,同时不牺牲数据完整性。该格式支持多个压缩级别,允许用户根据其特定需求平衡压缩速度和文件大小缩减。PAXR 还引入了一种称为 DynamicOpt 的新颖自适应压缩技术,该技术分析输入数据并为每个文件选择最合适的压缩算法和设置,从而实现最佳压缩性能。
PAXR 格式的关键特性之一是其强大的错误检测和纠正功能。PAXR 实施了一个多层错误检查系统,其中包括针对各个文件的 CRC32 校验和针对整个存档的 SHA-256 哈希。这确保了在传输和存储期间保持数据完整性,并允许检测和纠正由数据损坏或存储介质降级引起的错误。
PAXR 支持广泛的文件属性,包括文件权限、时间戳和扩展元数据。该格式利用灵活且可扩展的属性系统,允许包含由用户或应用程序定义的自定义元数据字段。这使 PAXR 能够满足各个行业和用例的需求,例如科学研究、数字保存和多媒体分发。
PAXR 格式还引入了一项称为 StreamingExtract 的新功能,该功能可以在无需解压缩整个存档的情况下从存档中高效提取各个文件。这是通过智能文件索引和部分解压缩技术相结合来实现的。StreamingExtract 显着提高了大型存档中随机文件访问的性能,使其特别适用于需要频繁访问特定文件的应用程序,例如游戏资产打包和软件分发。
安全性是 PAXR 格式的另一个关键方面。PAXR 支持强大的加密算法,例如 AES-256 和 ChaCha20,以保护敏感数据免遭未经授权的访问。该格式采用灵活的加密方案,允许加密各个文件、目录或整个存档。PAXR 还支持多个加密密钥和密钥管理系统,从而实现细粒度的访问控制和多个用户之间的安全协作。
互操作性是 PAXR 格式的一个关键目标。PAXR 联盟为各种编程语言(包括 C++、Java、Python 和 JavaScript)开发了一组标准化 API 和库。这些 API 为开发人员提供了轻松访问 PAXR 功能的途径,并确保在不同平台和实现中保持一致的行为。该联盟还维护一份全面的规范文档并进行定期互操作性测试,以确保不同的 PAXR 实现可以无缝交换存档。
为了促进采用和向后兼容性,PAXR 格式包括一个兼容性层,允许其包含和提取来自其他流行存档格式(例如 ZIP、RAR 和 TAR)的文件。这使用户能够将现有存档迁移到 PAXR,而不会丢失对旧数据的访问。当遇到不受支持或损坏的数据时,兼容性层还允许 PAXR 实现回退到备用压缩算法,从而增强格式的弹性和可靠性。
总之,PAXR 存档格式代表了数据压缩和打包技术的一项重大进步。凭借其先进的压缩算法、强大的错误检测和纠正、灵活的元数据支持和强大的安全功能,PAXR 非常适合广泛的应用程序,从个人数据备份到大型数据分发和保存。随着该格式的不断发展和采用,它有望成为数据归档和压缩领域的新标准。
文件压缩通过减少冗余,让相同的信息占用更少的比特。可压缩的上限受信息论约束:对于无损压缩,上界是信源熵(参见香农的信源编码定理及其 1948 年的原始论文《通信的数学理论》)。对于有损压缩,码率与感知质量之间的权衡由率失真理论描述 。
大多数压缩器分两步。首先,模型预测或揭示数据中的结构。然后,编码器把这些预测变成近乎最优的比特模式。一个经典的建模家族是 Lempel–Ziv:LZ77 (1977)和 LZ78 (1978) 会检测重复子串并输出引用而不是原始字节。在编码端,霍夫曼编码(见原始论文1952)会为更常见的符号分配更短的代码。算术编码和范围编码能更贴近熵极限,而现代的非对称数值系统(ANS)用查表实现获得相似的压缩率。
DEFLATE(被 gzip、zlib 与 ZIP 采用)结合了 LZ77 和霍夫曼编码。其规范完全公开:DEFLATERFC 1951、zlib 封装RFC 1950以及 gzip 文件格式RFC 1952。Gzip 面向流式传输并明确不提供随机访问