天天看點

Linux之壓縮解壓縮及歸檔工具的使用

壓縮工具

compress/uncompress:  .Z結尾

gzip/gunzip: .gz結尾

bzip2/bunzip2: .bz2結尾

xz/unxz: .xz字尾,.lzma和.raw字尾

    1、預設删除被壓縮的檔案,為了節約空間。保留原檔案必須啟用選項

    2、壓縮比不高:快速、高效

    3、純文字壓縮,二進制壓縮意義不大

    4、bzip2,xz不支援遞歸壓縮

壓縮及歸檔工具: zip/unzip: .zip字尾

    1、通用的工具: VMS,Unix,MSDOS,OS/2,Windows(Windows 原生支援的壓縮),Window 9x/NT/XP,Minix

    2、tar和壓縮工具共同的作用

 3、支援歸檔壓縮目錄

歸檔工具: tar,cpio(特殊場景)

    1、歸檔後,檔案可能變大。(書放在箱子裡,箱子的重量)

    2、壓縮/解壓縮後不會删除原檔案

    3、壓縮時,帶調用壓縮的選項。展開時,可以不帶選項,自動識别。 -Jcf tar.xz

 4、支援歸檔或壓縮目錄 

gzip/gunzip/zcat指令

1、LZ77壓縮算法

2、壓縮目錄,-r

1

2

3

4

5

6

7

8

<code>gzip</code> <code>[OPTIONS...] FILE</code>

<code>    </code><code>-c --stdout  </code><code>## 壓縮後的結果輸出到标準輸出。(目的不自動删除原檔案)</code>

<code>    </code><code>-d           </code><code>## 調用gunzip實作解壓縮</code>

<code>    </code><code>-r,--recursive  </code><code>## 遞歸壓縮</code>

<code>    </code><code>-</code><code>#  1,9      ## 壓縮比,越大,檔案小,消耗的cpu時針周期越長</code>

<code>zcat FILE</code>

<code>     </code><code>不展開檔案,檢視壓縮檔案的内容</code>

bzip2/bunzip2/bzcat指令

1、LZ77,LZ78壓縮算法,支援比gzip更進階的算法

2、不能壓縮目錄

<code>bzip2</code> <code>[OPTIONS....] FILE</code>

<code>    </code><code>-k,keep   </code><code>## 不删除原檔案,保持原檔案</code>

<code>    </code><code>-d         </code><code>## 調用bunzip2解壓檔案</code>

<code>    </code><code>-</code><code>#,1-9    ## 壓縮級别。壓縮比,越大,檔案小,消耗的cpu時針周期越長</code>

<code>    </code> 

<code>    </code><code>-q,quiet  </code><code>## 靜默模式,适用于腳本中</code>

xz/unxz/xzcat指令

1、流行的壓縮工具,壓縮算法比bzip2更為有效

2、不支援壓縮目錄

9

10

<code>xz [OPTIONS...] FILE...</code>

<code>    </code><code>-k</code>

<code>    </code><code>-c,--stdout</code>

<code>    </code><code>-d</code>

<code>    </code><code>-</code><code>#</code>

<code>    </code><code>-q       </code><code>## 靜默模式</code>

<code>    </code><code>-F FORMAT  </code><code>## xz,lzma,raw 預設為xz</code>

<code>xzcat FILE  不展開壓縮檔案,檢視檔案解壓的内容</code>

zip/unzip指令,歸檔和壓縮工具

    1、解壓後的檔案名同壓縮前的檔案名

 3、支援壓縮目錄

<code>zip FILE.zip FILE ...</code>

<code>    </code><code>-d, --delete 不展開歸檔,删除歸檔中的檔案</code>

<code>    </code><code>-r , 遞歸歸檔</code>

<code>    </code><code>-q, 靜默模式</code>

tar GNUtar歸檔工具

    2、壓縮/解壓縮後不會删除原檔案 

 3、支援歸檔目錄

11

<code>tar [OPTIONS...]  FILE...</code>

<code>    </code><code>-cvf FILE.tar 建立歸檔</code>

<code>    </code><code>-xvf FILE.tar 展開歸檔</code>

<code>    </code><code>-tvf FILE.tar 不展開歸檔,檢視歸檔的檔案</code>

<code>        </code><code>-f FILE.tar 歸檔後的檔案名</code>

<code>        </code><code>-v ,verbose詳細資訊</code>

<code>    </code><code>-C DIR   展開至指定目錄 </code>

<code>    </code><code>-j ,歸檔後,調用bzip2工具對檔案壓縮</code>

<code>    </code><code>-J , 歸檔後,調用xz</code>

<code>    </code><code>-z , 調用gzip</code>

<code>**指令可省略 - ,例如 -cvf 可寫為 cvf</code>

使用示例

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

56

57

58

59

60

61

62

63

64

65

66

67

68

69

<code>1、準備檔案</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># cp /etc/{fstab,init.d/functions} /tmp/</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls -l /tmp/</code>

<code>-rw-r--r-- 1 root root   358 8月  13 18:08 fstab</code>

<code>-rw-r--r-- 1 root root 15131 8月  13 18:08 functions</code>

<code>2、壓縮檔案</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># cd /tmp</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls</code>

<code>fstab  functions</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># gzip fstab </code>

<code>fstab.gz  functions  </code><code>## 原檔案被删除</code>

<code>3、解壓縮檔案</code>

<code>root@izpo45bh60h6bsz tmp]</code><code># gunzip fstab.gz </code>

<code>fstab  functions     </code><code>## 解壓的檔案被删除</code>

<code>4、保留原檔案,壓縮</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># gzip -c fstab &gt; fstab.gz</code>

<code>fstab  fstab.gz  functions</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls -l -h</code>

<code>-rw-r--r-- 1 root root 358 8月  13 18:08 fstab     </code><code>## 對比</code>

<code>-rw-r--r-- 1 root root 266 8月  13 18:10 fstab.gz  </code><code>## 對比</code>

<code>-rw-r--r-- 1 root root 15K 8月  13 18:08 functions</code>

<code>5、保留原檔案,解壓</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># gzip -d -c fstab.gz &gt; fstab.1</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls -lh</code>

<code>-rw-r--r-- 1 root root 358 8月  13 18:12 fstab    </code><code>## 對比</code>

<code>-rw-r--r-- 1 root root 358 8月  13 18:12 fstab.1  </code><code>## 對比</code>

<code>-rw-r--r-- 1 root root 266 8月  13 18:10 fstab.gz</code>

<code>6、低壓縮比和高壓縮比解壓的差別</code>

<code>1)低壓縮:速度快,效率高</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># gzip -c -1 fstab &gt; fstab.1.gz</code>

<code>2)高壓縮,速度慢,浪費cpu時鐘周期,檔案壓縮後的檔案小</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># gzip -c -9 fstab &gt; fstab.2.gz</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls -lh fstab.1.gz fstab.2.gz </code>

<code>-rw-r--r-- 1 root root 267 8月  13 18:14 fstab.1.gz</code>

<code>-rw-r--r-- 1 root root 266 8月  13 18:14 fstab.2.gz</code>

<code>7、壓縮目錄</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># cp -r /etc/pam.d .</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># gzip -r pam.d</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls pam.d/</code>

<code>atd.gz            fingerprint-auth-ac.gz ....</code>

<code>8、解壓目錄</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># gunzip pam.d/*</code>

<code>atd          fingerprint-auth </code>

<code>9、不展開檔案檢視檔案的内容</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># zcat fstab.gz </code>

<code>#</code>

<code># /etc/fstab</code>

<code># Created by anaconda on Fri Feb 24 02:58:22 2017</code>

<code># Accessible filesystems, by reference, are maintained under '/dev/disk'</code>

<code># See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info</code>

<code>UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 /                       ext3    defaults        1 1</code>

<code>/www/swap</code>    <code>swap    swap    defaults    0 0</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code>#</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># cp /var/log/messages /tmp</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls /tmp/messages </code>

<code>/tmp/messages</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># bzip2 messages </code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls messages*</code>

<code>messages.bz2</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># bunzip2 messages.bz2 </code>

<code>messages</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># bzip2 -k messages </code>

<code>messages  messages.bz2</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># rm messages</code>

<code>rm</code><code>:是否删除普通檔案 </code><code>"messages"</code><code>?y</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># bzip2 -d -k messages.bz2 </code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># bzip2 -1 -k messages </code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># bzip2 -9 messages.new </code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls -lh  messages*</code>

<code>-rw------- 1 root root 469K 8月  13 18:26 messages</code>

<code>-rw------- 1 root root  21K 8月  13 18:26 messages.bz2       </code><code>## 對比</code>

<code>-rw------- 1 root root  18K 8月  13 18:31 messages.new.bz2   </code><code>## 對比</code>

<code>7、不展開檔案檢視檔案的内容</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># bzcat messages.bz2 </code>

<code>Aug 12 10:00:29 izpo45bh60h6bsz pure-ftpd[5446]: ([email protected]) [INFO] New connection from 140.205.225.185</code>

<code>Aug 12 10:00:29 izpo45bh60h6bsz pure-ftpd[5446]: ([email protected]) [ERROR] Unable to </code><code>read</code> <code>the indexed puredb </code><code>file</code> <code>(or old </code><code>format</code> <code>detected) - Try pure-pw mkdb</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># rm /tmp/* -rf</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># cp /etc/fstab /etc/issue .</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz issue </code>

<code>fstab  issue.xz</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz -d issue.xz </code>

<code>fstab  issue</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz -k issue </code>

<code>fstab  issue  issue.xz</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz -c fstab &gt; fstab.xz</code>

<code>fstab  fstab.xz  issue  issue.xz</code>

<code>fstab.xz  issue.xz</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz -d -k fstab.xz issue.xz </code>

<code>-rw-r--r-- 1 root root 358 8月  13 18:40 fstab.bak</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz -k -1 fstab </code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># mv fstab fstab.bak</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz -k -9 fstab.bak </code>

<code>-rw-r--r-- 1 root root 324 8月  13 18:40 fstab.bak.xz</code>

<code>-rw-r--r-- 1 root root 332 8月  13 18:40 fstab.xz</code>

<code>7、lzma格式壓縮</code>

<code>fstab </code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz -F lzma fstab</code>

<code>fstab.bak.xz  fstab.lzma  issue  pam.d</code>

<code>8、不展開檔案檢視檔案的内容</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xzcat fstab.xz </code>

<code>9、靜默模式,錯誤輸出流不輸出至标準輸出</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz fstab.xz</code>

<code>xz: fstab.xz: File already has `.xz' suffix, skipping</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xz -q fstab.xz</code>

zip/unzip指令

<code>1、歸檔</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># zip hello  fstab.bak.xz fstab.xz issue.xz </code>

<code>總用量 20K</code>

<code>-rw-r--r-- 1 root root  324 8月  13 18:40 fstab.bak.xz</code>

<code>-rw-r--r-- 1 root root  324 8月  13 18:40 fstab.xz</code>

<code>-rw-r--r-- 1 root root 1.2K 8月  13 18:54 hello.zip</code>

<code>-rw-r--r-- 1 root root   80 8月  13 18:39 issue.xz</code>

<code>2、展開</code>

<code>hello.zip  pam.d</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># unzip hello.zip </code>

<code>Archive:  hello.zip</code>

<code> </code><code>extracting: fstab.bak.xz            </code>

<code> </code><code>extracting: fstab.xz                </code>

<code> </code><code>extracting: issue.xz                </code>

<code>fstab.bak.xz  fstab.xz  hello.zip  issue.xz  pam.d</code>

<code>3、歸檔目錄</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># find . -maxdepth 1 -type f -delete</code>

<code>pam.d</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># zip pam.d.zip pam.d</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ll</code>

<code>總用量 8</code>

<code>drwxr-xr-x 2 root root 4096 8月  13 18:43 pam.d</code>

<code>-rw-r--r-- 1 root root  162 8月  13 18:58 pam.d.zip</code>

<code>4、展開歸檔</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># mv pam.d pam.d.bak</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># unzip pam.d.zip </code>

<code>Archive:  pam.d.zip</code>

<code>   </code><code>creating: pam.d/</code>

<code>pam.d  pam.d.bak  pam.d.zip</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls pam.d</code>

<code>5、歸檔目錄</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># zip pam.d.1.zip pam.d.bak/*</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># zip -r pam.d.zip pam.d</code>

<code>6、展開歸檔</code>

<code>7、靜默模式:展開時/歸檔時不顯示多餘的資訊</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># unzip -q pam.d.zip</code>

tar指令

<code>1、建立歸檔</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># tar cvf hello.tar ./* </code>

<code>2、展開歸檔</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># tar xvf hello.tar</code>

<code>3、不展開,檢視内容</code>

<code>root@izpo45bh60h6bsz tmp]</code><code># tar tf hello.tar</code>

<code>4、展開至指定目錄</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># mkdir test</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># tar xvf hello.tar -C test/</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls test/</code>

<code>hello  pam.d  pam.d.1.zip  pam.d.bak  pam.d.zip</code>

<code>5、歸檔後以</code><code>bzip2</code><code>工具壓縮</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># tar jcf total.tar.bz2 ./*</code>

<code>total.</code><code>tar</code><code>.bz2</code>

<code>6、歸檔後以xz工具壓縮</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># tar Jcf total.tar.xz ./*</code>

<code>total.</code><code>tar</code><code>.xz</code>

<code>7、歸檔後以</code><code>gzip</code><code>工具壓縮</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># tar zcf total.tar.gz ./*</code>

<code>total.</code><code>tar</code><code>.gz</code>

本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1955942,如需轉載請自行聯系原作者

繼續閱讀