0328課的預習任務

6.1 壓縮打包介紹

常見壓縮文件

·Windows .rar,.zip,.7z

·Linux  .zip,.gz,.bz2,.xz,.tar.gz,.tat.bz2,.tar.xz

Linux下後綴名並不像Windows重要,不過還是需要通過後綴名來判斷壓縮包是哪種類型的文件


6.2 gzip壓縮工具

Linux下常用的壓縮工具:gzip,bzip2,xz,zip,tar

注意:gzip只能壓縮文件,不能壓縮目錄


準備一個文件,用作壓縮

[root@arslinux-01 ~]# cd /tmp/
[root@arslinux-01 tmp]# mkdir d6z/
[root@arslinux-01 tmp]# cd d6z/
[root@arslinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec  cat {} >> 1.txt \;
[root@arslinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec  cat {} >> 1.txt \;
[root@arslinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec  cat {} >> 1.txt \;
[root@arslinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec  cat {} >> 1.txt \;
[root@arslinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec  cat {} >> 1.txt \;
[root@arslinux-01 d6z]# du -sh 1.txt
2.0M1.txt
[root@arslinux-01 d6z]# ll -h 1.txt
-rw-r--r--. 1 root root 1.1M 3月  26 15:20 1.txt


gzip 文件         壓縮命令

[root@arslinux-01 d6z]# gzip 1.txt
[root@arslinux-01 d6z]# ll -h
總用量 264K
-rw-r--r--. 1 root root 262K 3月  26 15:20 1.txt.gz
[root@arslinux-01 d6z]# du -sh 1.txt.gz
264K1.txt.gz


gzip -d 壓縮文件         解壓縮命令

[root@arslinux-01 d6z]# gzip -d 1.txt.gz
[root@arslinux-01 d6z]# du -sh 1.txt
1.1M1.txt


gunzip 壓縮文件         解壓縮命令

[root@arslinux-01 d6z]# gunzip 1.txt.gz
[root@arslinux-01 d6z]# du -sh 1.txt
1.1M1.txt


gzip -壓縮級別(1-9) 文件        指定文件壓縮級別,默認級別爲6

默認6級別,1爲最不嚴謹,9爲最嚴謹,9級耗費CPU資源更大,運行速度更慢,一般保持默認就行

[root@arslinux-01 d6z]# gzip -1 1.txt
[root@arslinux-01 d6z]# du -sh 1.txt.gz
308K1.txt.gz
[root@arslinux-01 d6z]# gzip -d 1.txt.gz
[root@arslinux-01 d6z]# gzip -9 1.txt
[root@arslinux-01 d6z]# du -sh 1.txt.gz
264K1.txt.g

壓縮也是有極限的,不會無休止的壓縮


.gz 文件的類型介紹

[root@arslinux-01 d6z]# file 1.txt.gz
1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Tue Mar 26 15:20:37 2019, max compression


zcat 壓縮包        查看壓縮包內容

[root@arslinux-01 d6z]# zcat 1.txt.gz


gzip -c 文件 > 壓縮包絕對路徑         壓縮時指定壓縮文件保存目錄且不刪除源文件

[root@arslinux-01 d6z]# gzip -c 1.txt > /tmp/1.txt.gz
[root@arslinux-01 d6z]# ll
總用量 1044
-rw-r--r--. 1 root root 1067315 3月  26 15:20 1.txt
[root@arslinux-01 d6z]# ll /tmp/1.txt.gz
-rw-r--r--. 1 root root 267637 3月  26 15:59 /tmp/1.txt.gz


gunzip -c 壓縮包 > 目標文件絕對路徑        解壓縮文件時不刪除原壓縮文件 或 gzip -d -c

[root@arslinux-01 d6z]# gunzip -c /tmp/1.txt.gz > /tmp/d6z/2.txt
[root@arslinux-01 d6z]# ll
總用量 2088
-rw-r--r--. 1 root root 1067315 3月  26 15:20 1.txt
-rw-r--r--. 1 root root 1067315 3月  26 16:02 2.txt


6.3 bzip2壓縮工具

bzip2 和 gzip 比壓縮更狠,使用方法差不多


bzip2 安裝

[root@arslinux-01 d6z]# yum install -y bzip2


bzip2 文件         壓縮命令

[root@arslinux-01 d6z]# bzip2 1.txt
[root@arslinux-01 d6z]# du -sh 1.txt.bz2
108K1.txt.bz2

bzip2 壓縮默認級別壓縮文件要比 gzip 同級別要小

注意:bzip2同樣不支持壓縮目錄


bzip2 -d 或 bunzip2         解壓命令

[root@arslinux-01 d6z]# bunzip2 1.txt.bz2
[root@arslinux-01 d6z]# du -sh 1.txt
1.1M1.txt


bzip2 -c 文件 > 壓縮文件絕對路徑         壓縮到指定目錄下

[root@arslinux-01 d6z]# bzip2 -c 1.txt > /tmp/1.txt.bz2
[root@arslinux-01 d6z]# du -sh /tmp/1.txt.bz2
108K/tmp/1.txt.bz2
[root@arslinux-01 d6z]# ll
總用量 2088
-rw-r--r--. 1 root root 1067315 3月  26 15:20 1.txt
-rw-r--r--. 1 root root 1067315 3月  26 16:02 2.txt


bzip2 -d -c 壓縮文件絕對路徑 > 目標目錄絕對路徑         解壓到指定目錄,指定名稱

bunzip -c 也可以

[root@arslinux-01 d6z]# bzip2 -d -c /tmp/1.txt.bz2 > 3.txt
[root@arslinux-01 d6z]# ll
總用量 3132
-rw-r--r--. 1 root root 1067315 3月  26 15:20 1.txt
-rw-r--r--. 1 root root 1067315 3月  26 16:02 2.txt
-rw-r--r--. 1 root root 1067315 3月  26 18:06 3.txt
[root@arslinux-01 d6z]# du -sh 3.txt
1.1M3.txt


bzip2 -壓縮級別(1-9) 文件名        指定文件壓縮級別,默認級別爲9

[root@arslinux-01 d6z]# bzip2 -9 1.txt
[root@arslinux-01 d6z]# du -sh 1.txt.bz2
108K1.txt.bz2


file        查看文件信息

[root@arslinux-01 d6z]# file 1.txt.bz2
1.txt.bz2: bzip2 compressed data, block size = 900k
[root@arslinux-01 d6z]# mv 1.txt.bz2 1.txt
[root@arslinux-01 d6z]# file 1.txt
1.txt: bzip2 compressed data, block size = 900k
[root@arslinux-01 d6z]# file 2.txt
2.txt: UTF-8 Unicode text

給文件改名,不以 .bz2 結尾,file 同樣能顯示出文件是壓縮數據


bzcat        查看 .bz2 壓縮文件內容

[root@arslinux-01 d6z]# bzcat 1.txt.bz2


疑問:gzip壓縮過的文件用bzip2工具能解壓縮嗎?或者bzip2壓縮過的文件用gzip解壓?

[root@localhost d6z]# gzip -d 1.txt.bz2
gzip: 1.txt.bz2: unknown suffix -- ignored
[root@localhost d6z]# bunzip2 /tmp/1.txt.gz
bunzip2: Can't guess original name for /tmp/1.txt.gz -- using /tmp/1.txt.gz.out
bunzip2: /tmp/1.txt.gz is not a bzip2 file.

答案當然是不可以~!


6.4 xz壓縮工具

xz 文件         壓縮命令( xz 壓縮比 gzip 和 bzip2 都要狠)

[root@arslinux-01 d6z]# xz 2.txt .
[root@arslinux-01 d6z]# du -sh 2.txt.xz
48K2.txt.xz


xz -d 壓縮包     解壓縮命令

unxz 壓縮包     解壓縮命令

[root@arslinux-01 d6z]# xz -d 2.txt.xz
[root@arslinux-01 d6z]# du -sh 2.txt
1.1M2.txt


xz -壓縮級別(1-9) 文件         指定壓縮級別(默認是6)

[root@arslinux-01 d6z]# xz -9 2.txt
[root@arslinux-01 d6z]# du  -sh 2.txt.xz
48K2.txt.xz


xzcat 文件名        查看壓縮文件內容

[root@arslinux-01 d6z]# xzcat 2.txt.xz


xz -c 文件名 > 壓縮包絕對路徑         指定壓縮包位置(可改名)

xz -c 壓縮包絕對路徑 > 文件名(非當前目錄需要絕對名)         指定解壓縮位置

[root@arslinux-01 d6z]# xz -c 2.txt > /tmp/3.txt.xz
[root@arslinux-01 d6z]# du -sh /tmp/3.txt
48K/tmp/3.txt
[root@arslinux-01 d6z]# du -sh /tmp/3.txt.xz
48K/tmp/3.txt.xz
[root@arslinux-01 d6z]# xz -d -c /tmp/3.txt.xz > 2.txt
[root@arslinux-01 d6z]# du -sh 2.txt
1.1M2.txt


gzip bzip2 xz都不支持壓縮目錄

[root@arslinux-01 d6z]# gzip 123/
gzip: 123/ is a directory -- ignored
[root@arslinux-01 d6z]# bzip2 123/
bzip2: Input file 123/ is a directory.
[root@arslinux-01 d6z]# xz 123/
xz: 123/: Is a directory, skipping


6.5 zip壓縮工具

zip 支持壓縮目錄


zip 命令和 unzip 命令都需要安裝

[root@arslinux-01 d6z]# yum install -y zip
[root@arslinux-01 d6z]# yum install -y unzip


zip 壓縮包名 源文件名         壓縮命令(可以壓縮目錄)

[root@arslinux-01 d6z]# zip 2.txt.zip 2.txt
adding: 2.txt (deflated 75%)
[root@arslinux-01 d6z]# du -sh 2.txt.zip
264K2.txt.zip


·當目錄下還有二級目錄甚至更多級目錄時,zip並不會把二級目錄下的文件壓縮,而僅僅是把二級目錄本身壓縮

zip -r 壓縮包名 源目錄         壓縮目錄命令

[root@arslinux-01 d6z]# zip -r arslinux.zip arslinux/
adding: arslinux/ (stored 0%)
adding: arslinux/2/ (stored 0%)
adding: arslinux/2/2.txt (deflated 75%)
adding: arslinux/ars2/ (stored 0%)
adding: arslinux/ars2/2/ (stored 0%)
adding: arslinux/ars2/2/2.txt (deflated 75%)
adding: arslinux/ars2/ars1/ (stored 0%)
adding: arslinux/ars2/ars1/2/ (stored 0%)
adding: arslinux/ars2/ars1/2/2.txt (deflated 75%)
adding: arslinux/ars2/ars1/arslinux/ (stored 0%)
adding: arslinux/ars2/ars1/arslinux/2/ (stored 0%)
adding: arslinux/ars2/ars1/arslinux/2/2.txt (deflated 75%)
adding: arslinux/ars2/ls2 (deflated 53%)

zip 壓縮命令在壓縮後會保留源文件


unzip 壓縮包         解壓縮命令

[root@arslinux-01 d6z]# unzip arslinux.zip
Archive:  arslinux.zip
replace arslinux/2/2.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename:

在zip壓縮時,默認保留源文件或目錄,在解壓縮時,由於源文件存在,因此會提示你是否覆蓋或者不操作或者改名

根據實際情況選擇相應選項


unzip 壓縮包 -d 指定目錄         解壓到指定目錄,不指定就是當前目錄

[root@arslinux-01 d6z]# unzip 2.txt.zip -d test/
Archive:  2.txt.zip
inflating: test/2.txt

壓縮前什麼文件名,壓縮後還是什麼文件名,不能更改


unzip -l 壓縮包         查看壓縮包文件列表(文件內容無法查看)

[root@arslinux-01 d6z]# unzip -l arslinux.zip
Archive:  arslinux.zip
Length      Date    Time    Name
---------  ---------- -----   ----
0  03-27-2019 22:04   arslinux/
0  03-27-2019 22:04   arslinux/2/
1067315  03-27-2019 22:04   arslinux/2/2.txt
0  03-27-2019 22:04   arslinux/ars2/
0  03-27-2019 22:04   arslinux/ars2/2/
1067315  03-27-2019 22:04   arslinux/ars2/2/2.txt
0  03-27-2019 22:04   arslinux/ars2/ars1/
0  03-27-2019 22:04   arslinux/ars2/ars1/2/
1067315  03-27-2019 22:04   arslinux/ars2/ars1/2/2.txt
0  03-27-2019 22:04   arslinux/ars2/ars1/arslinux/
0  03-27-2019 22:04   arslinux/ars2/ars1/arslinux/2/
1067315  03-27-2019 22:04   arslinux/ars2/ars1/arslinux/2/2.txt
117680  03-27-2019 22:04   arslinux/ars2/ls2
---------                     -------
4386940                     13 files


6.6 tar打包

服務器之間傳輸多個文件和目錄,把所有文件和目錄打包成一個大文件,可能會減小文件大小,這樣傳輸速度更快(不絕對)


tar -cvf 壓縮包 文件/目錄         打包命令

[root@arslinux-01 d6z]# tar -cvf arslinux.tar arslinux/
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2


tar -cvf 壓縮包 文件 目錄         同時打包多個

[root@arslinux-01 d6z]# tar -cvf arslinux.tar arslinux 3.txt 2.txt
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
2.txt


tar -xvf 壓縮包         解壓縮命令(如果壓縮前的源文件存在,會覆蓋,不提示)

[root@arslinux-01 d6z]# tar xvf arslinux.tar
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2


tar -tf 壓縮包         查看tar包列表

[root@arslinux-01 d6z]# tar -tf arslinux.tar
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
2.txt


tar -cvf 包名 --exclude 文件/目錄 其餘不過濾的文件/目錄         過濾不要打包的文件

[root@arslinux-01 d6z]# tar -cvf arslinux2.tar --exclude ars1 arslinux 3.txt 2.txt
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ls2
3.txt
2.txt
[root@arslinux-01 d6z]# tar -cvf arslinux3.tar --exclude ars1 --exclude ars2 arslinux 3.txt 2.txt
arslinux/
arslinux/2/
arslinux/2/2.txt
3.txt
2.txt

可以多次使用 --exclude,過濾多個

[root@arslinux-01 d6z]# tar -cvf arslinux4.tar --exclude "*.txt" arslinux 3.txt 2.txt
arslinux/
arslinux/2/
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ls2
可以過濾掉 .txt 結尾的文件


6.7 打包並壓縮

tar打包時支持同時壓縮


tar -zcvf 壓縮包 文件/目錄        打包同時用gzip壓縮

tar -zxvf 壓縮包         解包命令

[root@arslinux-01 d6z]# tar -zcvf arslinux.tar.gz arslinux 3.txt 4.txt
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
4.txt
[root@arslinux-01 d6z]# du -sh arslinux.tar.gz
1.6Marslinux.tar.gz
[root@arslinux-01 d6z]# tar -zxvf arslinux.tar.gz
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
4.txt


tar -jcvf 壓縮包  文件/目錄         打包同時用bzip2壓縮

tar -jxvf 壓縮包         解包命令

[root@arslinux-01 d6z]# tar -jcvf arslinux.tar.bz2 arslinux 3.txt 4.txt
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
4.txt
[root@arslinux-01 d6z]# tar -jxvf arslinux.tar.bz2
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
4.txt
[root@arslinux-01 d6z]# du -sh arslinux.tar.bz2
564Karslinux.tar.bz2


tar -Jcvf 壓縮包 文件/目錄         打包同時用 xz 壓縮

tar -Jxvf 壓縮包         解包命令

[root@arslinux-01 d6z]# tar -Jcvf arslinux.tar.xz arslinux 3.txt 4.txt
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
4.txt
[root@arslinux-01 d6z]# tar -Jxvf arslinux.tar.xz
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
4.txt


tar -tf 壓縮包         查看壓縮包內文件列表(.gz .bz2 .xz 三種格式都支持)

[root@arslinux-01 d6z]# tar -tf arslinux.tar.gz
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
4.txt
[root@arslinux-01 d6z]# tar -tf arslinux.tar.bz2
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
4.txt
[root@arslinux-01 d6z]# tar -tf arslinux.tar.xz
arslinux/
arslinux/2/
arslinux/2/2.txt
arslinux/ars2/
arslinux/ars2/2/
arslinux/ars2/2/2.txt
arslinux/ars2/ars1/
arslinux/ars2/ars1/2/
arslinux/ars2/ars1/2/2.txt
arslinux/ars2/ars1/arslinux/
arslinux/ars2/ars1/arslinux/2/
arslinux/ars2/ars1/arslinux/2/2.txt
arslinux/ars2/ls2
3.txt
4.txt


看下這個帖子: http://ask.apelearn.com/question/5435


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章