linux 常用的压缩命令有 tar、gzip、bzip2、zip。
通过 tar 可以实现 gz ,bz2 ,tar 的打包压缩。
常用的命令主要是tar,通过 tar 进行打包压缩,解压,解包等操作。主要的压缩格式是gz,然后是bz2。通常上传的压缩格式文件是zip,所以常用的解压命令是unzip,这个主要是因为windows下面的打包基本上都是zip格式。
主要的压缩打包后缀如下:
.Z // compress程序压缩产生的文件(现在很少使用)
.gz // gzip程序压缩产生的文件
.bz2 // bzip2程序压缩产生的文件
.zip // zip压缩文件
.tar // tar程序打包产生的文件
.tar.gz // 由tar程序打包并由gzip程序压缩产生的文件
*.tar.bz2 // 由tar程序打包并由bzip2程序压缩产生的文件
gzip可以压缩产生后缀为 .gz 的压缩文件,也可以用于解压gzip、compress等程序压缩产生的文件。不带任何选项和参数使用gzip或只带有参数 - 时,gzip从标准输入读取输入,并在标准输出输出压缩结果。
gzip的常用指令选项如下:
基础格式: gzip [Options] file1 file2 file3
指令选项:(默认功能为压缩)
-c //将输出写至标准输出,并保持原文件不变
-d //进行解压操作
-v //输出压缩/解压的文件名和压缩比等信息
-digit //digit部分为数字(1-9),代表压缩速度,digit越小,则压缩速度越快,但压缩效果越差,digit越大,则压缩速度越慢,压缩效果越好。默认为6.
注意:使用gzip 指令压缩/解压文件均会使源文件消失。如果想要保存源文件使用-c参数进行重定向操作。
示例:
gzip exp1.txt exp2.txt //分别将exp1.txt和exp2.txt压缩,且不保留原文件。注意对于多个文件参数是将多个文件分别进行压缩,而不是压缩在一起。参考下文 tar 指令。
gzip -dv exp1.gz //将exp1.gz解压,并显示压缩比等信息。
gzip -cd exp1.gz > exp.1 //将exp1.gz解压的结果放置在文件exp.1中,并且原压缩文件exp1.gz不会消失
特别注意第三条实例, -d 指示解压缩,-c 参数是将结果输出至标准输出,通过 > 符号,将原本输出至标准输出的解压结果重定向至exp.1中,既解压了文件,原压缩文件也没有消失。
注:对应于 gzip,可以使用 gunzip 进行解压操作,效果类似gzip -d xx,同时可以使用zcat读取压缩文件的内容并显示在标准输出,功能类似于 gzip -c xx.
bzip2
bzip2是采用更好压缩算法的压缩程序,一般可以提供较之gzip更好的压缩效果。其具有与gzip相似的指令选项,压缩产生 .bz2 后缀的压缩文件。
bzip2的常用指令选项如下:
基础格式: bzip2 [Options] file1 file2 file3
指令选项:(默认功能为压缩)
-c //将输出写至标准输出
-d //进行解压操作
-v //输出压缩/解压的文件名和压缩比等信息
-k //在压缩/解压过程中保留原文件
-digit //digit部分为数字(1-9),代表压缩速度,digit越小,则压缩速度越快,但压缩效果越差,digit越大,则压缩速度越慢,压缩效果越好。默认为6.
bzip2 exp1.txt exp2.txt //分别将exp1.txt和exp2.txt压缩,且不保留原文件。**
bzip2 -dv exp1.bz2 //将exp1.bz2解压,并显示压缩比等信息。
bzip2 -kd exp1.bz2 //将exp1.bz2解压,并且原压缩文件exp1.bz2不会消失
注:对应于 bzip2,可以使用 bunzip2 进行解压操作,效果类似bunzip2 -d xx,同时可以使用bzcat读取压缩文件的内容并显示在标准输出,功能类似于 bzip2 -c xx.
上文已经提到,gzip 或 bzip2 带有多个文件作为参数时,执行的操作是将各个文件独立压缩,而不是将其放在一起进行压缩。这样就无法产生类似于Windows环境下的文件夹打包压缩的效果。(gzip与bzip2也可以使用文件夹作为参数,使用 -f 选项,但也是将其中的每个文件独立压缩)。为了实现打包压缩的效果,可以使用命令 tar 进行文件的打包操作(archive),再进行压缩。
tar 指令可以将文件打包成文件档案(archive)存储在磁盘/磁带中,打包操作一般伴随压缩操作,也可以使用 tar 指令对打包压缩后的文件解压。
tar 常用命令参数如下:
基本格式:tar [Options] file_archive //注意tar的第一参数必须为命令选项,即不能直接接待处理文件
常用命令参数:
//指定tar进行的操作,以下三个选项不能出现在同一条命令中
-c //创建一个新的打包文件(archive)
-x //对打包文件(archive)进行解压操作
-t //查看打包文件(archive)的内容,主要是构成打包文件(archive)的文件名
//指定支持的压缩/解压方式,操作取决于前面的参数,若为创建(-c),则进行压缩,若为解压(-x),则进行解压,不加下列参数时,则为单纯的打包操作
-z //使用gzip进行压缩/解压,一般使用.tar.gz后缀
-j //使用bzip2进行压缩/解压,一般使用.tar.bz2后缀
//指定tar指令使用的文件,若没有压缩操作,则以.tar作为后缀
-f filename //-f后面接操作使用的文件,用空格隔开,且中间不能有其他参数,推荐放在参数集最后或单独作为参数
//文件作用取决于前面的参数,若为创建(-c),则-f后为创建的文件的名字(路径),若为(-x/t),则-f后为待解压/查看的打包压缩文件名
//其他辅助选项
-v //详细显示正在处理的文件名
-C Dir //将解压文件放置在 -C 指定的目录下
-p(小写) //保留文件的权限和属性,在备份文件时较有用
-P(大写) //保留原文件的绝对路径,即不会拿掉文件路径开始的根目录
—exclude=file //排除不进行打包的文件
zip文件相关命令 — unzip
unzip 命令与之前的 tar 指令类似,具有对 zip 文件进行查看、测试和解压的功能。
基本格式:unzip [Options] file[.zip] //不接任何Options时,默认将指定的file文件解压至当前文件夹,可同时接受多个文件参数
常用命令参数:
//压缩文件内容查看
-Z //以形如 ls -l 的格式显示目标文件内容,实际原理是命令第一个参数为-Z时,其余参数会被视为 zipinfo 的参数,并产生对应效果
-Z1 //仅显示压缩文件内容的文件名,更多显示可查看 zipinfo 命令的 man 帮助
-l //显示压缩文件中包括时间、占用空间和文件名等信息,内容上较 -Z 更简单
//文件测试
-t //在内存中解压文件并进行文件的完整性校验(CRC校验)
//解压缩参数,注意unzip默认即为解压操作
-f //注意与 tar 命令不同,unzip指定 -f 参数时,则将磁盘上已经存在且内容新于对应磁盘文件的压缩内容解压出来
-n //解压缩时不覆盖已存在的文件(而是跳过)
-q //安静模式,仅解压缩而不输出详细信息
-d dir //将文件解压至dir指定的文件夹中
