壓縮與解壓縮

壓縮與解壓縮

·經常使用的壓縮格式: .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 。
相關文章
相關標籤/搜索