与 Unix 和类 Unix 系统一样,故事开始于很久之前的七十年代。1979 年 1 月的一个清晨,Tar 实用程序首次作为 Unix V7 的一部分正式面世。Tar 程序当时主要被设计为往磁带上批量高效写入文件的一种方式。现在,虽然现在大多数 Linux 用户都已经不知道磁带驱动器是什么鬼了,但 tarballs(tar 的昵称)仍被常用于将多个文件甚至整个目录树打包到单一文件当中。
需要 Linux/Unix 用户注意的是,普通的 tar 格式文档只进行归档 *** 作而不进行压缩。换句话说就是,如果你 tar 100 个 50kb 的文件得到的 tar 归档文件大小应该为 5000kb 左右。
使用 Tar 进行文件归档的唯一好处就是减少某种粒度磁盘空间的分配。(例如在簇大小为 4kb 的磁盘上 1 字节的文件也要占用 4kb 磁盘空间,若有 1000 个 1 字节的文件分散在此磁盘上的话,则会占用 4MB 大小,而使用 Tar 归档之后则只占用 1MB 左右大小。)
值得一提的是,tar 并非 Linux/Unix 中创建归档文件的唯一方式。程序员朋友应该知道 ar,它大多情况下主要用于创建静态库,实际它也是可用来创建其它种类归档的,例如 Debian 系统中使用的 .deb 包文件就是 ar 存档。而 macOS 的 mpkg 包是使用 gzip 压缩的 cpio 档。不过 ar 和 cpio 用起来不像 Tar 这样友好、简单,所以 tar 的受欢迎程度更高,普及更广。
虽然归档是种不错的选择,但随着时间的推移和个人 PC 时代的到来,人们意识到可通过压缩数据的方式来大量节省存储成本。所以 10 年后随 MS-DOS 出现的 zip 文档便是支持压缩的归档格式,zip 最常见的压缩方式是采用 LZ77 算法 实现的 deflate。由于它由 PKWARE 商业开发,所以 zip 格式也受专利保护多年。因此,为不侵犯到 PKWARE 的专利,同样采用 LZ77 算法的 gzip 格式被推出并广泛使用。
Unix 的哲学就是 把某事做到最好 ,所以 gzip 只被设计为压缩文件。因此,为了创建压缩归档,必需先使用 tar 创建归档,之后再对归档文件进行压缩,因此才有了 .tar.gz 文件(为遵循 8.3 MS-DOS 文件名称限制,又被简称为 .tgz)。
随着技术的不断发展,具有更高压缩比的压缩算法也一一被实现,例如:在 bzip2 中实现的 Burrows-Wheeler 算法 (.tar.bz2 存档)和 LZMA 算法 实现的 .xz 存档。
现在,用户已经可以在 Linux 和 Windows 中自由使用任何归档文件格式。由于 zip 格式已经被 Windows *** 作系统原生支持,因此这种格式特别适合跨平台环境。
在Linux下,可以使用gzip工具将文件压缩成gz文件。下面是具体的步骤:
打开终端,进入要压缩的文件所在的目录。
运行以下命令进行压缩:
gzip 文件名
其中,文件名为要压缩的文件名,可以是绝对路径或相对路径。
例如,要将文件test.txt压缩成test.txt.gz,可以运行以下命令:
gzip test.txt
压缩完成后,原文件会被删除,只剩下压缩后的文件。如果不想删除原文件,可以使用以下命令进行压缩:
gzip -c 文件名 >文件名.gz
其中,-c选项表示将压缩后的数据输出到标准输出,>表示重定向输出到一个文件中。这样,压缩后的文件名为文件名.gz,原文件不会被删除。
例如,要将文件test.txt压缩成test.txt.gz,但不删除原文件,可以运行以下命令:
gzip -c test.txt >test.txt.gz
压缩完成后,可以使用gunzip命令解压缩gz文件,例如:
gunzip 文件名.gz
其中,文件名为要解压缩的gz文件名,解压缩后会生成一个同名的文件,去除.gz后缀。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)