0%

Linux与macOS文件压缩与解压命令

摘要:学习 Linux tar 命令参数和基本实例,实现命令行压缩和解压操作。

一、解压缩命令总结


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar 是打包,不是压缩)
———————————————

.gz
解压-1:gunzip FileName.gz
解压-2:gzip -d FileName.gz
压缩-1:gzip FileName (会删除源文件)
压缩-2:gzip -c FileName (保留源文件)
———————————————

.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————

.bz2
解压 1:bzip2 -d FileName.bz2
解压 2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
———————————————

.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————

.bz
解压 1:bzip2 -d FileName.bz
解压 2:bunzip2 FileName.bz
压缩:未知
———————————————

.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
———————————————

.Z
解压:uncompress FileName.Z
压缩:compress FileName
———————————————

.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
———————————————

.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
———————————————

二、gzip 命令详解


简介

gzip 在 Linux 系统中是一个经常使用的压缩命令,既方便又好用。gzip 不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,若考虑安全性,通常配合 tar 命令使用。如今通常和 tar 命令一起构成 Linux 操作系统中比较流行的压缩文件格式。

gzip 命令对文本文件的压缩率足有 60%~ 70% 之多。
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

其压缩的文件后缀为: *.gz

语法

gzip 【选项】 【参数】
注:不加选项直接使用,压缩文件将把原文件删除

1
2
3
4
5
[root@linus test]# ls
one three two
[root@linus test]# gzip one
[root@linus test]# ls
one.gz three two

注:gzip 可以分别将当前目录下所有文件进行压缩

1
2
3
4
5
[root@linus test]# ls
one three two
[root@linus test]# gzip *
[root@linus test]# ls
one.gz three.gz two.gz

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-a 或–ascii  使用 ASCII 文字模式。
-c 或–stdout 或–to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。
-d 或–decompress 或—-uncompress  解开压缩文件。
-f 或–force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-h 或–help  在线帮助。
-l 或–list  列出压缩文件的相关信息。
-L 或–license  显示版本与版权信息。
-n 或–no-name  压缩文件时,不保存原来的文件名称及时间戳记。
-N 或–name  压缩文件时,保存原来的文件名称及时间戳记。
-q 或–quiet  不显示警告信息。
-r 或–recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
-S <压缩字尾字符串> 或—-suffix < 压缩字尾字符串 >  更改压缩字尾字符串。
-t 或–test  测试压缩文件是否正确无误。
-v 或–verbose  显示指令执行过程。
-V 或–version  显示版本信息。
-6 压缩效率是一个介于 1-9 的数值,预设值为”6″,指定愈大的数值,压缩效率就会愈高。
–best  此参数的效果和指定”-9″参数相同。
–fast  此参数的效果和指定”-1″参数相同。

简单实例

1
2
[root@linus test]# ls
one three two

压缩工具的简单使用,只需要了解压缩及解压即可。
例 1:强制压缩文件 one 并显示执行过程

1
2
3
4
[root@linus test]# gzip -v -f one
one: 0.0% -- replaced with one.gz
[root@linus test]# ls
one.gz three two

例 2:使用高压缩率压缩 two 并不显示警告信息

1
2
3
[root@linus test]# gzip -9 -q two
[root@linus test]# ls
one.gz three two.gz

例 3:保存名称和时间戳强制压缩 three

1
2
3
4
5
6
[root@linus test]# gzip -f -N three
[root@linus test]# ll
总用量 12
-rw-r--r-- 1 root root 24 2月 12 01:12 one.gz
-rw-r--r-- 1 root root 26 2月 12 01:22 three.gz
-rw-r--r-- 1 root root 24 2月 12 01:12 two.gz

例 4:将压缩的文件解压

1
2
3
[root@linus test]# gzip -d *
[root@linus test]# ls
one three two

三、tar 命令详解


语法

1
2
3
4
5
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。

下面的参数是根据需要在压缩或解压档案时可选的。

1
2
3
4
5
6
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

实例

批量处理

1
2
3
4
5
6
7
8
9
10
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是解开的意思

查看

1
tar -tf aaa.tar.gz  //在不解压的情况下查看压缩包的内容

压缩

1
2
3
4
5
6
7
8
9
10
11
tar –cvf jpg.tar *.jpg  //将目录里所有jpg文件打包成tar.jpg


tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz


tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2


tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

解压

1
2
3
4
5
6
7
tar –xvf file.tar  //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2 //解压 tar.bz2

tar –xZvf file.tar.Z //解压tar.Z