压缩文件文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件 时,可以减少传输的时间。
首先要弄清两个概念:打包(归档)和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
归档,也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和。
压缩是指利用算法将文件进行处理,已达到保留最大文件信息,而让文件体积变小的目的。其基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。在 Linux系统中同样支持这种操作,而且不同的压缩方式,压缩的效果还不一样,下面就和大家分享一下我日常工作中维护Linux系统常用的一些归档压缩命令。
Linux 下,常用归档命令有 2 个,分别是 tar 和 dd(相对而言,tar 的使用更为广泛);常用的压缩命令有很多,比如 gzip、zip、bzip2 等
tar打包和解包
Linux 系统中,最常用的归档(打包)命令就是 tar,该命令可以将许多文件一起保存到一个单独的磁带或磁盘中进行归档。不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为解打包。使用 tar 命令归档的包通常称为 tar 包(tar 包文件都是以“.tar”结尾的)。
注意其实 tar 命令是可以同时打包并且压缩的,前面的的叙述主要想说明在 Linux 中打包和压缩的不同
1.用tar打包的常见参数与操作(-zcvf)
格式:tar [选项] XXX.tar.gz 将要打包进去的内容(功能描述:打包目录,压缩后的文件格式.tar.gz)
选项 | 含义 |
-c | 将多个文件或目录进行打包。 |
-A | 追加 tar 文件到归档文件。 |
-f 包名 | 指定包的文件名。包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名; |
-v | 显示打包文件过程,显示执行详细信息; |
-z | 打包同时压缩 |
2. 用tar解包的常见参数与操作(-zxvf)
选项 | 含义 |
-x | 对 tar 包做解打包操作。 |
-f | 指定要解压的 tar 包的包名。 |
-t | 只查看 tar 包中有哪些文件或目录,不对 tar 包做解打包操作。 |
-C 目录 | 指定解打包位置。注意不带-C,解压到当前目录 |
-v | 显示解打包的具体过程。 |
gzip/gunzip 压缩
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
注意打包和压缩不是一个概念。
- gzip 文件(功能描述:压缩文件,只能将文件压缩为*.gz文件)。注意只能压缩文件不能压缩目录,同时压缩时不保留原文件,打包是保留的。注意同时压缩多个文件时会产生多个压缩包,而不是一个压缩包。如果想只产生一个压缩包,那就要先把多个文件用tar先打包。
- gunzip 文件.gz (功能描述:解压缩文件命令)
zip/unzip 压缩
如果命令不存在的话,直接安装:yum install -y unzip zip
- zip [选项] XXX.zip 将要压缩的内容
(功能描述:压缩文件和目录的命令,注意可以使用zip -r压缩目录)
- unzip [选项] XXX.zip (功能描述:解压缩文件,注意,可以使用unzip -d指定解压后的文件存放目录)