1、概念讲解

在讲 Linux 上的压缩工具之前,有必要先了解一下常见常用的压缩包文件格式。在 Windows 上最常见的不外乎这两种 .zip,.7z 后缀的压缩文件。而在 Linux 上面常见的格式除了以上两种外,还有 .rar,.gz,.xz,.bz2,.tar,.tar.gz,.tar.xz,*.tar.bz2,简单介绍如下:

文件后缀名 说明
.zip zip 程序打包压缩的文件
.rar rar 程序压缩的文件
.7z 7zip 程序压缩的文件
.tar tar 程序打包,未压缩的文件
.gz gzip 程序(GNU zip)压缩的文件
.xz xz程序压缩的文件
.bz2 bzip2程序压缩的文件
.tar.gz tar打包,gzip程序压缩的文件
.tar.xz tar打包,xz程序压缩的文件
.tar.bz2 tar打包,bzip2程序压缩的文件
.tar.7z tar打包,7z程序压缩的文件

2、文件打包和解压缩

2.1 zip压缩打包程序

· 使用zip打包文件夹:

$cd /home/aaa
$zip -r -q -o aaa.zip /home/aaa/Desktop
$du -h aaa.zip
$file aaa.zip

上面的命令将目录/home/aaa/Desktop打包成一个文件并查看打包后文件的大小和类型。
第一行命令中,-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。后面使用du命令查看打包后文件的大小。
· 设置压缩级别为9和1(9最大,1最小),重新打包:

$zip -r -9 -q -o aaa_9.zip /home/aaa/Desktop -x ~/*.zip
$zip -r -1 -q -o aaa_1.zip /home/aaa/Desktop -x ~/*.zip

这里添加一个参数用于设置压缩级别-【1-9】,1表示最快压缩但是体积最大,9表示体积最小但是耗时最久。最后那个-x是为了排除我们上一次创建的zip文件,否则又会被打包进这一次的压缩文件中。
注意:这里只能使用绝对路径,否则不起作用
我们再用 du 命令分别查看默认压缩级别、最低、最高压缩级别及未压缩的文件的大小:

$du -h -d 0 *.zip ~ | sort

通过man手册可知:
· h,——human-readable
· d,——max-depth(所查看文件的深度)
理论上来说默认压缩级别应该是最高的,但是由于文件不大,这里的差异不明显。

· 创建加密zip包:
使用 -e 参数可以创建加密压缩包:

$zip -r -e -o aaa_encryption.zip /home/aaa/Desktop

注意: 关于 zip 命令,因为 Windows 系统与 Linux/Unix 在文本文件格式上的一些兼容问题,比如换行符(为不可见字符),在 Windows 为 CR+LF(Carriage-Return+Line-Feed:回车加换行),而在 Linux/Unix 上为 LF(换行),所以如果在不加处理的情况下,在 Linux 上编辑的文本,在 Windows 系统上打开可能看起来是没有换行的。如果你想让你在 Linux 创建的 zip 压缩文件在 Windows 上解压后没有任何问题,那么你还需要对命令做一些修改:

$zip -r -l -o aaa.zip /home/aaa/Desktop

需要加上 -l 参数将 LF 转换为 CR+LF 来达到以上目的。

2.2 使用unzip命令解压缩zip文件

将aaa.zip解压到当前目录:

$ unzip aaa.zip

使用安静模式,将文件解压到指定目录:

$ unzip -q aaa.zip -d ziptest

上述指定目录不存在,将会自动创建。如果你不想解压只想查看压缩包的内容你可以使用 -l 参数:

$ unzip -l aaa.zip

注意: 使用 unzip 解压文件时我们同样应该注意兼容问题,不过这里我们关心的不再是上面的问题,而是中文编码的问题,通常 Windows 系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,我们可以在解压时指定编码类型。
使用 -O(英文字母,大写 o)参数指定编码类型:

$ unzip -o GBK 中文压缩文件.zip

2.2 使用unzip命令解压缩zip文件

在 Linux 上面更常用的是 tar 工具,tar 原本只是一个打包工具,只是同时还是实现了对 7z、gzip、xz、bzip2 等工具的支持,这些压缩工具本身只能实现对文件或目录(单独压缩目录中的文件)的压缩,没有实现对文件的打包压缩,所以我们也无需再单独去学习其他几个工具,tar 的解压和压缩都是同一个命令,只需参数不同,使用比较方便。
下面先掌握 tar 命令一些基本的使用方式,即不进行压缩只是进行打包(创建归档文件)和解包的操作。
· 创建一个tar包

$cd /home/aaa
$tar -P -cf aaa.tar /home/aaa/Desktop

上面命令中,-P保留绝对路径符,-c表示创建一个tar包文件,-f用于指定创建的文件名,注意文件名必须紧跟在-f参数之后,比如不能写成 tar -fc aaa.tar,可以写成 tar -f aaa.tar -c ~。你还可以加上 -v 参数以可视的的方式输出打包的文件。
· 解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数):

$mkdir tardir
$tar -xf aaa.tar -C tardir

· 只查看不解包文件 -t 参数:

$tar -tf aaa.tar

· 保留文件属性和跟随链接(符号链接或软链接),有时候我们使用 tar 备份文件当你在其他主机还原时希望保留文件的属性(-p 参数)和备份链接指向的源文件而不是链接本身(-h 参数):

$tar -cphf etc.tar /etc

对于创建不同的压缩格式的文件,对于 tar 来说是相当简单的,需要的只是换一个参数,这里我们就以使用 gzip 工具创建 *.tar.gz 文件为例来说明。
· 我们只需要在创建 tar 文件的基础上添加 -z 参数,使用 gzip 来压缩文件:

$ tar -czf aaa.tar.gz /home/aaa/Desktop

· 解压 *.tar.gz 文件:

$ tar -xzf aaa.tar.gz

现在我们要使用其它的压缩工具创建或解压相应文件只需要更改一个参数即可:

压缩文件格式 参数
.tar.gz -z
.tar.xz -J
.tar.bz2 -j

3、总结

4、拓展

天冷的时候,要是有个火炉就好了。这里有个有趣的程序:

$sudo apt-get install libaa-bin
#提示command not found,请自行解决
$aafire

Linux新手上路(六):文件打包和解压缩相关推荐

  1. EduCoder Linux之文件打包和解压缩

    本实训主要讲解Linux中对文件/目录压缩和解压缩操作. 随着多媒体.视频图象.文档映象等技术的出现,数据压缩成了一个重要研究点.数据压缩基本上是挤压数据使得它占用更少的磁盘存储空间和更短的传输时间. ...

  2. Linux之文件打包和解压缩

    第1关:tar打包命令 有时,我们会在Linux系统中将多个文件打包成一个单独的文件,通过本关的学习,我们将学会如何在Linux系统中将多个文件/目录打包生成一个文件. 本关任务:使用tar命令完成文 ...

  3. linux打包压缩文件并命名,linux下如何将文件打包、压缩并分割成制定大小

    将大文件或目录打包.压缩并分割成制定大小的文件,这在将数据备份到容量有限的移动储存设备时是必须的,在Linux下可以通过组合使用tar,bzip2(或者gzip),split命令来实现. 假设要将下面 ...

  4. Linux下的常用的打包和解压缩命令

    各个不同后缀的含义如下: .tar打包格式:tar程序打包的数据,并没有压缩过 .z格式:compress程序压缩的文件 .gz压缩格式:gzip程序压缩的文件 .bz2压缩格式:bzip2程序压缩的 ...

  5. linux中如何压缩单个文件大小,Linux 将文件打包、压缩并分割成指定大小

    打包文件: tar -cvf .tar 分割文件: split -b 3G -d -a .tar .tar. //使用split命令,-b 3G 表示设置每个分割包的大小,单位还是可以k // -d ...

  6. system.img解包打包工具_好程序员云计算学习路线分享文件打包及压缩

    好程序员云计算学习路线分享文件打包及压缩 好程序员 建议针对目录 Demo: 复制未打包的文件到远程主机 [root@yangs ~]# du -sh /etc 39M /etc [root@yang ...

  7. 如何将文件打包、压缩并分割成制定大小?

    如何将文件打包.压缩并分割成制定大小? (如何在linux下实现Windows中winrar和winzip等压缩软件所提供的打包压缩分割功能) 将大文件或目录打包.压缩并分割成制定大小的文件,这在将数 ...

  8. Linux新手上路命令

    Linux新手上路命令 命令:www.ahlinux.com Ctrl+Alt+F1  进入命令界面 Ctrl+Alt+F7  返回图形界面 root用户和普通用户切换 administrator 2 ...

  9. linux tar zcxf,tar/gzip/zip文件打包、压缩命令

    一.tar打包备份工具 1.命令功能 tar 将多个文件或目录打包在一起,可用通过调用gzip或zip实现压缩.解压的命令:tar不仅可以多多个文件进行打包,还可以对多个文件打包后进行压缩. 2.语法 ...

最新文章

  1. STL源码剖析学习七:stack和queue
  2. 自学python能干些什么副业好-python可以作为副业赚钱嘛?
  3. 全球44家机构,55位大佬,历时两年,打造最强NLG评测基准!
  4. oracle近似查找,距离内的Oracle空间搜索
  5. Oracle性能优化技巧
  6. maven(二) maven项目构建ssh工程(父工程与子模块的拆分与聚合)
  7. 房屋建筑与装饰工程工程量计算新旧规范对比(一)
  8. VUE3中使用粒子特效
  9. 山重水复疑无路 柳暗花明又一村
  10. 运筹优化(十三)--大规模优化方法
  11. makefile suppress echoing the actual command @
  12. 有关UEFI,GPT分区以及系统引导等问题的了解
  13. mac电脑软件卸载不掉 如何用CleanMyMac X彻底删除?
  14. 有一对兔子,从出生后的第 3 个月起每个月都生一对兔子。小兔子长到第 3 个月后每个月又生一对兔子,假设所有的兔子都不死,问 20 个月内每个月的兔子总数为多少?
  15. 用AI语音机器人有哪些需要注意事项
  16. 还在买鲜花送女神?手把手教你搭建3D立体相册网站,包女神稀饭
  17. cadence allegro 17.2中的正负片
  18. 超越云存储,用一勺蛋白质保存整个图书馆
  19. ant design vue的ApiSelect选择器使用注意点
  20. Cadence Orcad Capture CIS 原理图库数据库管理搭建方法图文教程

热门文章

  1. 【谈天说地】巴洛克建筑
  2. 新新人类,希望各位大侠多多照顾IT痴虫!
  3. 监控易这个基本功,让信创产品落地即具备“可观测性”
  4. 如何了解一个软件的设计?
  5. 优秀笔记课件——Google 及其它搜索引擎的高级使用
  6. 蓄电池放电容量测试方法——TFN DC-E60150蓄电池放电容量测试仪
  7. php微信头像下载,微信2000个头像打包下载
  8. 计算机平面设计必学英语,40个Fireworks学习英文教程
  9. Zemax操作6--激光扩束镜
  10. 文末有福利 | IT从业者应关注哪些技术热点?