.tar.gz 归档格式,也称为 tarball 或 gzipped tar 归档,是一种常用的文件格式,用于将文件和目录打包并压缩到单个文件中,以便于存储和传输。它结合了用于捆绑文件和目录的 tar(磁带归档)格式和 gzip 压缩,以减小整体文件大小。.tar.gz 格式广泛用于类 Unix 操作系统,并得到各种归档工具和实用程序的支持。
tar 格式本身是文件和目录记录的串联。每个记录都包含有关文件或目录的元数据,例如其名称、大小、权限、所有权和修改时间戳。实际文件数据存储在归档中的元数据之后。Tar 归档可以保留目录结构、符号链接和其他特殊文件类型。
要创建 tar 归档,可以使用 tar 实用程序。它会递归遍历指定目录或文件列表,并生成一个包含所有文件和目录的单个 tar 文件。生成的 tar 文件具有 .tar 扩展名。tar 命令支持各种选项来控制归档创建过程,例如指定输出文件名、排除某些文件或目录、保留权限和所有权以及处理符号链接。
虽然 tar 格式对于将文件捆绑在一起很有用,但它本身并不提供任何压缩。这就是 gzip 发挥作用的地方。Gzip 是一种流行的压缩算法,它使用 Lempel-Ziv 编码 (LZ77) 来有效压缩数据。它分析输入数据,并将重复序列替换为对早期出现的引用的引用,从而减小数据的整体大小。
要创建 .tar.gz 归档,tar 实用程序与 gzip 实用程序结合使用。首先,tar 实用程序如前所述创建 tar 归档。然后,生成的 tar 文件通过 gzip 实用程序进行管道传输,该实用程序使用 gzip 算法压缩 tar 文件。压缩输出通常会得到 .gz 扩展名,从而生成 .tar.gz 文件。
可以使用命令行选项调整 gzip 的压缩级别。默认情况下,gzip 使用压缩级别 6,它在压缩比和速度之间提供了良好的平衡。更高的压缩级别(最高 9)可以产生更小的文件大小,但压缩时间可能更长。较低的压缩级别(最低 1)优先考虑速度而不是压缩比。
要从 .tar.gz 归档中提取文件,该过程是相反的。首先使用 gzip 实用程序对归档进行解压缩,该实用程序 会还原原始 tar 文件。然后,使用 tar 实用程序从 tar 归档中提取文件和目录。tar 命令支持选项以指定提取位置、保留权限和所有权以及处理符号链接。
.tar.gz 格式的一个优点是它在不同平台上的兼容性。Tar 和 gzip 实用程序在类 Unix 系统上广泛可用,许多其他操作系统提供了处理 .tar.gz 文件的工具。这使得在一种系统上创建归档并在另一种系统上提取归档变得很方便,而不管底层架构或操作系统如何。
除了命令行实用程序之外,各种图形工具和文件压缩程序都支持 .tar.gz 格式。这些工具通常为创建、提取和管理 .tar.gz 归档提供用户友好的界面,使其可以被更喜欢图形界面的用户访问。
.tar.gz 格式有一些限制和注意事项。它不为归档文件提供内置加密或密码保护。如果安全性是一个问题,则需要将其他加密技术或工具与 .tar.gz 结合使用。此外,gzip 实现的压缩比可能因要压缩的数据类型而异。基于文本的文件和具有重复模式的文件往往可以很好地压缩,而已经压缩的文件(例如图像、视频)可能不会从进一步的 gzip 压缩中受益很多。
尽管存在这些限制,但 .tar.gz 格式仍然被广泛使用,因为它在打包和压缩文件方面简单、兼容且有效。它通常用于分发源代码、软件包、备份归档以及通过网络或存储介质传输大量文件集合。
总之,.tar.gz 归档格式将用于捆绑文件和目录的 tar 格式与 gzip 压缩相结合,以创建一个压缩归档文件。它提供了一种方便且有效的方法来打包和压缩文件以进行存储和传输,同时保持不同系统之间的兼容性。了解 .tar.gz 格式及其相关工具对于在各种计算环境中管理和分发文件非常有价值。
文件压缩通过减少冗余,让相同的信息占 用更少的比特。可压缩的上限受信息论约束:对于无损压缩,上界是信源熵(参见香农的信源编码定理及其 1948 年的原始论文《通信的数学理论》)。对于有损压缩,码率与感知质量之间的权衡由率失真理论描述。
大多数压缩器分两步。首先,模型预测或揭示数据中的结构。然后,编码器把这些预测变成近乎最优的比特模式。一个经典的建模家族是 Lempel–Ziv:LZ77 (1977)和 LZ78 (1978) 会检测重复子串并输出引用而不是原始字节。在编码端,霍夫曼编码(见原始论文1952)会为更常见的符号分配更短的代码。算术编码和范围编码能更贴近熵极限,而现代的非对称数值系统(ANS)用查表实现获得相似的压缩率。
DEFLATE(被 gzip、zlib 与 ZIP 采用)结合了 LZ77 和霍夫曼编码。其规范完全公开:DEFLATERFC 1951、zlib 封装RFC 1950以及 gzip 文件格式RFC 1952。Gzip 面向流式传输并明确不提供随机访问。PNG 图像标准化将 DEFLATE 作为唯一的压缩方法(窗口最多 32 KiB),可见 PNG 规范“Compression method 0… deflate/inflate… at most 32768 bytes”和W3C/ISO PNG 第二版。
Zstandard (zstd): 面向高压缩率与快速解压的通用压缩器。格式记录在RFC 8878(还有HTML 镜像)以及 GitHub 上的参考规范文档。与 gzip 类似,基本帧不追求随机访问。zstd 的拿手好戏是字典:从语料中抽取的小样本能显著改善大量小文件或相似文件的压缩(参见python-zstandard 字典文档与Nigel Tao 的示例)。各实现同时支持“无结构”和“有结构”字典(讨论)。
Brotli: 为网页内容(例如 WOFF2 字体、HTTP)优化,混合静态字典与类似 DEFLATE 的 LZ+熵编码核心。规范见RFC 7932,其中也指出滑动窗口大小为 2WBITS-16,WBITS 取值 [10, 24](1 KiB-16 B 到 16 MiB-16 B),并且不尝试随机访问。Brotli 常在网页文本上优于 gzip,同时保持快速解码。
ZIP 容器: ZIP 是一种文件归档格式,可存储使用多种压缩算法(deflate、store、zstd 等)的条目。事实标准是 PKWARE 的 APPNOTE(参见APPNOTE 门户、托管副本以及美国国会图书馆的概览ZIP File Format (PKWARE)/ZIP 6.3.3)。
文件压缩是一种减小文件或文件集大小的过程,通常用于节省存储空间或加速网络传输。
文件压缩通过识别和删除数据中的冗余来工作。它使用算法在更小的空间中编码原始数据。
文件压缩的两种主要类型是无损压缩和有损压缩。无损压缩允许完美恢复原始文件,而有损压缩则以损失部分数据质量为代价,实现更大的大小减小。
文件压缩工具的一个流行例子是WinZip,它支持包括ZIP和RAR在内的多种压缩格式。
对于无损压缩,质量保持不变。然而,对于有损压缩,由于它消除了较不重要的数据以更大程度地减小文件大小,因此可能会有明显的质量下降。
是的,就数据完整性而言,文件压缩是安全的,尤其是无损压缩。然而,像任何文件一样,压缩的文件可能会被恶意软件或病毒攻击,因此总是必要的有安装可靠的安全软件。
几乎所有类型的文件都可以被压缩,包括文本文件、图像、音频、视频和软件文件。然而,可达到的压缩水平可以在文件类型之间大大变化。
ZIP文件是一种使用无损压缩来减小一个或多个 文件大小的文件格式。ZIP文件中的多个文件有效地被捆绑在一起成为一个单一的文件,这也使得分享变得更容易。
技术上,是的,尽管额外的减小大小可能是微不足道的甚至适得其反。压缩一个已经压缩的文件有时可能会增加它的大小,由于压缩算法添加的元数据。
要解压文件,你通常需要一个解压或解压缩工具,如WinZip或7-Zip。这些工具可以从压缩格式提取原始文件。