打印
[软件资料]

linux 中的压缩和解压操作

[复制链接]
630|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2023-8-9 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、 压缩/解压操作
在开发中,很多时候会遇到某些文件要进行压缩的操作,比如文件较大不方便传输的时候,可能会考虑对文件进行压缩,以减少文件传输的时间。

比如在网络中传输文件的时候,就会考虑先将文件进行压缩,然后传输压缩的文件,这样可以减少文件传输所需要的带宽和时间,在网络接收到文件之后再解压,就可以得到文件了。

文件的压缩有两种方式:有损压缩和无损压缩。有损压缩会对文件的数据有一定的破坏,一般对于重要的文件我们不会考虑这样的方式。无损压缩不会影响文件,所以对于压缩我们最先考虑的是使用无损压缩的方式。


2、 单个文件压缩和解压用 gzip / bzip2
对单个文件的压缩和解压我们可以使用使用gzip 和 bzip2 进行操作。这两个命令只能用于对单个文件的压缩操作,对于目录和多级目录的压缩是不行的。

2.1、gzip 压缩和解压
gzip命令的使用如下:

gzip [选项] [完整的文件名]
常用的选项有:
-l(list):列出压缩文件的内容;
-k(keep):在压缩或解压时,保留输入文件;
-d(decompress):将压缩文件进行解压缩;


使用gzip压缩完之后的文件会生成后缀为.gz的压缩文件。如果直接使用 gzip 对某个文件进行压缩,不加任何其他选项的话,压缩完成之后是会删除掉被压缩的源文件的,加 -k 选项就会在压缩完成之后依然保留源文件。

gzip的使用示例如下:

1)        压缩文件
gzip -k "需要压缩的文件名"    // 压缩成功后得到了一个.gz结尾的压缩文件
2)        查看压缩文件
gzip -l  "经过压缩的.gz的文件"
3)        解压文件
gzip -kd pwd.1.gz   //该压缩文件必须是以.gz结尾的单个文件



2.2、bzip2 压缩和解压
bzip2 命令的使用如下:

bzip2 [选项] [完整的文件名]
常用的选项有:
-l(list):列出压缩文件的内容;
-k(keep):在压缩或解压时,保留输入文件;
-d(decompress):将压缩文件进行解压缩;


使用bzip2压缩完之后的文件会生成后缀为.gz的压缩文件。

bzip2 的使用示例如下:

1)        压缩文件
bzip2 -k "需要压缩的文件名"    // 压缩成功后得到了一个.bz2结尾的压缩文件
2)        查看压缩文件
bzip2 -l  "经过压缩的.bz2的文件"
3)        解压文件
bzip2 -kd pwd.1.gz   //该压缩文件必须是以.bz2结尾的单个文件


gzip 和 bzip2 都能对单个文件进行压缩,那这两个方式有什么不同呢?

不同之处在于:
1) 一般情况下,小文件使用gzip来压缩,大文件使用bzip2来压缩;
2) bzip2 比 gzip 的压缩率更高。

3、 目录和多级目录的解压和压缩用 tar
对目录以及多级递归的目录的压缩和解压可以使用 tar 进行操作。常用的 tar 命令的选项有:

-c(create):表示创建用来生成文件包 。
-x:表示提取,从文件包中提取文件。
-t:可以查看压缩的文件。
-z:使用gzip方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。
-j:使用bzip2方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。
-v(verbose):详细报告tar处理的信息。
-f(file):表示文件,后面接着一个文件名。 -C <指定目录> 解压到指定目录。


使用 tar 的进行打包压缩的时候,是可以选择压缩方式的,这个压缩方式就是前面提到的 gzip 和 bzip2 。

可以简单的理解为:tar就是将目录进行打包压缩,至于选择什么样的压缩文件的方式就要自己指定,对文件的压缩可选 gzip 和 bzip2 。

3.1、tar打包,用 gzip 压缩/解压
1)把目录 file1 压缩、打包为file1.tar.gz文件:
tar czvf file1.tar.gz file1。
注意:“tar –czvf”与“tar czvf”是一样的。
2)查看压缩文件:
$ tar tvf  file1.tar.gz
3)        解压文件,可以用 -C 指定解压到哪个目录:
$ tar xzvf file1.tar.gz                 //解压到当前所在的目录。
$ tar xzvf file1.tar.gz -C "解压路径:xxx"   //解压到xxx

3.2、tar打包,用 bzip2 压缩/解压
1)把目录 file1 压缩、打包为file1.tar.bz2文件:
tar cjvf file1.tar.bz2 file1。
注意:“tar –cjvf”与“tar cjvf”是一样的。
2)查看压缩文件:
$ tar tvf  file1.tar.bz2
3)        解压文件,可以用 -C 指定解压到哪个目录:
$ tar xjvf file1.tar.bz2                 //解压到当前所在的目录。
$ tar xjvf file1.tar.bz2 -C "解压路径:xxx"   //解压到xxx。

使用特权

评论回复
沙发
tpgf| | 2023-9-5 17:04 | 只看该作者
最多可以对多大的文件进行这种操作呢

使用特权

评论回复
板凳
coshi| | 2023-9-5 17:22 | 只看该作者
linux对稳健的压缩解压缩必须要通过脚本实现吗

使用特权

评论回复
地板
drer| | 2023-9-5 19:11 | 只看该作者
有损压缩可以选择压缩的百分比吗

使用特权

评论回复
5
chenjun89| | 2023-9-5 19:36 | 只看该作者
喜欢用Linux操作系统

使用特权

评论回复
6
qcliu| | 2023-9-5 19:44 | 只看该作者
压缩和解压缩耗费的资源应该是一样的吧

使用特权

评论回复
7
kxsi| | 2023-9-6 08:49 | 只看该作者
可以实现对多个文件进行压缩和解压缩吗

使用特权

评论回复
8
wiba| | 2023-9-6 09:46 | 只看该作者
可以对文件压缩的方式进行选择吗

使用特权

评论回复
9
小小蚂蚁举千斤| | 2023-9-10 20:23 | 只看该作者
Linux是标准的软件指令操作吧

使用特权

评论回复
10
szt1993| | 2023-9-10 20:42 | 只看该作者
Linux下一切皆指令

使用特权

评论回复
11
中国龙芯CDX| | 2023-9-18 13:38 | 只看该作者
kxsi 发表于 2023-9-6 08:49
可以实现对多个文件进行压缩和解压缩吗

理论上是可以的,毕竟一切皆指令

使用特权

评论回复
12
AdaMaYun| | 2023-9-21 16:52 | 只看该作者
小小蚂蚁举千斤 发表于 2023-9-10 20:23
Linux是标准的软件指令操作吧

楼主说的非常正确,Linux里面都是指令

使用特权

评论回复
13
jf101| | 2023-10-17 19:08 | 只看该作者
linux非常开源的一款系统,很值得学习

使用特权

评论回复
14
小小蚂蚁举千斤| | 2023-10-23 17:34 | 只看该作者
tar这指令经常使用到,Linux中很好的解压缩指令

使用特权

评论回复
15
村支书| | 2023-10-24 09:25 | 只看该作者
使用bzip2压缩完之后的文件会生成后缀为.gz的压缩文件。

使用特权

评论回复
16
小小蚂蚁举千斤| | 2023-10-24 12:28 | 只看该作者
kxsi 发表于 2023-9-6 08:49
可以实现对多个文件进行压缩和解压缩吗

可以的

使用特权

评论回复
17
小小蚂蚁举千斤| | 2023-10-24 12:29 | 只看该作者
村支书 发表于 2023-10-24 09:25
使用bzip2压缩完之后的文件会生成后缀为.gz的压缩文件。

这个是有的

使用特权

评论回复
18
星辰大海不退缩| | 2023-10-25 08:46 | 只看该作者
Linux下一切皆指令,考验**

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1323

主题

3802

帖子

0

粉丝