Linux 下的归档与压缩之 tar 与 gzip 的基本使用

参考

项目描述
维基百科Tar
维基百科官网
维基百科Gzip
Linux 命令行与 shell 脚本编程大全ISBN 978-7-115-59251-4

描述

项目描述
操作系统Ubuntu 22.04.2 LTS(64 位)
tar1.34
gzip1.10

归档与压缩

归档

通过对多个文件进行归档操作,我们将得到一个归档文件。使用归档文件将使得文件在系统间的传输更加便利。

常用工具

tar

tarUnix类 Unix 系统中的归档打包工具,可以将多个文件合并为一个文件。目前,tar 文件格式已经成为 POSIX 标准。tar 设计的最初目的是将文件备份到磁带上 ( Tape Archive ) ,因而得名 tar


上述内容整理自 维基百科

压缩

在计算机科学和信息论中,数据压缩或者源编码是按照特定的编码机制用比未经编码少的数据比特(或者其它信息相关的单位)表示信息的过程。


上述内容引用自 维基百科

常用工具

gzip

Gzip类 Unix 系统中常见的压缩及解压缩工具。GzipGUN 中的一员,名称中的 G,指的便是 GNU

Bzip2

bzip2 相比传统的 gzip 或者 ZIP 的压缩效率更高,但是压缩速度较慢。与 RAR 或者 ZIP 等其它不同的是,bzip2 只是数据压缩工具,而不是归档工具,在这一点与 Gzip 类似。


上述内容整理自 维基百科

compress

Linux compress 命令是一个相当古老的 unix 档案压缩指令,压缩后的档案会加上一个 .Z 延伸档名以区别未压缩的档案,压缩后的档案可以以 uncompress 解压。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。由于 gzip 可以产生更理想的压缩比例,一般人多已改用 gzip 为档案压缩工具。


上述内容引用自 菜鸟教程

归档并压缩

由于 gzip 无法对多个文件或目录进行合并压缩,所以其常常与 tar 一起使用。由 tar 将多个文件或目录进行归档,再由 gzip 实行压缩。目前,tar 支持将归档文件自动提交给其他压缩工具进行压缩。这意味着,使用 tar,您将能够直接完成多个文件或目录的归档及压缩操作。

归档并压缩

上述图片引用自 维基百科


tar

选项

项目描述
-f指定文件(指定何种类型的文件依据情况而定)。
-c--create创建一个归档文件,使用 -f 指定归档文件使用的文件名称。
--delete使用 -f 选项指定归档文件,从归档文件中删除部分文件。
-x--get--extract使用 -f 选项指定归档文件,从目标归档文件中提取部分或全部文件。如未指定需要从归档文件中提取的文件,默认提取归档文件中的全部文件。
-r--append使用 -f 选项指定归档文件,将非 tar 归档文件的文件附加到指定归档文件中。
-A--catenate使用 -f 选项制定归档文件,将 tar 归档文件解归档并将结果附加到指定的归档文件中。
-k--keep-old-files使用 -f 指定归档文件,从归档文件中提取文件时,不覆盖其他文件。若目录中已存在同名文件,则取消该文件的提取操作,继续执行其他文件的提取操作。
-t--list使用 -f 选项指定归档文件,列出该归档文件中所包含的其他文件。
-v--verbose输出与当前命令相关的执行信息。在单条命令中,你可以多次重复使用该选项。在某些情况下,这将得到更为详细的描述信息。
-j将结果传递给工具 Bzip2 进行处理(进行何种处理,由 tar 自动进行指派)。
-J将结果传递给工具 xz 进行处理(进行何种处理,由 tar 自动进行指派)。
-z将结果传递给工具 Gzip 进行处理(进行何种处理,由 tar 自动进行指派)。
-Z将结果传递给工具 compress 进行处理(进行何种处理,由 tar 自动进行指派)。
--version输出当前使用的 tar 的版本。
--help输出与 tar 相关的帮助信息。

常见形式

将多个文件归档为一个文件

将当前工作目录下的 partition_1partition_2 打包,得到归档文件 result.tar

tar -cvf result.tar partition_1 partition_2

查看归档文件中的文件内容

列出当前工作目录下的归档文件 result.tar 中的文件。

tar -tvf result.tar

将一个归档文件附加到另一个归档文件末尾

将当前工作目录下的归档文件 result.tar 附加到当前工作目录的归档文件 result.tar 中。

  1. 检索当前工作目录下的文件
ls

执行结果

partition_1  partition_2  result.tar
  1. 检索归档文件 result.tar 中的文件
tar result.tar -tvf

执行结果

-rw-r--r-- root/root         0 2023-03-19 17:57 partition_1
-rw-r--r-- root/root         0 2023-03-19 17:57 partition_2
  1. 将归档文件 result.tar 附加到 result.tar
tar -Avf result.tar result.tar
  1. 检索归档文件 result.tar 中的文件
tar -f result.tar -tv

执行结果

-rw-r--r-- root/root         0 2023-03-19 17:57 partition_1
-rw-r--r-- root/root         0 2023-03-19 17:57 partition_2
-rw-r--r-- root/root         0 2023-03-19 17:57 partition_1
-rw-r--r-- root/root         0 2023-03-19 17:57 partition_2

从归档文件中删除部分文件

  1. 从当前工作目录下的归档文件 result.tar 中将 partition_1 文件进行删除。
tar --delete -f result.tar partition_1
  1. 检索归档文件 result.tar 中的文件
tar -f result.tar -tv

执行结果

-rw-r--r-- root/root         0 2023-03-19 17:57 partition_2
-rw-r--r-- root/root         0 2023-03-19 17:57 partition_2

将当前工作目录下的 partition_1 附加到归档文件 result.tar 中

tar -rf result.tar partition_1

从当前工作目录下的归档文件 result.tar 中提取部分文件(partition_2)

tar -xf result.tar partition_2

从当前工作目录下的归档文件 result.tar 中提取全部文件

tar -xf result.tar 

从当前工作目录下的归档文件 result.tar 中删除所有文件

tar --delete result.tar

将多个文件归档后交由 gzip 进行归档文件的压缩

将当前工作目录下的 partition_1partition_2 文件归档后交由 Gzip 进行压缩,得到归档压缩文件 result.tar.gz

tar -czvf result.tar.gz partition_1 partition_2

将归档压缩文件交由 gzip 解压后,再由 tar 进行解除归档操作

tar -xzvf result.tar.gz
细节
  1. 将文件添加到归档文件后,源文件将不会发生改变。
  2. 从归档文件中提取文件后,该文件将不会从该归档文件中消失。
  3. 归档文件中可以出现多个同名文件,在提取归档文件中的文件时,可能因此出现文件覆盖的现象。可以使用 -k–keep-old-files 选项来避免解除归档的过程中,覆盖已有的同名文件。

gzip

选项

项目描述
-d--decompress--uncompress将目标文件进行解压缩操作。
-k--keep实行解压操作或压缩操作后保留源文件。
-l--list列出与目标压缩文件相关的一系列信息。
-r--recursive对目标文件夹进行递归处理以操作目标文件夹中的所有文件(不包括隐藏文件)。
-v--verbose显示压缩过程中相关的操作信息。
-t--test检测压缩文件的完整性。该选项推荐同 -v–verbose 选项一同使用。
-<压缩效率>压缩效率是一个介于 1-9 的数值,预设值为"6"。指定愈大的数值,压缩效率就会愈高。
--best此参数的效果与使用 -9 参数所得到的效果相同。
--fast此参数的效果与使用 -1 参数所得到的效果相同。
-V--version显示 Gzip 的版本信息。
-h--help显示与 Gzip 相关的帮助信息。

常见形式

将当前工作目录下的 partition_1 及 partition_2 分别进行压缩

gzip -k partition_1 partition_2

执行结果

源文件(被压缩文件)未被删除,得到文件 partition_1.gzpartition_2.gz

将当前工作目录下的 partition_1.gz 与 partition_2.gz 分别进行解压

gzip -d partition_1.gz partition_2.gz

执行结果

源文件(压缩文件)均被删除,得到文件 partition_1partition_2

细节
  1. 使用 Gzip 将文件压缩后,源文件默认将被删除,你可以使用 -k 选项来避免源文件的删除。
  2. 使用 Gzip 将文件解压后,压缩文件默认将被删除,你同样可以使用 -k 选项来避免压缩文件的删除。
  3. 使用 Gzip 压缩文件夹时,如无使用 -r 选项,则压缩指令将被忽略。使用 -r 选项后也无法将文件夹进行归档压缩,而是将该文件夹中所有的文件(包括后代文件夹中的文件,但不包括其中的隐藏文件)单独进行压缩。对此,请参考如下示例:

检索目标文件夹中的文件

ls -a C++

执行结果

.  ..  demo  demo.cpp  demo.gz  hello  hello.cpp  hello.gz  .vscode

使用 Gzip 将目标文件夹进行压缩处理

gzip -r C++

检索目标文件夹中的文件

ls -a C++

执行结果

.  ..  demo.cpp.gz  demo.gz  hello.cpp.gz  hello.gz  .vscode
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryMoon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值