AI智能
改变未来

『学了就忘』Linux基础命令 — 32、压缩和解压缩相关命令

[toc]

之前说过,在Linux系统下,文件是不区分扩展名的。但是Linux系统支持很多种压缩格式,如果压缩文件不写上扩展名,你自己创建的压缩文件可能你自己知道,但是过一阵你可能也忘记了。其他管理员也很难知道该文件是一个压缩文件。同时每一种压缩文件的解压缩格式也是不同的,如果你没有写压缩文件的扩展名,解压缩的时候就会很麻烦,你需要先手动查询一下该压缩文件的类型,再进行解压缩。所以压缩文件一定要写上扩展名,这个扩展名不是给系统看的,是方便管理员操作的。

在Linux中可以识别的、常见的压缩格式有十几种,比如

.zip

.gz

.bz2

.tar

tar.gz

tar.bz2

等。

下面对一些常见的压缩格式进行说明。

1、“.zip”格式压缩

.zip

是Windows中最常用的压缩格式,Linux也可以正确识别

.zip

格式,这是一种可以方便地和Windows系统通用压缩文件。

注意:Wwindows系统下还有一些压缩包如

.rar

.7z

,这些压缩格式的文件在Linux系统就不能使用了。

.zip

我们在Linux系统中不常用,主要是用于和Windows系统的压缩文件通用。

(1)“.zip”格式的压缩命令

Linux中,

.zip

格式文件的压缩命令就是

zip

,其基本信息如下:

  • 命令名称:
    zip
  • 英文原意:
    package and compress(archive)files
  • 所在路径:
    /usr/bin/zip
  • 执行权限:所有用户。
  • ·功能描述:压缩文件或目录。

zip

命令格式如下:

[root@localhost ~]# zip [选项] 压缩包名 源文件或源目录选项:-r:指定要压缩的目录

示例:

[root@localhost ~]# zip ana.zip anaconda-ks.cfg# 把多个文件压缩到一个压缩文件中[root@localhost ~]# zip test.zip abc abcdadding:abc (deflated 56%)adding:abcd(stored 0%)# 把多个文件和目录压缩到一个压缩文件中[root@DevOps test]# zip  123.zip abc def -r /root/

(2)“.zip”格式的解压缩命令

.zip

格式文件的解压缩命令是

unzip

,其基本信息如下:

  • 命令名称:
    unzip
  • 英文原意:
    list,test and extract compressed files in a ZIP archive
  • 所在路径:
    /usr/bin/unzip
  • 执行权限:所有用户。
  • 功能描述:列表、测试和提取压缩文件中的文件。

unzip

命令格式如下:

[root@localhost ~]# unzip [选项] 压缩包名选项:-d:指定解压缩位置

示例:

# 把压缩包解压到指定位置[root@DevOps test]# unzip 123.zip -d /root/test/

提示:

.zip

格式的文件在Linux下不常用,记住会用就好。

2、“.gz”格式压缩

(1)“.gz”格式的压缩命令

.gz

格式文件是Linux中最常用的压缩格式,使用

gzip

命令进行压缩。其基本信息如下:

  • 命令名称:
    gzip
  • 英文原意:
    compress or expand files
  • 所在路径:
    /bin/gzip
  • 执行权限:所有用户。
  • 功能描述:压缩文件或目录。

gzip

命令格式如下:

[root@localhost ~]# gzip [选项] 源文件选项:-c:将压缩数据输出到标准输出中,可以用于保留源文件-d:解压缩-r:压缩目录(不会把目录打包,只会把目录中的文件单独压缩)

示例:

# 1.”.gz”格式压缩[root@DevOps test]# ll-rw-r--r--. 1 root root     0 1月   9 18:17 abc-rw-------. 1 root root     0 1月   9 18:17 def[root@DevOps test]# gzip abc[root@DevOps test]# ll总用量 4-rw-r--r--. 1 root root 24 1月   9 18:17 abc.gz-rw-------. 1 root root  0 1月   9 18:17 def# 2.压缩目录[root@DevOps test]# ll总用量 0-rw-r--r--. 1 root root 0 1月  12 00:40 abc-rw-------. 1 root root 0 1月   9 18:17 def[root@DevOps test]# cd ..[root@DevOps ~]# gzip -r test/[root@DevOps ~]# ll /root/test/总用量 8-rw-r--r--. 1 root root 24 1月  12 00:40 abc.gz-rw-------. 1 root root 24 1月   9 18:17 def.gz# 注意:不会把目录打包,只会把目录中的文件单独压缩。# 3.解压目录[root@DevOps ~]# gzip -dr test/[root@DevOps ~]# ll /root/test/总用量 0-rw-r--r--. 1 root root 0 1月  12 00:40 abc-rw-------. 1 root root 0 1月   9 18:17 def# 4.”.gz”格式压缩,并保留源文件(非常规操作,知道就好)[root@localhost ~]# gzip -c anaconda-ks.cfg >> anaconda-ks.cfg.gz# 提示:>为覆盖内容,>>为追加内容。

注意:

  • 使用
    .gz

    格式压缩文件后,源文件会被删除掉。

  • 使用
    -c

    选项,会把文件内容压缩之后的二进制数据,输出到屏幕上。而我们不让压缩数据输出到屏幕上,而是重定向到压缩文件中,这样可以在压缩文件的同时不删除源文件。

(2)“.gz”格式的解压缩命令

如果要解压缩

gz

格式,那么使用

gzip -d 压缩包

gunzip 压缩包

命令都可以。

我们先看看

gunzip

命令的基本信息:

  • 命令名称:
    gunzip
  • 英文原意:
    compress or expand files
  • 所在路径:
    /bin/gunzip
  • 执行权限:所有用户。
  • 功能描述:解压缩文件或目录。

示例:两个命令都可以解压缩

.gz

格式的压缩文件。

# 1.使用gunzip命令[root@localhost ~]# gunzip install.1og.gz# 2.使用gzip命令[root@localhost ~]# gzip -d anaconda-ks.cfg.gz

3、“.bz2”格式压缩

** (1)“.bz2”格式的压缩命令**

.bz2

是Linux的另一种压缩格式,从理论上来讲,

.bz2

格式压缩的算法更先进、压缩比更好;而

.gz

格式相对来讲压缩的时间更快。(压缩比越高,压缩的时候越消耗资源。)

.bz2

格式的压缩命令是

bzip2

,命令的基本信息如下:

  • 命令名称:
    bzip2
  • 英文原意:
    a block-sorting file compressor
  • 所在路径:
    /usr/bin/bzip2
  • 执行权限:所有用户。
  • 功能描述:.bz2格式的压缩命令。

bzip2

命令的基本格式如下:

[rootelocalhost ~]# bzip2 [选项] 源文件选项:-d:解压缩-k:压缩时,保留源文件-v:显示压缩的详细信息(意义不大,知道就行)

示例:

# 压缩成.bz2格式(不保留源文件)[root@localhost ~]# bzip2 anaconda-ks.cfg# 保留源文件压缩[root@localhost ~]# bzip2 -k install.log.syslog

注意:

.bz2

压缩格式不能够压缩目录,看下面示例。

# 压缩目录[root@DevOps ~]# bzip2 test/bzip2: Input file test/ is a directory.[root@DevOps ~]# ll /root/test/总用量 0-rw-r--r--. 1 root root 0 1月  12 00:40 abc-rw-------. 1 root root 0 1月   9 18:17 def# 发现目录中的文件并没有被压缩。# 加入-r选项,则会直接报错,并提示你bzip2 命令都有哪些选项,这些选项中也没有压缩文件夹的选项。[root@DevOps ~]# bzip2 -r test/# 说明“.bz2”压缩格式,不能压缩目录。

** (2)“.bz2”格式的解压缩命令**

.bz2

格式的压缩文件可以使用

bzip2 -d 压缩包

命令来进行解压缩,也可以使用

bunzip2 压缩包

命令来进行解压缩。

先看看

bunzip2

命令的基本信息:

  • 命令名称:
    bumzip2
  • 英文原意:
    a block-sorting file compressor
  • 所在路径:
    /usr/bin/bunzip2
  • 执行权限:所有用户。
  • 功能描述:bz2格式的解压缩命令。

示例:

# 两个命令都可以解压缩[root@localhost ~]# bunzip2 anaconda-ks.cfg.bz2[root@localhost ~]# bzip2 -d install.1og.syslog.bz2# 如果解压后文件存在冲突,会有提示。可删除冲突文件,在进行解压。[root@localhost ~]# bzip2 -d bed.bz2bzip2:Output file bcd already exists.

4、“.tar”格式打包

提示:先说一下打包不等于压缩呦,请往下看。

** (1)“.tar”格式的打包命令**

.tar

格式的打包和解打包都使用

tar

命令,区别只是选项不同。

我们先看看

tar

命令的基本信息:

  • 命令名称:
    tar
  • 英文原意:
    tar
  • 所在路径:
    /bin/tar
  • 执行权限:所有用户。
  • 功能描述:打包与解打包命令。

tar

命令的基本格式如下:

[root@localhost ~]# tar [选项] [-f压缩包名] 源文件或目录选项:-c:打包-f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名-v:显示打包文件过程# 只是打包,不是压缩[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg

练习:

# 打包123目录、abc文件、bcd文件。[root@localhost ~]# tar -cvf test.tar 123 abc bcd123/123/hjk123/yuiabcbcd# 注意:打包后源文件不会被删除。

** (2)“.tar”格式的解打包命令**

.tar

格式的解打包也需要使用

tar

命令,但是选项不太一样。

命令格式如下所示:

[root@localhost ~]# tar [选项] 压缩包选项:-x:解打包-f:指定压缩包的文件名-V:显示解打包文件过程-t:测试,就是不解打包,只是查看包中有哪些文件-C(大)目录:指定解打包位置

练习:

# 解打包[root@localhost ~ ] # rm -rf 123 abc bcd[root@localhost ~ ]# tar -xvf test.tar123/123/hjk123/yuiabcbcd

5、打包和压缩的关系

先把需要的文件进行打包,然后把打好的包再进行压缩。

# 1.把上边打好的test.tar包,在进行压缩。[root@localhost ~]# gzip test.tar# 得到test.tar.gz文件,是一个即压缩也打包的文件。# 在用test.tar.gz文件的时候,先解压缩在解打包。[root@localhost ]# gzip -d test.tar.gz[root@localhost ~]# tar -xvf test.tar123/123/hjk123/yuiabcbcd

这样是不是用着很麻烦,其实不用担心,我们下边会有直接压缩打包和解压缩解打包的命令。这里主要是在Linux系统中压缩和打包是两个命令。

6、“.tar.gz”和“.tar.bz2”格式打包并压缩

(1)使用tar命令直接打包压缩。

命令格式如下:

[root@localhost ~]# tar [选项] 压缩包 源文件或目录选项:-z:压缩和解压缩".tar.gz”格式-j:压缩和解压缩".tar.bz2”格式

** (2)练习:”.tar.bz2“格式**

# 1.把123目录、abc文件、bcd文件,直接打包压缩为”.tar.bz2“格式文件[root@localhost ~]# tar -jcvf test.tar.bz2 123 abc bcd123/123/hjk123/yuiabcbed# 得到test.tar.bz2文件。# 2.解压缩,先把源文件删除掉,再解压[root@localhost ~]# rm -rf 123 abc bcd[root@localhost ~]# tar -jxvf test.tar.bz2123/123/hjk123/yuiabcbcd

** (3)“tar.gz”格式**

# 1.把123目录、abc文件、bcd文件,直接打包压缩为“tar.gz”格式文件[root@localhost ~]# tar -zcvf test.tar.gz 123 abc bcd123/123/hjk123/yuiabcbed# 得到test.tar.gz文件。# 2.解压缩,先把源文件删除掉,再解压[root@localhost ~]# rm -rf 123 abc bcd[root@localhost ~]# tar -zxvf test.tar.gz123/123/hjk123/yuiabcbcd

** (4)其他常用方式**

1)只查看不解压

[root@localhost ~]# tar -ztvf test.tar.gzdrwxr-xr-x root/root 02017-02-1714:44123/-rw-r--r--root/root 02017-02-1714:41123/hjk-rw-r--r--root/root02017-02-1714:41123/yui-rw-r--r--root/root 1122017-02-17 09:16 abc-rw-r--r--root/root 02017-02-17 14:44 bcd

用长格式显示了包中所有的文件和文件夹。也就是把选项中的c变成t。

-jtvf

同理。

2)解压缩到指定位置

[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp

注意:

-C /tmp

一定要跟在解压缩包的后边,不然会保存。

3)只解压压缩包中的特定文件,到指定位置

[root@localhost ~]# tar -zxvf test.tar.gz -C/tmp 123/hjk

总结:我们在日常工作中,常用的压缩和解压缩命令,主要就是上面所说明的这些命令。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 『学了就忘』Linux基础命令 — 32、压缩和解压缩相关命令