压缩与解压缩

压缩与解压缩

·经常使用的压缩格式: .zip .gzip .bzip2 .tar.gz .tar.bz2 xz

gzip压缩工具 不能压缩目录,只能够压缩文件

  • gzip 源文件 压缩为 .gz 格式的压缩文件,源文件会消失
  • gzip -c 源文件 > 压缩文件 压缩为.gz格式,源文件保留
  • gzip -r 目录 压缩目录下全部的子文件,可是不能压缩目录。
  • gzip -d 压缩文件 解压缩文件
  • gzip -1-9 文件名 指定压缩级别,默认是6级别,数字越大耗费的CPU资源越大。
  • gunzip 压缩文件 解压缩文件

#zcat 压缩文件 查看压缩文件的内容

1.gzip 源文件

[root@xuexi--01 ~]# ls
abc  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# gzip test.txt 
[root@xuexi--01 ~]# ls
abc  anaconda-ks.cfg  test.txt.gz

在使用命令 gzip test.txt 后源文件text.txt消失了,压缩后的文件为test.txt.gzpython

2.gzip -c 源文件 > 压缩文件

[root@xuexi--01 ~]# touch 1.txt
[root@xuexi--01 ~]# ls
1.txt  abc  anaconda-ks.cfg  test.txt.gz
[root@xuexi--01 ~]# gzip -c 1.txt > 1.txt.gz
[root@xuexi--01 ~]# ls
1.txt  1.txt.gz  abc  anaconda-ks.cfg  test.txt.gz

在使用命令 gzip -c 1.txt > 1.txt.gz 源文件保留,而且成功压缩了 1.txt 为 1.txt.gz工具

3.gzip -r 目录

[root@xuexi--01 ~]# ls
1.txt  1.txt.gz  abc  anaconda-ks.cfg  test.txt.gz
[root@xuexi--01 ~]# ls abc/
12.txt
[root@xuexi--01 ~]# gzip -r abc/
[root@xuexi--01 ~]# ls abc/
12.txt.gz

在使用命令 gzip -r abc/ 时,目录并无被压缩,只是压缩的目录里面的子文件12.txt,压缩后的文件为12.txt.gzcode

4.gzip -d 压缩文件 解压缩命令

[root@xuexi--01 ~]# ls
1.txt.gz  abc  anaconda-ks.cfg  test.txt.gz
[root@xuexi--01 ~]# gzip -d 1.txt.gz 
[root@xuexi--01 ~]# gzip -d test.txt.gz 
[root@xuexi--01 ~]# ls
1.txt  abc  anaconda-ks.cfg  test.txt

在使用 gzip -d 1.txt.gz gzip -d test.txt.gz 命令时,成功将文件解压缩,压缩包消失。ip

5.gunzip 压缩文件

[root@xuexi--01 ~]# cd abc/
[root@xuexi--01 abc]# ls
12.txt.gz
[root@xuexi--01 abc]# gunzip 12.txt.gz 
[root@xuexi--01 abc]# ls
12.txt

若是须要解压缩目录里面的全部子文件,能够使用 gunzip -r 目录名资源

bzip.bz2压缩工具 不能压缩目录

  • bzip2 源文件 压缩为 .bz2 的格式,不保留源文件
  • bzip2 -k 源文件 压缩后保留源文件
  • 压缩级别为1-9,默认为9
  • bzip2 -c 源文件 > 压缩文件

1.bzip2 源文件

[root@xuexi--01 ~]# bzip2 1.txt 
[root@xuexi--01 ~]# ls
1.txt.bz2  abc  anaconda-ks.cfg  test.txt

在使用 bzip2 1.txt 时,源文件会消失,已经成功将1.txt文件压缩为1.txt.bz2。源文件 1.txt 文件消失。class

2.bzip2 -k 源文件

[root@xuexi--01 ~]# bzip2 -k test.txt 
[root@xuexi--01 ~]# ls
1.txt.bz2  abc  anaconda-ks.cfg  test.txt  test.txt.bz2

在使用 bzip2 -k test.txt 成功将test.txt 文件压缩为test.txt.bz2 并且源文件保留。 bzip2 不支持 -r 选项 是不支持压缩目录以及目录下的子文件的。test

3.bzip2 -c 源文件 > 压缩文件

[root@xuexi--01 ~]# bzip2 -c 1.txt > /tmp/1.txt.bz2
[root@xuexi--01 ~]# ls /tmp/
1.txt.bz2

使用 bzip2 -c 1.txt > /tmp/1.txt.bz2 命令,将1.txt 文件指定到 /tmp/ 下压缩,能够指定压缩文件的路径。打包

4.bzip -d 压缩文件 -k 保留压缩文件

[root@xuexi--01 ~]# ls
1.txt.bz2  abc  anaconda-ks.cfg  test.txt.bz2
[root@xuexi--01 ~]# bzip2 -d -k 1.txt.bz2 
[root@xuexi--01 ~]# ls
1.txt  1.txt.bz2  abc  anaconda-ks.cfg  test.txt.bz2

在使用命令 bzip2 -d -k 1.txt.bz2 时,成功将1.txt.bz2文件解压缩为 1.txt 若是不加 -k选项不保留原压缩文件,加上 -k后保留原压缩文件。file

5.bunzip2 压缩文件 -k 保留压缩文件

[root@xuexi--01 ~]# ls
1.txt  1.txt.bz2  abc  anaconda-ks.cfg  test.txt.bz2
[root@xuexi--01 ~]# bunzip2 -k test.txt.bz2 
[root@xuexi--01 ~]# ls
1.txt  1.txt.bz2  abc  anaconda-ks.cfg  test.txt  test.txt.bz2

在使用命令 bunzip -k test.txt.bz2 时,成功将压缩文件test.txt.bz2 解压缩为 test.txt。若是不加 -k选项不保留原压缩文件,加上 -k后保留原压缩文件。方法

xz 压缩工具 不支持压缩目录以及目录里面的子文件

  • xz 源文件
  • xz -c 源文件 > 压缩文件
  • xz -d 压缩文件 解压缩命令
  • unxz 压缩文件 解压缩命令
  • 支持1-9的压缩级别
  • -k压缩/解压缩时加-k 保留源文件
#xzcat 查看xz压缩文件内容的命令
[root@xuexi--01 ~]# xz 1.txt 
[root@xuexi--01 ~]# ls
1.txt.xz  abc  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# xz -k test.txt 
[root@xuexi--01 ~]# ls
1.txt.xz  abc  anaconda-ks.cfg  test.txt  test.txt.xz
[root@xuexi--01 ~]# xz -c test.txt > /tmp/text.txt.xz
[root@xuexi--01 ~]# ls -d /tmp/text.txt.xz 
/tmp/text.txt.xz
[root@xuexi--01 ~]# xz test.txt 
[root@xuexi--01 ~]# ls
abc  anaconda-ks.cfg  test.txt.xz
[root@xuexi--01 ~]# unxz test.txt.xz 
[root@xuexi--01 ~]# ls
abc  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# xz -d -k test.txt.xz 
[root@xuexi--01 ~]# ls
abc  anaconda-ks.cfg  test.txt  test.txt.xz

xz 压缩工具使用方法跟 gzip bzip2 命令相似。

zip 压缩工具 能够压缩目录

  • zip 压缩文件名 源文件
  • zip -r 压缩文件名 源目录
  • unzip 压缩文件
  • unzip 压缩文件 -d 指定的目标路径
  • unzip -l 压缩文件 显示压缩文件内所包含的文件

1.zip 压缩文件名 源文件

[root@xuexi--01 ~]# ls
abc  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# zip test.txt.zip test.txt 
  adding: test.txt (stored 0%) 由于文件为空文件,因此这边压缩的百分比显示为0

2.zip -r 压缩文件名 源文件

[root@xuexi--01 ~]# ls
abc  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# ls abc/
12.txt
[root@xuexi--01 ~]# zip -r abc.zip abc/
  adding: abc/ (stored 0%)
  adding: abc/12.txt (stored 0%)
[root@xuexi--01 ~]# ls abc
12.txt
[root@xuexi--01 ~]# ls
abc  abc.zip  anaconda-ks.cfg  test.txt

在使用 zip -r abc.zip abc 时,将abc 目录成功压缩,而且压缩abc 目录里面的子文件。

3.unzip 压缩文件

[root@xuexi--01 ~]# ls
abc.zip  anaconda-ks.cfg  test.txt.zip
[root@xuexi--01 ~]# unzip test.txt.zip 
Archive:  test.txt.zip
 extracting: test.txt                
[root@xuexi--01 ~]# unzip abc.zip 
Archive:  abc.zip
   creating: abc/
 extracting: abc/12.txt              
[root@xuexi--01 ~]# ls
abc  abc.zip  anaconda-ks.cfg  test.txt  test.txt.zip

使用unzip命令,能够是解压缩文件也能够解压缩目录。

4.unzip 压缩文件 -d 目标路径

root@xuexi--01 ~]# mkdir 123
[root@xuexi--01 ~]# unzip test.txt.zip -d ./123/
Archive:  test.txt.zip
 extracting: ./123/test.txt          
[root@xuexi--01 ~]# ls 123/
test.txt

使用命令unzip test.txt.zip -d ./123/ 将test.txt.zip压缩文件解压缩到 123 目录下

5. unzip -l 压缩文件

[root@xuexi--01 ~]# unzip -l abc.zip 
Archive:  abc.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  05-24-2018 22:03   abc/
        0  05-24-2018 21:35   abc/12.txt
---------                     -------
        0                     2 files

打包命令 tar

  • tar -cvf 打包文件名 源文件

选项: -c 打包 -v 显示过程 -f 指定打包后的文件名 -x 解打包

1.tar -cvf 打包文件/目录

[root@xuexi--01 ~]# ls
abc  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# tar -cvf abc.tar abc
abc/
abc/12.txt
[root@xuexi--01 ~]# ls
abc  abc.tar  anaconda-ks.cfg  test.txt

将abc 目录打包成abc.tar 后就能够使用 gzip bzip2 压缩工具进行压缩了

[root@xuexi--01 ~]# ls
abc  abc.tar  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# gzip abc.tar 
[root@xuexi--01 ~]# ls
abc  abc.tar.gz  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# gzip -d abc.tar.gz 
[root@xuexi--01 ~]# ls
abc  abc.tar  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# bzip2 abc.tar 
[root@xuexi--01 ~]# ls
abc  abc.tar.bz2  anaconda-ks.cfg  test.txt

先打包再压缩就解决了压缩目录的问题

2.tar -xvf 解打包文件/目录

[root@xuexi--01 ~]# ls
abc.tar  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# tar -xvf abc.tar 
abc/
abc/12.txt
[root@xuexi--01 ~]# ls
abc  abc.tar  anaconda-ks.cfg  test.txt

3. .tar.gz 压缩格式

.tar.gz格式是先打包为.tar格式,再压缩为.gz格式
命令:tar -zcvf 压缩包名.tar.gz 源文件
  • -z :压缩为.tar.gz 格式

  • 支持压缩多个文件: tar -zcvf 压缩包名.tar.gz 文件1 文件2 。

  • 在压缩包名.tar.gz 前加上路径,能够指定压缩文件的位置。(压缩包名可更改)

命令:tar -zxvf 压缩包名.tar.gz
  • -x 解压缩.tar.gz格式
  • -t 查看压缩包里面的内容
  • -C 指定解压缩文件的位置 tar -zxvf 压缩文件包名.tar.gz -C 解压缩文件指定位置的路径

1.使用tar -zcvf 压缩包名.tar.gz 源文件 压缩

[root@xuexi--01 ~]# tar -zcvf abc.tar.gz abc
abc/
abc/12.txt
[root@xuexi--01 ~]# ls
abc  abc.tar.gz  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# rm -rf abc
[root@xuexi--01 ~]# ls
abc.tar.gz  anaconda-ks.cfg  test.txt
[root@xuexi--01 ~]# tar -zxvf abc.tar.gz 
abc/
abc/12.txt
[root@xuexi--01 ~]# ls
abc  abc.tar.gz  anaconda-ks.cfg  test.txt

2.指定压缩位置

[root@xuexi--01 ~]# ls 
abc  abc.tar.gz  anaconda-ks.cfg  test.txt  test.txt.tar.bz2
[root@xuexi--01 ~]# tar -zcvf /tmp/abc.tar.gz abc
abc/
abc/12.txt
[root@xuexi--01 ~]# ls /tmp/
abc.tar.gz

3.打包多个文件压缩

[root@xuexi--01 ~]# ls
abc  abc.tar.gz  anaconda-ks.cfg  test.txt  test.txt.tar.bz2
[root@xuexi--01 ~]# tar -zcvf /tmp/123.tar.gz abc anaconda-ks.cfg 
abc/
abc/12.txt
anaconda-ks.cfg
[root@xuexi--01 ~]# ls /tmp/
123.tar.gz

4.解压缩到指定位置

[root@xuexi--01 ~]# ls
abc  abc.tar.gz  anaconda-ks.cfg  test.txt  test.txt.tar.bz2
[root@xuexi--01 ~]# tar -zxvf abc.tar.gz -C /tmp/
abc/
abc/12.txt
[root@xuexi--01 ~]# ls /tmp/
abc

使用 -C 选项将压缩文件包abc.tar.gz 成功解压缩到/tmp/目录下

5.不解压而且查看压缩包里面的内容

[root@xuexi--01 ~]# tar -ztvf /tmp/123.tar.gz 
drwxr-xr-x root/root         0 2018-05-24 22:03 abc/
-rw-r--r-- root/root         0 2018-05-24 21:35 abc/12.txt
-rw------- root/root      1257 2018-05-05 05:53 anaconda-ks.cfg

6. .tar.bz2压缩格式

命令:tar -jcvf 压缩包名.tar.bz2 源文件

-z :压缩为.tar.bz2 格式

命令:tar -jxvf 压缩包名.tar.bz2

-x 解压缩.tar.bz2格式

[root@xuexi--01 ~]# tar -jcvf test.txt.tar.bz2 test.txt 
test.txt
[root@xuexi--01 ~]# ls
abc  abc.tar.gz  anaconda-ks.cfg  test.txt  test.txt.tar.bz2
[root@xuexi--01 ~]# rm -rf test.txt
[root@xuexi--01 ~]# ls
abc  abc.tar.gz  anaconda-ks.cfg  test.txt.tar.bz2
[root@xuexi--01 ~]# tar -jxvf test.txt.tar.bz2 
test.txt
[root@xuexi--01 ~]# ls
abc  abc.tar.gz  anaconda-ks.cfg  test.txt  test.txt.tar.bz2
# 使用.tar.bz2 打包压缩与.tar.gz 使用方法同样,只须要记住: .tar.gz 压缩/解压缩的时候使用的选项为 z , 而.tar.bz2 压缩/解压缩的使用使用的 j 。
相关文章
相关标签/搜索