目录

linux-压缩命令

gzip

压缩单个文件

gzip命令的使用方式很简单,命令后直接跟输入文件即可,gzip命令压缩后默认会覆盖源文件,生成以.gz为后缀的文件。 命令加-k参数,表示keep保留源文件

gzip -k a.txt

压缩目录下所有文件

-r参数表示递归压缩目录下每一个文件的作用,gzip命令只能压缩单个文件,即使压缩目录,也只是压缩目录下的每一个文件。(这里讲gzip只能压缩单个文件,并不是一次只能压缩一个文件,而是压缩的单位是单个文件,即并不能将多个文件压缩成为一个文件。)

ls directory
a  b
gzip -r directory
ls directory
a.gz  b.gz

解压缩单个文件

解压缩有两种方式,可以使用gzip -d或者gunzip完成解压缩操作。 同理,可以使用-k参数保留源文件

gunzip -k dd.txt.gz

bzip2

相对于gzip,bzip2是一个压缩效率更高的命令,压缩后文件占据的空间更小,所以需要的压缩时间要比gzip更久,bzip2的使用方式与gzip基本相同。

bzip2 a // 压缩
bzip2 -dk a.bz2 // 解压
bunzip2 a.bz2 // 解压

bzip2命令的压缩和解压方式与gzip相同,且同样通过-k参数保留源文件。压缩后生成以.bz2为后缀的文件。

bzip2命令对目录的压缩同样是压缩目录下每一个文件,不过bzip2命令并没有提供-r参数,所以无法递归的对目录下文件进行压缩与解压操作。

zip

zip压缩

zip命令的压缩率要低于bzip2和gzip,不过使用较为广泛,且兼容性较好。

zip dest.txt.zip src.txt
unzip test.zip

zip命令生成以.zip为后缀的压缩文件,使用-r参数完成对目录的递归压缩,且默认情况下不删除源文件。zip命令提供有-m参数,用于删除源文件,-m表示move移动源文件到压缩包中的意思。

unzip解压缩

与压缩操作相同,解压缩操作同样不删除源文件,所以若目录下存在同名文件时,会出现是否更新文件的提示。 使用-o参数忽略提示,直接更新同名文件,-o表示overwrite覆盖同名文件的意思。unzip同时提供-n参数,忽略提示并不更新同名文件,-n表示never覆盖同名文件的意思。

打包和压缩

打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另它的工具将这一大堆文件先打成一个包,然后再就原来的压缩程序进行压缩。

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法:

tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面来举例说明一下:

*tar -cf all.tar .jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

tar -xf all.tar 这条命令是解出all.tar包中所有文件,-x是解开的意思。

以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压缩程序,比如调用gzip、bzip2等。

tar调用压缩程序

tar中使用-z这个参数来调用gzip。下面来举例说明一下:

*tar -czf all.tar.gz .jpg 这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz

tar -xzf all.tar.gz 这条命令是将上面产生的包解开。

tar中使用-j这个参数来调用gzip。下面来举例说明一下:

*tar -cjf all.tar.bz2 .jpg 这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2

tar -xjf all.tar.bz2 这条命令是将上面产生的包解开。