- 首页
- 正文
Linux下的压缩和解压缩详解
在操作Linux文件的时候,压缩和解压缩是非常常见的一种操作,而且要非常熟悉,Linux下的最常用的打包压缩解压缩工具就是 tar
,下面先来说一下什么叫文件打包和文件压缩,然后来说举例说一下这些工具的用法:
什么叫文件打包
将多个文件或者目录合并成一个文件,用来进行文件的备份和传输
什么叫文件压缩
通过压缩算法把文件的体积缩小,同时会将多个文件合并至一起方便传输
Linux支持的压缩格式
- *.gz:gzip 程序压缩文件
- *.bz2:bzip2 程序压缩文件
- *.tar:tar程序打包文件,并未压缩
- *.tar.gz,tar打包的文件,使用gzip压缩
- *.tar.bz2, tar打包的文件,使用bzip2压缩
- *.zip,zip打包压缩的文件
gzip 工具的使用
格式
:gzip 参数 文件名
注意:
- gzip 压缩和解压缩都会把原文件删除的,可以使用
-c
参数来保留原文件 - gzip 只能压缩和解压缩 普通文件 ,对于目录是不支持的,但是在目录里有普通文件,可以使用
-r
参数进行目录里的所有文件进行压缩和解压缩
可选的参数:
- -c 将压缩的数据输入到屏幕上
- -d 解压缩
- -v 显示压缩比
- -t 检查文件是否损坏
- -r 递归操作目录里的文件
- -1 到 -9 ,压缩比,-1 最快,-9 最慢, 默认是 -6
举例
压缩文件,生成后缀是 .gz 的文件
$ cd /home
$ echo "hello world" > /home/test.txt
$ gzip test.txt # 生成 test.txt.gz 文件
解压缩文件,并显示压缩比等信息
$ cd /home
$ gzip -dv test.txt.gz # 生成 test.txt 文件,等同于 gunzip -v test.txt.gz
压缩文件,同时保留原文件
$ cd /home
$ gzip -c test.txt > test.txt.gz
检查 gz
文件是否损坏
$ cd /home
$ gzip -t test.txt.gz
用最快速度来压缩文件 (速度越快,压缩的体积就会越大)
$ cd /home
$ gzip -v1 test.txt # 注意 v 参数不能写在后面
压缩 test
目录里的几个文件和 a.txt
文件
$ cd /home
$ gzip -rv test a.txt
解压缩 test
目录里的几个文件和 a.txt.gz
文件
$ cd /home
$ gzip -drv test
bzip2 工具的使用
格式
:bzip2 参数 文件名
注意:
bzip2 压缩和解压缩都会把原文件删除的,可以使用 -k
参数来保留原文件
可选的参数:
- -c 将压缩的数据输入到屏幕上
- -d 解压缩
- -k 保留原文件
- -v 显示压缩比
- -t 检查文件是否损坏
- -1 到 -9 ,压缩比,-1 最快,-9 最慢, 默认是 -6
举例
压缩文件,生成后缀是 .bz2 的文件
$ cd /home
$ echo "hello world" > /home/test.txt
$ bzip2 test.txt # 生成 test.txt.bz2 文件
解压缩文件,并显示压缩比等信息
$ cd /home
$ bzip2 -dv test.txt.bz2 # 生成 test.txt 文件
压缩文件,同时保留原文件
$ cd /home
$ bzip2 -k test.txt # 或者 bzip2 -c test.txt > test.txt.bz2
检查 bz2
文件是否损坏
$ cd /home
$ bzip2 -t test.txt.bz2
用最快速度来压缩文件 (速度越快,压缩的体积就会越大)
$ cd /home
$ bzip2 -v1 test.txt # 注意 v 参数不能写在后面
tar 工具的使用
压缩格式
: tar [-jcv] -f 文件名.tar.bz2 文件或者目录
- tar [-zcv] -f 文件名.tar.gz 文件或者目录
- tar [-jcv] -f 文件名.tar.bz2 文件或者目录
解压缩格式
tar [-jxv] -f 文件名.tar.bz2 -C 解压缩的目录
- tar [-zxv] -f 文件名.tar.gz -C 解压缩的目录
- tar [-jxv] -f 文件名.tar.bz2 -C 解压缩的目录
可选的参数:
- -c 打包文件
- -x 解压缩或者解打包文件,可以用 -C 指定解打包的目录
- -j 通过压缩或者解压缩成
bz2
文件 - -z 通过压缩或者解压缩成
gz
文件 - -t 查看打包的文件里有什么文件
- -f 指定文件名,
必须在参数的最后
举例
打包文件,生成后缀是 .tar 的文件,同时会保留原文件
$ cd /home
$ echo "hello world" > /home/test.txt
$ tar -cvf test.txt.tar test.txt # 生成 test.text.tar 文件
在当前目录解打包文件,同时会保留原文件
$ cd /home
$ tar -xvf test.txt.tar # 在当前目录生成 test.text 文件
指定目录解打包文件,同时会保留原文件
$ cd /home
$ tar -xvf test.txt.tar -C dir1 # 把解打包生成 test.txt 文件放到 dir1 目录
查看打包文件里面有什么文件
$ cd /home
$ tar -tvf test.txt.tar
打包压缩成gz文件,生成后缀是 .tar.gz 的文件,同时会保留原文件
$ cd /home
$ echo "hello world" > /home/test.txt
$ mkdir -p dir2 dir3
$ tar -zcvf dir.tar.gz test.txt dir2 dir3 # 生成 dir.tar.gz 文件
在当前目录打包解压缩gz文件,同时会保留原文件
$ cd /home
$ tar -zxvf dir.tar.gz # 在当前目录打包解压缩 dir.tar.gz 文件
指定目录打包解压缩gz文件,同时会保留原文件
$ cd /home
$ tar -zxvf dir.tar.gz -C mydir # 在 mydir 目录打包解压缩 dir.tar.gz 文件
打包压缩成bz2文件,生成后缀是 .tar.bz2 的文件,同时会保留原文件
$ cd /home
$ echo "hello world" > /home/test.txt
$ mkdir -p dir2 dir3
$ tar -jcvf dir.tar.bz2 test.txt dir2 dir3 # 生成 dir.tar.bz2 文件
在当前目录打包解压缩bz2文件,同时会保留原文件
$ cd /home
$ tar -jxvf dir.tar.bz2 # 在当前目录打包解压缩 dir.tar.bz2 文件
指定目录打包解压缩bz2文件,同时会保留原文件
$ cd /home
$ tar -zxvf dir.tar.bz2 -C mydir # 在 mydir 目录打包解压缩 dir.tar.bz2 文件
解压缩指定的某个目录,比如说 test.tar.bz2
里有一个文件叫做 a.c
,现在只解压缩出 a.c
文件
$ tar -jtvf test.tar.bz2 # 查看 test 里的 a.c 的路径
$ tar -jxvf test.tar.bz2 test/a.c # 后面跟要解压缩文件的路径和文件
zip 工具的使用
格式
:zip 压缩文件名.zip 目录或者文件
举例
打包压缩成zip文件,生成后缀是 .zip 的文件,同时会保留原文件,参数 -r
表示递归目录,不然只会压缩目录,不会压缩目录里的文件
$ cd /home
$ zip -r dir.zip file1 dir1
删除 zip
压缩包指定的 a.c
文件
$ unzip -v test.zip # 查看 zip 里是否有 a.c 文件
$ zip test.zip -d a.c
unzip 工具的使用
格式
:unzip 压缩文件名.zip
举例
在当前目录打包解压缩zip文件,同时会保留原文件
$ cd /home
$ unzip dir.zip
打包解压缩zip文件,同时会保留原文件和指定解压缩目录
$ cd /home
$ unzip -d newdir dir.zip
查看解压缩 test.zip
文件里有什么文件
$ unzip -v test.zip
【上一篇】mysql的基本操作
【下一篇】Linux下的find命令详解