压缩与解压命令,是Linux中比较常用的命令。之前用到压缩与解压的时候,都是临时在网上搜,用了之后过段时间没用就忘了。虽然命令的用法很容易在网上搜到,但是每次用到的时候都去搜,也挺浪费时间的。所以,在这里整理了一篇Linux压缩与解压缩命令大全,比较深入地研究和掌握这些命令的用法。
之所以压缩与解压比较常用,是因为文件压缩的好处:减少存储空间,减少文件传输时间。对于文件数量比较多,为了减少存储空间和传输时间,除了用到压缩外,还会涉及到打包。这里需要注意,压缩和打包是两个不同的概念:打包是将大量文件或目录打包成一个文件(多对一);压缩是将一个大文件压缩成一个小文件(一对一)。当压缩大量文件的时候,需要先借助打包工具将所有文件打成一个包,然后再用压缩工具对该包进行压缩。
Windows下最常见的压缩文件格式只有zip和rar两种,但是Linux下的压缩文件格式有gz、tar.gz、tgz、tar.bz2、tbz2、bz2、tar、zip和rar等。然而,zip和rar这两种Windows最常见的压缩文件格式在Linux下却很少使用。如果对Linux压缩与解压命令不熟悉的话,很容易被众多的压缩文件格式吓晕。下面结合示例介绍Linux中的常用压缩与解压命令。示例如下:
[root@linux tmp]# ls
test1.txt test2.txt test3.txt
[root@linux tmp]# cat test1.txt
Hello, test1!
[root@linux tmp]# cat test2.txt
Hello, test2!
[root@linux tmp]# cat test3.txt
Hello, test3!
1. gzip
gzip程序压缩的文件以.gz结尾,与其对应的解压程序是gunzip,也可以用gzip -d解压。
gzip常用参数说明:
-c:将压缩的数据输出到屏幕上
-d:解压缩
-r:递归压缩文件夹
-t:检验一个压缩档的一致性
-1:压缩最快,压缩比最差
-9:压缩最慢,压缩比最好
- 压缩:gzip file
[root@linux tmp]# gzip test1.txt
[root@linux tmp]# ls
test1.txt.gz test2.txt test3.txt
- 解压1:gunzip file.gz
[root@linux tmp]# gunzip test1.txt.gz
[root@linux tmp]# ls
test1.txt test2.txt test3.txt
- 解压2:gzip -d file.gz
[root@linux tmp]# gzip -d test1.txt.gz
[root@linux tmp]# ls
test1.txt test2.txt test3.txt
- zcat解压到标准输出:
[root@linux tmp]# zcat test1.txt.gz
Hello, test1!
[root@linux tmp]# ls
test1.txt.gz test2.txt test3.txt
2. bzip2
bzip2程序压缩的文件以.bz2结尾,与其对应的解压程序是bunzip2,也可以用bzip2 -d解压。
bzip2常用参数说明:
-c:将压缩的数据输出到屏幕上
-d:解压缩
-t:检验一个压缩档的一致性
-1:压缩最快,压缩比最差
-9:压缩最慢,压缩比最好
- 压缩:bzip2 file
[root@linux tmp]# bzip2 test1.txt
[root@linux tmp]# ls
test1.txt.bz2 test2.txt test3.txt
- 解压1:bunzip2 file.bz2
[root@linux tmp]# bunzip2 test1.txt.bz2
[root@linux tmp]# ls
test1.txt test2.txt test3.txt
- 解压2:bzip2 -d file.bz2
[root@linux tmp]# bzip2 -d test1.txt.bz2
[root@linux tmp]# ls
test1.txt test2.txt test3.txt
- bzcat解压到标准输出:
[root@linux tmp]# bzip2 test1.txt
[root@linux tmp]# ls
test1.txt.bz2 test2.txt test3.txt
[root@linux tmp]# bzcat test1.txt.bz2
Hello, test1!
[root@linux tmp]# ls
test1.txt.bz2 test2.txt test3.txt
3. tar
tar程序既可以打包,又可以解包。同时,在打包的同时可以通过操作参数调用gzip或bzip2压缩程序进行压缩,在解压的同时也可以通过操作参数调用gunzip或bunzip2解压程序进行解压。从表面上看,该程序同时具有打包压缩和解压解包的功能,因此是很常用的一个命令。
操作参数:
-A, --catenate, --concatenate 将一存档与已有的存档合并
-c, --create 建立新的存档
-d, --diff, --compare 比较存档与当前文件的不同之处
-r, --append 附加到存档结尾
-t, --list 列出存档中文件的目录
-u, --update 仅将较新的文件附加到存档中
-x, --extract, --get 从存档展开文件
这七个命令,只能根据需要在压缩或解压时,选择其中一个。如果选择的操作的操作个数多余一个,就会提示如下错误:
[root@linux tmp]# tar -cuf test.tar *.txt
tar: You may not specify more than one `-Acdtrux' option
Try `tar --help' or `tar --usage' for more information.
常用选项:
-f, --file 使用档案文件名,这个是必选项,而且是最后一个参数,之后立即接档案文件名
-j, --bzip2 调用bzip2压缩或解压,压缩包格式为tar.gz或tgz
-z, --gzip 调用gzip压缩或解压,压缩包格式为tar.bz2
-v, --verbose 显示tar操作过程中的文件信息。
-p, --preserve-permissions 保持原文件原来的属性,不因使用者而改变
基本用法示例:
- tar的打包与解包:
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解包的意思
- tar.gz的压缩与解压:
# tar -czf all.tar.gz *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz
# tar -xzf all.tar.gz
这条命令是将上面产生的包解开。
- tar.bz2的压缩与解压:
# tar -cjf all.tar.bz2 *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且调用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2
# tar -xjf all.tar.bz2
这条命令是将上面产生的包解开。
4. zip
zip程序压缩的文件以.zip结尾,与其对应的解压程序是unzip。
zip常用参数说明:
-m:将被压缩文件移到压缩文件中
-r:递归压缩文件夹
-x:排除参数后面的文件
-i:包括参数后面的文件
-1:压缩最快,压缩比最差
-9:压缩最慢,压缩比最好
- 压缩:zip all.zip files
[root@linux tmp]# zip all.zip *.txt
adding: test1.txt (stored 0%)
adding: test2.txt (stored 0%)
adding: test3.txt (stored 0%)
[root@linux tmp]# ls
all.zip test1.txt test2.txt test3.txt
zip是一个打包压缩程序,可以将多个文件打包并压缩成一个文件。而gzip和bzip2都只是压缩程序,多个文件只会分别压缩成多个压缩文件。
gzip压缩多个文件:
[root@linux tmp]# gzip *.txt
[root@linux tmp]# ls
test1.txt.gz test2.txt.gz test3.txt.gz
bzip2压缩多个文件:
[root@linux tmp]# bzip2 *.txt
[root@linux tmp]# ls
test1.txt.bz2 test2.txt.bz2 test3.txt.bz2
- 解压:unzip all.zip
5. rar
rar程序压缩的文件以.rar结尾,与其对应的解压程序是unrar。需要注意的是,处理rar文件需要安装RAR for Linux。
- 压缩:rar a all.rar files
- 解压:unrar e all.rar
6.总结
1. 打包和压缩的概念:
打包:将大量文件或目录打包成一个文件。(多对一)
压缩:将一个大文件压缩成一个小文件。(一对一)
2. 无论打包还是解包,原文件都会继续存在。而压缩与解压,原文件将消失。
3. zcat和bzcat都是将压缩文件的内容解压到标准输出,原文件仍将继续存在。
4. bzip2不支持压缩文件夹,而gzip的-r参数可以支持压缩文件夹。
5. zip是一个打包压缩程序,而gzip和bzip2都只是压缩程序。
Reference
http://blog.csdn.net/hbcui1984/article/details/1583796
http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html