当前位置: 首页 > article >正文

Linux文件的压缩和解压

【图书推荐】《Ubuntu Linux系统管理与运维实战》_学ubuntu哪本书好-CSDN博客

【图书介绍】】几本Linux系统管理与运维图书_朱文伟 linux驱动-CSDN博客

《Ubuntu Linux系统管理与运维实战(Linux技术丛书)》(张春晓,肖志健)【摘要 书评 试读】- 京东图书

在归档文件的时候,通常是对文件进行压缩处理,以节约磁盘空间。而需要查询归档文件的时候,则是将压缩后的文件释放出来。Linux提供了非常多的压缩和解压缩工具,这些工具通常是成对出现的,每种工具都有自己的特色。本节将对常用的几种压缩/解压缩工具进行介绍。

5.8.1  压缩文件

压缩文件是按照某种特定的压缩算法将文件内容进行压缩,以减少占用的磁盘空间。Linux系统中常用的压缩命令有zip、gzip、compress、bzip2等。

1. zip命令

zip命令的基本语法如下:

zip [option] zipfile file ...

zip命令常用的选项有:

  1. -d:从压缩文件中删除指定的文件。
  2. m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
  3. -r:递归处理,将指定目录下的所有文件和子目录一并处理。

zipfile参数为压缩文件的名称,file参数为要压缩的文件列表,多个文件名之间用空格隔开,可以使用通配符。zip命令压缩后的文件的扩展名为.zip。

例如,下面的命令将所有.c文件压缩成src.zip文件:

liu@ubuntu:~$ zip src.zip *.c
  adding: all.c (deflated 69%)
  adding: file.c (deflated 32%)
  adding: hello.c (deflated 13%)

使用-d选项可以将某个文件从压缩文件中删除,如下所示:

liu@ubuntu:~$ zip -d src.zip file.c
deleting: file.c

上面的命令将file.c文件从src.zip文件中删除。

使用-r选项可以实现递归压缩目录,例如,下面的命令将src目录及其子目录压缩为src.zip:

liu@ubuntu:~$ zip -r src.zip src
  adding: src/ (stored 0%)
  adding: src/hello1.c (deflated 20%)
  adding: src/test.c (stored 0%)
  adding: src/file.c (deflated 32%)
  adding: src/hello.c (deflated 13%)
2. gzip命令

gzip是Linux系统中经常使用的压缩命令之一,既方便又好用。gzip不仅可以用来压缩大的文件以节省磁盘空间,还可以和tar命令一起构成Linux系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时可以减少传输的时间。gzip命令的基本语法如下:

gzip [ option ] [ name ...  ]

gzip命令常用的选项有:

  1. -d:解压缩文件。
  2. -l:列出压缩文件中每个文件的信息,包括压缩后的大小、压缩前的大小、压缩比以及文件名等。
  3. -r:递归处理,将指定目录下的所有文件及子目录一并处理。

name参数为要压缩的文件的列表,支持通配符。gzip命令压缩后的文件的扩展名为.gz。

例如,下面的命令将当前目录中的所有日志文件压缩成.gz文件:

liu@ubuntu:~/logback$ gzip *.log

压缩完成之后,可以使用ls命令查看执行结果,如下所示:

liu@ubuntu:~/logback$ ls -l
总用量 12
-rw-r--r-- 	1 	liu 	liu 		8146 	9月   9 11:25 	bootstrap.log.gz
-rw-r--r-- 	1 	liu 	liu  	576 		9月   9 11:25 	fontconfig.log.gz

可以发现,默认情况下gzip命令会逐个将文件压缩,压缩文件以源文件名加上后缀.gz命名,操作完成后,原始文件被删除。

用户可以使用-l选项查看该压缩文件,如下所示:

liu@ubuntu:~/logback$ gzip -l bootstrap.log.gz 
         compressed      	uncompressed  	ratio	 	uncompressed_name
        	8146       		59400  			86.3% 		bootstrap.log

单独的gzip命令不可以将多个文件压缩为一个文件,但是用户可以结合tar命令来实现这个操作。首先通过tar命令将所需要压缩的文件打包,然后将打包后的.tar文件压缩。这就是在Linux系统中经常见到的.tar.gz文件。

3. compress命令

compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出.Z的扩展名。compress命令的基本语法与gzip大同小异。例如,下面的命令将当前目录中的所有的.c文件压缩为.Z文件:

liu@ubuntu:~/src$ compress *.c
liu@ubuntu:~/src$ ls -l
总用量 16
-rwxr-xr-x 	1 	liu 		liu 		273 		9月   9 11:09 	file.c.Z
-rwxr-xr-x 	1 	liu 		liu 		171 		9月   9 11:09 	hello1.c.Z
-rwxr-xr-x 	1 	liu 		liu 		135 		9月   9 11:09 	hello.c.Z
…
4. bzip2

bzip2命令用于创建和管理扩展名为.bz2的压缩包。bzip2命令常用的选项有:

  1. -d:执行解压缩。
  2. -f:在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,则使用此选项。
  3. -k:在执行压缩时,保留原始文件。

例如,下面的命令将当前目录中所有的.c文件压缩为.bz2文件:

liu@ubuntu:~/src$ bzip2 *.c
liu@ubuntu:~/src$ ls -l
总用量 16
-rwxr-xr-x 	1 	liu 		liu 		278 		9月   9 11:09 	file.c.bz2
-rwxr-xr-x 	1 	liu 		liu 		185 		9月   9 11:09 	hello1.c.bz2
-rwxr-xr-x 	1 	liu 		liu 		155 		9月   9 11:09 	hello.c.bz2
-rw-r--r-- 	1 	liu 		liu  	42 		9月   9 15:30 	test.c.bz2
…

注意:除zip命令外,gzip、compress以及bzip2命令都不可以将多个文件压缩为单个文件。在使用后3个命令压缩文件时,可以结合tar命令实现将多个文件压缩为单个文件。

5.8.2  解压文件

由于每个压缩命令都有自己的压缩算法,因此压缩命令和解压命令通常都是成对的。zip、gzip、compress和bzip2命令对应的解压命令分别为unzip、gunzip、uncompress和bunzip2。

例如,下面的命令列出压缩文件src.zip中的文件列表:

liu@ubuntu:~$ unzip -l src.zip 
Archive:  src.zip
  Length      	Date    			Time    		Name
---------  		---------- 		-----   		----
    	0  			2023-07-09 		15:30   		src/
   	183  		2023-07-09 		11:09   		src/hello1.c
    	5  			2023-07-09 		15:30   		src/test.c
   	331  		2023-07-09 		11:09   		src/file.c
    	138  		2023-07-09 		11:09   		src/hello.c
---------                     		-------
      657       

下面的命令将文件src.zip解压:

liu@ubuntu:~$ unzip src.zip 
Archive:  src.zip
  inflating: src/hello1.c            
 extracting: src/test.c              
  inflating: src/file.c              
  inflating: src/hello.c     

下面的命令将sorted1.txt.gz文件解压,并且删除压缩文件:

liu@ubuntu:~$ gunzip sorted1.txt.gz

下面的命令将all.c.gz文件解压,并且删除压缩文件:

liu@ubuntu:~$ uncompress all.c.gz

下面的命令将所有的.bz2文件解压:

liu@ubuntu:~/src$ bunzip2 *.bz2


http://www.kler.cn/a/452355.html

相关文章:

  • CSS系列(36)-- Containment详解
  • Git--tag标签远程管理
  • python fastapi docs UI 失效解决方案
  • Unity中LineRenderer使用MeshCollider方法参考
  • React Native 集成原生Android功能
  • ROM修改进阶教程------修改刷机包init.rc 自启用户自定义脚本的一些基本操作 代码格式与注意事项
  • 本地部署 Go File 文件服务并实现外部访问
  • 负载均衡器到底是个啥?
  • 【每日学点鸿蒙知识】压力测试、Web组件拦截器、nfc开关状态、定位能力、rn支持的三方库
  • Redis——双写一致性
  • 【iOS安全】Block开发与逆向
  • jupyter-lab与实验室服务器远程链接
  • 设计模式——工厂方法模式
  • sqli-labs关卡记录13
  • 代码随想录算法训练营第51期第28天 | 122. 买卖股票的最佳时机 II、55. 跳跃游戏、45. 跳跃游戏 II、1005.K次取反后最大化的数组和
  • 实现用户登录系统的前后端开发
  • 第4章 函数
  • mysql主从同步延迟原因分析
  • 当代体育科技杂志当代体育科技杂志社当代体育科技编辑部2024年第33期目录
  • 【Java-tesseract】OCR图片文本识别
  • 微调 BERT:实现抽取式问答
  • 4G云网络广播系统
  • 替换 Docker.io 的 Harbor 安全部署指南:域名与 IP 双支持的镜像管理解决方案
  • 湖南引力:低代码助力实现智慧养老管理系统
  • Ubuntu重命名默认账户
  • YoloV9改策略:卷积改进|SAC,提升模型对小目标和遮挡目标的检测性能|即插即用