山地人

Linux gzip&tar命令

山地人
山地人
2021-05-24

上一篇我们讲了Linux上做文件的归档压缩和解压缩的Zip和Unzip命令。这一篇我们继续来探讨压缩和解压缩的话题,但是在这一篇,我们要讲的工具是gzip

压缩和解压缩全能

gzip命令是一个既能进行压缩,又能进行解压缩的全能选手。下面我们先看看使用gzip如何对文件进行压缩和解压缩。

使用方法

gzip [OPTION] ... [FILE] ...
  • [OPTION] 选项参数,可以指定多个选项参数
  • [FILE] 要压缩的文件路径,可以指定多个要压缩文件

下面是常用参数的一个列表

参数参数长名说明
-c—stdout在标准输出上输出,保持原始文件
-d—decompress解压缩
-f—force强制覆盖输出文件并压缩链接
-h—help显示帮助
-k—keep保留(不删除)输入文件
-l—list列出压缩文件的内容
-L—license显示软件许可证
-n—no-name不保存或恢复原始文件名称和时间戳
-N—name保存或恢复原始文件名称和时间戳
-q—quiet禁用所有警告,安静模式
-r—recursive对目录启动递归操作
—syncable制作对rsync友好的存档
-S—suffix=SUF在压缩文件上使用后缀 SUF
—synchronous同步输出(如果系统崩溃,则更安全,但是更慢)
-t—test测试压缩文件的完整性
-v—verbose详细输出执行过程
-V—version显示版本号
-1—fast更快的压缩速度
-9—best最好的压缩率

gzip压缩

创建几个待压缩文件

cd /home
touch abc.txt
touch hello.txt
touch main.txt

使用gzip命令,对上面每个文件进行压缩,压缩后,原始文件会被自动删除掉。

gzip *
# 查看是否生成压缩
ls

启动终端,按照上面的步骤进行练习。

通过实验,你会发现gzip的压缩方式是对文件进行单个压缩,而不是像zip命令那样将多个文件压缩,生成一个独立的压缩包。

gzip解压缩

解压缩文件,方法也很简单。-d选项,表示进行解压缩操作。

gzip -d *
# 查看解压后的文件
ls

gzip -d * 对当前目录下的所有压缩文件进行解压缩。压缩文件解压完成后会自动删除掉。

启动终端,按照上面的步骤进行练习。

查看压缩文件

gzip -l *
  • -l 用于查看压缩文件信息,但不解压缩文件。

启动终端,查看压缩文件。

递归压缩目录

test目录下的所有文件进行gzip压缩。

gzip -rv test
  • -r表示递归处理
  • -v表示显示处理进度
  • -rv是对-r-v的一种合并写法

创建带压缩的test目录。

cd /home
mkdir test
touch test/abc.txt
touch test/hello.txt
touch test/main.txt
mkdir test/abc
touch test/abc/hello.txt

使用上面的命令对test目录进行递归压缩。

启动终端,按照上面的步骤进行练习。

递归解压缩目录

test目录下的所有压缩文件进行gzip解压缩。

gzip -rd test
  • -r表示递归处理
  • -d表示解压缩
  • -rd是对-r-d的一种合并写法

使用上面的命令对test目录进行递归解压缩。

启动终端,按照上面的步骤进行练习。

仔细的你会发现,gzip都是处理的单个文件,那如果你想要把多个文件压缩成一个单独的文件,除了之前用过的zip还有没别的方法?

tar命令归档

tar命令可以将多个文件归档到一个文件,或者从归档中还原出所有文件。

这里tar命令的作用是把多个文件打包成一个文件,如果此时再对打包后的这个文件进行gzip压缩,这就会生成一个带压缩的归档文件,通常你会看到.tar.gz这样的文件后缀。

我们先来看看,tar的基本语法

tar [options...] [file] ...
  • options为可选参数,可以有多个options参数
  • file为要归档的文件路径,可以有多个这样的file

下面是tar命令的一些常用的options参数。

选项参数长选项说明
-c—create创建一个新的归档文件
-r—append往归档文件末尾追加文件
-u—update将更新的文件更新到归档中
-x—get, —extract将归档中解压文件
-d—diff, —compare对归档和文件系统中的文件进行差异比较
—delete从归档文件中删除指定文件
-t—list查看归档文件中的内容列表
-v—verbose显示执行过程
-z—gzip使用gzip进行压缩
-f—file指定备份文件名称

上面的这些选项参数可以叠加使用。

创建归档

下面的这条命令,是对当前路径下所有的.txt后缀的文件进行归档,并使用gzip对归档文件进行压缩。

tar -czvf test.tar.gz test/
  • -czvf 这是一个多个选项合并的写法,
    • c 创建归档
    • z 使用gzip进行压缩处理
    • v 显示执行过程
    • f 指定归档文件的名称,
  • test.tar.gz 为归档文件的名称
  • test/ 为要归档的文件路径

启动终端,按照上面的步骤进行练习。

解压归档

使用下面这条命令,我们可以把一个gzip压缩的归档文件进行解压缩。

tar -zxvf test.tar.gz

注意实验前,先把test目录删除干净,然后再进行解压操作。

rm -rf test

启动终端,按照上面的步骤对test.tar.gz进行解压缩处理。

至此,本篇教程也到了该和你说再见的时候了,我们下期再见。

学完本篇互动教程,如果你觉得体验不错,可以把网页链接发送给你的小伙伴,让他/她也来感受一下。当然,你也可以继续看看网站上其他的的互动教程,希望`idev365`能够给你带来收获。

学习教程的过程中碰到了问题,或者对idev365有什么改进意见和想法,欢迎加入idev365微信内测群,和山地人交流你的想法。