文章目录
归档,也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和
通常,归档总是会和系统(数据)备份联系在一起
和归档文件类似,压缩文件也是一个文件和目录的集合,且这个集合也被存储在一个文件中,但它们的不同之处在于,压缩文件采用了不同的存储方式,使其所占用的磁盘空间比集合中所有文件大小的总和要小
压缩是指利用算法将文件进行处理,已达到保留最大文件信息,而让文件体积变小的目的。其基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。
由于计算机处理的信息是以二进制的形式表示的,因此,压缩软件就是把二进制信息中相同的字符串以特殊字符标记,只要通过合理的数学计算,文件的体积就能够被大大压缩。把一个或者多个文件用压缩软件进行压缩,形成一个文件压缩包,既可以节省存储空间,又方便在网络上传送
如果你能够理解文件压缩的基本原理,那么很容易就能想到,对文件进行压缩,很可能损坏文件中的内容,因此,压缩又可以分为有损压缩和无损压缩。无损压缩很好理解,指的是压缩数据必须准确无误;有损压缩指的是即便丢失个别的数据,对文件也不会造成太大的影响。有损压缩广泛应用于动画、声音和图像文件中,典型代表就是影碟文件格式 mpeg、音乐文件格式 mp3 以及图像文件格式 jpg。
采用压缩工具对文件进行压缩,生成的文件称为压缩包,该文件的体积通常比原文件小很多。需要注意的是,压缩包中的数据无法直接使用,使用前需要利用压缩工具将文件数据还原,此过程又称解压缩
一、zip命令
压缩文件或目录
在 Windows 系统上使用 “.zip”格式压缩文件,其实“.zip”格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,属于几种主流的压缩格式(zip、rar等)之一,是一种相当简单的分别压缩每个文件的存储格式,
通过此命令压缩得到的新文件,其扩展名通常标记为“.zip”
用法: zip [选项] 压缩包名 源文件或源目录列表
注意,zip 压缩命令需要手工指定压缩之后的压缩包名,建议自己写好.zip扩展名,以便区别及解压缩时使用。
zip命令在压缩任务完成后,默认会保留原始文件
常用选项:
- -r: 递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩。
- -m: 将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。
- -v: 显示详细的压缩过程信息。
- -q: 在压缩的时候不显示命令的执行过程。
- -压缩级别: 压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
- -u: 更新压缩文件,即往压缩文件中添加新文件。
- -d: 从压缩文件内删除指定的文件。
【例 1】
压缩passwd.txt文件
[root@admin roottest]# zip passwd.zip passwd.txt
adding: passwd.txt (deflated 79%)
[root@admin roottest]# ll passwd.zip
-rw-r--r-- 1 root root 1439 8月 4 10:20 passwd.zip
[root@admin roottest]# ls
passwd.txt passwd.zip
可以看到,压缩后源文件依然会保留
不仅如此,该命令还可以同时压缩多个文件,例如:
[root@admin ~]# ls
anaconda-ks.cfg UserManage.sh userrecord.txt u.sh
[root@admin ~]# zip messages.zip anaconda-ks.cfg UserManage.sh userrecord.txt u.sh
adding: anaconda-ks.cfg (deflated 49%)
adding: UserManage.sh (deflated 38%)
adding: userrecord.txt (deflated 76%)
adding: u.sh (stored 0%)
[root@admin ~]# ls
anaconda-ks.cfg messages.zip UserManage.sh userrecord.txt u.sh
[root@admin ~]#
【例 2】
压缩效率分别为3和9
[root@admin roottest]# zip -3 passwd3.zip passwd.txt
adding: passwd.txt (deflated 77%)
[root@admin roottest]# zip -9 passwd9.zip passwd.txt
adding: passwd.txt (deflated 79%)
[root@admin roottest]# ll
总用量 16
-rw-r--r-- 1 root root 1566 8月 4 10:33 passwd3.zip
-rw-r--r-- 1 root root 1439 8月 4 10:33 passwd9.zip
-rw-r--r--. 1 root root 6086 8月 2 15:53 passwd.txt
注:
压缩率(Compression ratio),描述压缩文件的效果名,是文件压缩后的大小与压缩前的大小之比
例如:把100m的文件压缩后是90m,压缩率为90/100*100%=90%,压缩率一般是越小越好,但是压得越小,解压时间越长。
压缩效率越大压缩后的文件越小,解压时间越长
【例 3】
将当前目录下的所有文件和文件夹全部压缩成test.zip文件,-r表示递归压缩子目录下所有文件
[root@admin roottest]# zip -r test.zip ./*
【例 4】
删除test.zip压缩文件中的passwd.txt文件
[root@admin roottest]# zip -d test.zip passwd.txt
deleting: passwd.txt
【例 5】
向压缩文件test.zip中添加file1文件
[root@admin roottest]# zip -m test.zip file1
adding: file1 (stored 0%)
【例 6】
压缩文件时排除某个文件
#将当前目录下的所有文件进行压缩除了passwd.txt文件
[root@admin roottest]# ls
passwd3.zip passwd9.zip passwd.txt test.zip
[root@admin roottest]# zip test1.zip ./* -x passwd.txt
adding: passwd3.zip (stored 0%)
adding: passwd9.zip (stored 0%)
adding: test.zip (stored 0%)
二、unzip命令
unzip 命令可以查看和解压缩 zip 文件
用法: unzip [选项] 压缩包名
unzip命令在解压缩任务完成后,默认会保留原始文件
常用选项:
- -d: 目录名 将压缩文件解压到指定目录下。
- -n: 解压时并不覆盖已经存在的文件。
- -o: 解压时覆盖已经存在的文件,并且无需用户确认。
- -v: 查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作。
- -t: 测试压缩文件有无损坏,但并不解压。
- -x: 文件列表 解压文件,但不包含文件列表中指定的文件。
【例 1】
将压缩文件test.zip在当前目录下解压缩
[root@admin test001]# ls
file.zip
[root@admin test001]# unzip file.zip
Archive: file.zip
extracting: 00file
extracting: 01file
extracting: 02file
extracting: 03file
extracting: 04file
extracting: 05file
[root@admin test001]# ls
00file 01file 02file 03file 04file 05file file.zip
可以看到,解压缩后元压缩文件还存在
【例 2】
将压缩文件test.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件
[root@admin test001]# unzip -n test.zip -d /tmp
【例 3】
查看压缩文件目录,但不解压
[root@admin test001]# unzip -v file.zip
#或
[root@admin test001]# unzip -l file.zip
【例 4】
将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件,并且无需用户手动确认
[root@admin test001]# unzip -o test.zip -d /tmp
【例 5】
解压当前目录下的所有zip文件
[root@admin test001]# unzip "*.zip"
三、gzip命令
压缩文件或目录
gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为“.gz”
gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
gzip命令在压缩或