Linux下文件的压缩、解压缩、打包以及提取

版权声明:创作者:LIHAO,未经本人允许,不可转载。 https://blog.csdn.net/a1766855068/article/details/85164008

Linux下文件的压缩、解压缩、打包以及提取

一、单个文件的解压缩

1、压缩文件:

压缩文件就是经过压缩程序压缩的文件,它的原理是把文件的二进制代码进行压缩,把相邻的0,1代码减少,比如1111111,可以把它记作6个1的写法61,这样来减少该文件的空间,实现压缩。

2、文件的压缩

(1)常见压缩文件的扩展名(*表示文件的名字):

压缩文件的扩展名 注释
*.gz 通过gzip程序压缩的文件
*.bz2 通过bzip2程序压缩的文件
*.tar tar程序打包的数据,并没有经过压缩
*.tar.gz tar程序打包的文件,其中经过gzip的压缩
*.tar.bz2 tar程序打包的文件,其中经过bzip2的压缩

(2)压缩文件的两种命令:gzip 【选项】 文件名

gzip 文件名(压缩后原文件被删除)
gzip -c 文件名A > 文件名B.gz(压缩后原文件被保留)
备注:A和B可以不是同一个文件名,修改的后缀也可以不是 .gz 区别就在于 .gz我们可以直观的看出来它是压缩文件,而修改成其他的后缀就不可以直观的知道它是否为压缩文件,也不能够用Tab键进行自动补全。因此建议大家用压缩格式的后缀,文件名与原来的文件名可以不一样。
-c      将输出写到标准输出上,并保留原有文件
-d      将压缩文件解压
-digit   digit部分表示的为数字(1-9)代表压缩速度,但压缩效果越差,数值越大,压缩速度越慢,压缩效果也好,默认为6

接下来我们演示一下,做个对比。
①首先我们在一个空的“压缩”文件夹中创建两个文件fileA和fileB,分别写入hello,world和hello,B。
②然后我们使用第一种压缩命令执行给文件fileA,第二种压缩命令执行给fileB,最后使用ll查看结果发现发现第一种压缩命令的原文件被删除,第二种却没有。
在这里插入图片描述

3、压缩文件的查看:

好文件已经压缩好了。如果我们要查看里面的内容怎么办呢?难道用cat命令,答案当然是否定的。查看压缩文件的命令是  zcat 文件名.gz 如果使用cat命令会导致文件无法被查看(乱码)。对于bzip2文件的查看方式为bzcat 文件名.bz2
在这里插入图片描述

4、文件的解压:gunzip 【选项】 文件名

gunzip 文件名.gz、gzip -d 文件名.gz(解压后原文件被删除)
gunzip -c 文件名A.gz > 文件名B.gz(解压后原文件被保留)
备注:同上

(1)由于这里方法与第1步骤相同,因此不再累赘。但需要补充一点前面没有提到的是下图中红色线框框中的是fileB文件和fileB.gz文件的大小,为什么压缩后的文件会比压缩前的文件大呢?其实就是因为我们里面写的东西太少了,它在压缩的时候还要记录这个文件是怎么压缩的,这就会导致压缩后的文件比未压缩的还大。

在这里插入图片描述
(2)除了gunzip 文件名的解压方式,这里还有一个gzip -d 文件名.gz 的解压方式两种接压方式一样,没有区别。
在这里插入图片描述
总结:由于bzip2和gzip用法相同,这里不在演示。要注意的是gzip压缩速度要比bzip2压缩速度快,同样带来的代价就是gzip的压缩率没有bizp2高

二、多个文件的打包和提取

文件的归档即打包文件的语法:tar 【主选项+辅选项】要打包的文件和目录
主选项(唯一,只能有一个):

c 打包:创建一个新归档文件
x 解包:从归档文件中提取文件出来
t 查看包:列出归档文件的内容,查看已经打包了哪些文件,重点在于查看文件名

辅选项

z 通过gzip的方式进行压缩或解压,一般格式为*.tar.gz
j 通过bzip2的方式进行压缩或解压缩,一般格式为*tar,bz2
v 归档或解包过程中显示被打包的的文件
C 这个参数用在解压缩时,若要在特定目录解压缩,可以使用这个参数
f 输出结果到文件,该选项必须有且必须放在所有选项最后面,如果f后面跟其他选项,会误将后面的选项作为文件名

其他选项

- -exclude=被排除的文件名(要有路径) 在打包的过程中,除了要排除的文件,将其他文件进行打包

语法示例 tar czvf new.tar.gz --exclude=1/31 1
意思就是说 通过gzip的打包方式,打包过程中显示打包的文件,新的打包文件名为 new.tar.gz 要打包的目录是 1 目录,要排除的文件为1目录中的名字叫做31的文件。

我们来举几个例子:
1、将“压缩”文件夹中的两个目录和四个文件进行打包:tar czvf dabao.tar.gz fileA fileB fileC fileD 1 2
在这里插入图片描述
2、查看dabao.tar.gz中的文件都有哪些:tar tf dabao.tar.gz
在这里插入图片描述
当显示目录的时候,它会显示出路径分隔符/。

3、解开dabao.tar.gz中的文件到指定路径。
我们在根下创建一个新文件夹起名“压缩2”然后将dabao.tar.gz这个文件解压到“压缩2”文件夹中。使用命令
tar xf dabao.tar.gz -C /root/压缩2
在这里插入图片描述
注意:我们在添加选项的时候,没有j或g的选项是可以的,解压缩的过程中它会自动去识别调用的。

4、我们在“压缩”文件夹中创建目录1并写入4个文件(31、32、41、42)然后我们返回上一级目录,对1目录进行打包操作,并将1目录中名为31的文件进行排除打包操作。
在这里插入图片描述
本节所要用到的Linux命令总结:

压缩 注释
gzip 文件名 对文件进行压缩后原文件被删除
gzip -c 文件名A > 文件名B.gz 创建一个新的压缩文件B,原文件A不会被删除
zcat 文件名.gz 或 bzcat 文件名.bz2 查看压缩文件所压缩的文件都有哪些
解压缩
gzip -d 文件名.gz 将文件解压缩(原文件不保留)
gunzip 文件名.gz 将文件解压缩(原文件不保留)
gunzip -c 文件名A.gz > 文件名B.gz 将A文件解压缩命名为B,并且不会删除A文件
打包
tar czvf new.tar.gz --exclude=1/31 1 通过gzip的打包方式,打包过程中显示打包的文件,新的打包文件名为 new.tar.gz 要打包的目录是 1 目录,要排除的文件为1目录中的名字叫做31的文件
tar czvf dabao.tar.gz 文件A 目录B 将文件A和目录B进行打包,打包后的名字为daobao.tar.gz
tar tf dabao.tar.gz 查看打包文件所包含的文件有哪些。
tar xf dabao.tar.gz -C /root/压缩2 将dabao.tar.gz解压到指定目录

好了,本文到此就结束了,欢迎大家在评论区发言,指正错误,提出宝贵的建议谢谢!

猜你喜欢

转载自blog.csdn.net/a1766855068/article/details/85164008