常见的压缩命令
| 扩展名 | 压缩软件 |
|---|---|
| *.Z | compress 软件 |
| *.zip | zip程序 |
| *.gz | gzip程序 |
| *.bz2 | bzip2程序 |
| *.xz | xz 程序 |
| *.tar | tar程序打包的文件,未压缩 |
| *.tar.gz | tar程序打包,并经过gzip压缩 |
| *.tar.bz2 | tar程序打包,并经过bzip2压缩 |
| *.tar.xz | tar程序打包,并经过xz压缩 |
其中 compress 已基本弃用,而zip是为了支持windows而出现的,在linux中使用的也就之后的几个压缩命令。
文件压缩
在现在的linux中,常用的单个文件压缩软件有gzip,bzip2和xz,就压缩比而言,gzip < bzip2 < xz,但相对的,压缩时间 gzip < bzip2 < xz。
gzip
gzip 是一种使用较为广泛的压缩命令,它可以解开 compress、zip和gzip等软件所压缩的文件,其压缩后的文件名为 *.gz
$ gzip [option] {filename}
选项和参数:
-c : 将压缩数据输出到屏幕上
-d : 解压缩
-k : 保留原始文件
-v : 显示压缩信息(压缩比等)
-n : 1-9的数字,代表压缩等级,1最差,9最好,默认为6
-l : 列出压缩文件的相关信息
# 压缩文件
# 这样之后压缩的文件会覆盖原始文件
$ gzip example.md
# 压缩文件,显示压缩信息,并保留源文件
# 第一种方法
$ gzip -kv example.md
# 第二种方法,使用数据流重定向
$ gzip -cv example.md > example.md.gz
# 解压缩文件
$ gzip -dv example.md.gz
# 使用9级压缩
$ gzip -9v example.md
# 显示压缩文件的信息
$ gzip -l example.gz
一般来说无论压缩还是解压缩,默认都是替换原有文件,要想保留原始文件就必须另加选项或参数。
至于压缩等级,虽然9级压缩率最好,但是时间成本会比较高,酌情使用。
使用 zcat, zmore, zless 可以读取被压缩后的压缩文件的纯文本内容。使用 zgrep 可以在压缩文件中查找纯文本内的关键字。
$ zgrep "vim" example.md.gz
bzip2
bzip2 是比 gzip 更好的压缩命令,其提供的压缩比更好,但相对的,它所花的压缩时间也会更久。bzip2 的用法与gzip基本相同,压缩后的文件名为 *.bz2
$ bzip2 [option] [filename]
选项和参数:
-c : 将压缩数据输出到屏幕上
-d : 解压缩
-k : 保留原始文件
-v : 显示压缩信息
-n : 1-9的数字,代表压缩等级,1最差,9最好,默认为6
-l : 列出压缩文件的相关信息
# 压缩文件,并保留原始文件
$ bzip2 -kv example.md
# 解压缩
$ bzip2 -dv example.md.bz2
同样的,bzip2 也有 bzat,bzmore,bzless 和 bzgrep 使用。
xz
xz 是比 bzip2 更棒的一个压缩命令,同样的,压缩的时间成本也更高。其压缩文件为 *.xz,其用法与前两者基本相同,所以就不显示示例了。
$ xz [option] [filename]
选项和参数:
-c : 将压缩数据输出到屏幕上
-d : 解压缩
-k : 保留原始文件
-v : 显示压缩信息
-n : 1-9的数字,代表压缩等级,1最差,9最好,默认为6
-l : 列出压缩文件的相关信息
同样的,xz 也有 xzcat,xzmore,xzless和xzgrep。
打包压缩
gzip,bzip2和xz只是针对单个文件进行压缩,一般情况下不能针对一个目录。但是通过 tar 对一个目录进行打包就可以进行压缩。可以用 ta r打包再 用 gzip 等进行压缩,也可以将这两个步骤合并使用。
# 打包与压缩
$ tar [-z|-j|-J] [-cv] [-f 目标文件名] 被压缩文件名
# 查看打包文件
$ tar [-z|-j|-J] [-tv] [-f 文件名]
# 解压缩
$ tar [-z|-j|-J] [-xv] [-f 文件名] [-C 目录]
选项与参数:
-c : 建立打包文件
-t : 查看打包文件含有的文件
-x : 解包或解压缩
----------------------------------------
-z : 使用 gzip 进行压缩,文件名为 *.tar.gz
-j : 使用 bzip2 进行压缩,文件名为 *.tar.bz2
-J : 使用 xz 进行压缩,文件名为 *.tar.xz
----------------------------------------
-v : 显示处理的文件信息
-f : 后要跟被处理的文件名
-C : 后跟目录名,在解压缩时解压至该目录
----------------------------------------
-p : 保留数据原有权限和属性
-P : 保留绝对路径
--exclude=FILE : 在压缩过程中,忽略该文件
# 示例
# 打包
# 若在开头加上 time 会显示程序运行时间
$ tar -cv -f example.tar example
# 打包并用gzip压缩
$ tar -zcvf example.tar.gz example
# 查看打包文件中所含文件
# 若加上-v 则会显示文件完整(属性)信息
$ tar -ztf example.tar.gz
# 解压缩至当前目录
$ tar -zxvf example.tar.gz -C .