數據壓縮原理_第1頁
數據壓縮原理_第2頁
數據壓縮原理_第3頁
數據壓縮原理_第4頁
數據壓縮原理_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、AIX 上總有一種壓縮方式適合你當今世界每天產生大量的數據,有些數據我們需要進行壓縮,壓縮數據的好處不言而喻:節省空間;方便傳輸;加密保護等等。很多壓縮工具應運而出,每種工具都有自己的特點。對于 AIX 平臺上的壓縮方法也很多 compress、pack、gzip、 pax、tar 等等。本文將首先簡單介紹一下壓縮的基本原理然后詳細介紹 AIX 平臺的常用壓縮工具并針對它們各自的特色進行比較,讓讀者對對 AIX 平臺的壓縮有針對性的認識,從而能夠根據不通的需要選擇合適的壓縮工具。數據壓縮的原理數據壓縮是指在不丟失信息的前提下,縮減數據量以減少存儲空間,提高其傳輸、存儲和處理效率的一種技術方法。

2、或按照一定的算法對數據進行重新組織,減少數據的冗余和存儲的空間。數據壓縮包括有損壓縮和無損壓縮。無損壓縮是可逆的;有損壓縮是不可逆的。計算機處理信息是以二進制數(0 和 1)的形式表示的,壓縮軟件把二進制信息中相同的字符串以特殊字符標記起來,從而實現縮小文件大小來達到壓縮的目的。壓縮的理論基礎是信息論。從信息的角度來看,壓縮就是去除掉信息中的冗余,即去除掉確定的或可推知的信息,而保留不確定的信息,也就是用一種更接近信息本質的描述來代替原有的冗余的描述,這個本質的東西就是信息量。數據壓縮的硬件和軟件工具也非常多,本文將針對 AIX 平臺常見的幾種數據壓縮工具進行介紹和比較并提供常用的示例進行解說

3、,希望您能從中選擇合適的壓縮工具進行壓縮。AIX 平臺上,通常我們看到的 .Z .gz .z .ar .tar 后綴的文件都是壓縮文件。通過 compress 可以生成 .Z 壓縮文件,通過 compress、uncompress、gzip 可以解壓 .Z 格式的壓縮文件;通過 gzip 可以生成 .gz 壓縮文件,通過 gzip 可以解壓 .gz 格式的壓縮文件;通過 pack 可以生成 .z 壓縮文件,通過 unpack、gzip 可以解壓 .z 格式的壓縮文件;通過 pax 可以生成 .ar 壓縮文件,通過 pax 可以解壓 .ar 格式的壓縮文件;通過 pax、tar 可以生成 .ta

4、r 壓縮文件,通過 pax、tar、untar、可以解壓 .tar 格式的壓縮文件。圖 1 描述了各種類型文件的壓縮及解壓可以選擇的 AIX 工具。圖 1. 不同文件類型的壓縮及解壓下面我們將詳細介紹 AIX 上主要壓縮工具的特點已經用法。回頁首compresscompress 是一個相當古老的 UNIX 檔案壓縮指令,利用自適應的 Lempel-Zev 編碼來減少文件大小。每一個被參數 File 指定的原文件將被可能的壓縮文件所代替,壓縮后的檔案會加上一個 .Z。 延伸檔名以區別未壓縮的檔案,壓縮后的檔案可以以 uncompress 解壓。值得注意的是執行 compress 需要有相應的權限

5、來替換文件。壓縮量依賴于輸入大小、由 Bits 變量指定的單位編碼的比特數和公共子串的分布。典型地,源代碼或英文文本將減少 50% 到 60%。特點 如果調用壓縮進程有適當的權限,壓縮文件將保留與原文件相同的所有權、方式和修改時間。 如果指定的文件的路徑大于 1023 字節,該命令不工作。 如果沒有指定文件,標準輸入將被壓縮到標準輸出。 如果壓縮沒有減少文件大小,將對標準錯誤寫一個消息而不替換原文件。 compress 命令的壓縮一般比利用哈夫曼編碼或自適應哈夫曼編碼實現的壓縮更緊湊,計算時間更少,(哈夫曼編碼在 pack 命令中被使用)。 若要將數個檔案壓成一個壓縮檔,必須先將檔案 tar

6、起來再壓縮。常用示例1. $compress -v dsm.opt dsm.opt: Compression: 10.14% This file is replaced with dsm.opt.Z.該命令壓縮 dsm.opt 文件,-v 參數將程式執行的訊息印在熒幕上。標準輸出顯示壓縮百分比為 14 。dsm.opt 文件被壓縮并重命名為 dsm.opt.Z。2. $compress -b 12 dsm.old該命令指定文件中公共子串的比特的最大值為 12。-b 參數設定共同字串數的上限,以位元計算,可以設定的值為 9 至 16 bits 。由于值越大,能使用的共同字串就 越多,壓縮比例就越

7、大,所以一般使用預設值 16 bit。3. $compress df dsm.opt.該命令將 dsm.opt.Z 解壓成 dsm.opt,若檔案已經存在 -df 程式則會自動覆蓋檔案。由于系統會自動加入 .Z 為延伸檔名,所以該命令中 dsm.opt.Z 寫成 dsm.opt 也會當作 dsm.opt.Z 來處理。Z回頁首uncompressCompress 的解壓也可以由 uncompress 來完成。uncompress 命令恢復由 compress 命令壓縮的原文件。uncompress 命令恢復由 compress 命令壓縮的原文件。每個由 File 參數指定的壓縮文件被除去而由展開

8、后的副本所替換。展開后的文件與壓縮的版本名字相同,但沒有 .Z 擴展名。如果用戶有 root 用戶權限,展開后的文件保留與原文件相同的所有者、組、方式和修改時間。如果用戶沒有 root 用戶權限,則文件保留相同的方式和修改時間,但獲取新的所有者和組。如果沒有指定文件,則標準輸入將展開為標準輸出。示例$uncompress dsm.opt.Z該命令解壓 dsm.opt.Z 文件,并重命名為 dsm.opt。回頁首packpack 命令以壓縮格式存儲由 File 參數指定的文件。輸入文件由一個原文件名附加 .z 后綴的壓縮文件所代替。壓縮文件維持了同原始文件同樣的訪問方式、訪問和修改日期和所有者。

9、 輸入文件名包含不超過 253 個字節,以允許有空間添加 .z 后綴。如果 pack 命令成功執行,原始文件就被除去。如果 pack 命令不能創建更小的文件,它就停止處理并報告不能節省空間。(節省空間失敗通常發生于小文件或者是統一字符分布的文件。)空間節省的數額取決于輸入文件的大小和字符分布頻率。由于譯碼樹形成了每個 .z 文件的第一部分,因此對于小于 3 個塊的文件不會節省空間。典型情況下,文本文件減少 25 到 40 。文件位置/usr/bin/pack特色 采用 Huffman 編碼來壓縮文件。因此 pack 命令始終只能壓縮小于 8MB 的文件。 pack 命令在下列任何一個條件下都不

10、能壓縮:文件已經壓縮過;輸入文件名超過了 253 個字節;文件有鏈接;文件是目錄;文件不能打開;不能通過壓縮節省存儲塊;名稱為 File.z 的文件已經存在;.z 文件不能創建;處理中發生 I/O 錯誤。示例1. $pack dsm.sys dsm.sys.ini2. pack: dsm.sys: This file is reduced in size 47.3%. pack: dsm.sys.ini: This file is reduced in size 47.5%.該命令壓縮名為 dsm.sys 和 dsm.sys.ini 的文件并顯示修改的文件名。壓縮的版本重命名為 dsm.opt

11、.z 和 dsm.sys.z。 此 pack 命令顯示每個壓縮文件的文件大小減小百分比。3. $ pack - dsm.sys4. pack: dsm.sys: This file is reduced in size 47.3%. 5. The file changed from 6296 to 3315 bytes. 6. The Huffman tree has 11 levels below the root. 7. There are 49 distinct bytes in input. 8. The dictionary overhead is 67 bytes. 9. The

12、effective entropy is 4.21 bits per byte. The asymptotic entropy is 4.13 bits per byte.該命令壓縮名為 dsmwebcl.log 的文件并顯示該文件的統計信息。回頁首unpackunpack 命令展開由pack命令創建的文件。對每個指定的文件,unpack 命令搜索名為 File.z 的文件。如果這個文件是壓縮文件,則 unpack 命令用其展開的版本來替換它。unpack 命令通過從 File 除去 .z 后綴來給新的文件命名。如果用戶有 root 用戶權限,則新的文件具有和原文件一樣的訪問方式、訪問和修改時

13、間、所有者和組。如果用戶沒有 root 用戶權限,則該文件保留同樣的訪問方式、訪問時間和修改時間,但獲取新的所有者和組。unpack 命令僅對以 .z 結束的文件進行操作。結果,當指定不以 .z 結束的文件名時,unpack 添加該后綴并搜索目錄以尋找帶有這種后綴的文件名。文件位置/usr/bin/unpack特色 如果正在解壓的文件有鏈接,unpack 命令會把警告寫到標準錯誤。與其來源的壓縮文件比較,新解壓的文件有不同的索引節點。但是,任何其它鏈接到壓縮文件原索引節點的文件仍然存在,仍然處于壓縮狀態。 以下情況則文件不能解壓:文件名(除 .z 文件之外)多于 253 字節;文件不能打開;文

14、件不是壓縮文件;有展開文件名的文件已存在;不能創建被解壓的文件。示例$ unpack dsm.sys.z dsm.sys.ini unpack: dsm.sys: This file is now unpacked. unpack: dsm.sys.ini: This file is now unpacked.該命令展開了壓縮文件 dsm.sys.z 和 dsm.sys.ini.z,并用名為 dsm.sys 和 dsm.sys.ini 的文件來替換它們。unpack 命令的文件名可以帶有或不帶 .z 后綴。回頁首pax抽取、寫以及列出歸檔文件成員;復制文件和目錄層次結構。 -r 和 -w 標志

15、指定了歸檔操作的類型。通過 pax 主要可以實現 4 大功能包括:列出已歸檔文件的成員文件(列表方式);使用 -r 標志抽取歸檔文件(讀取方式);使用 -w 標志寫歸檔文件(寫方式)用 -r 和 -w 標志復制文件(復制方式)。pax 命令應該是用于系統轉儲和 2 GB 以上的映像的首選存檔方法。 pax 命令還可以用于查看和修改 tar 和 cpio 格式的文件,下面的示例中將會給出相應解釋。文件位置/usr/bin/pax特點 系統缺省支持 64- 位 POSIX- 定義的數據格式。目的是允許歸檔大文件,例如 dump 文件。歸檔文件大小可以大于或等于 8 GB 支持長用戶名(或組名) 支

16、持大于 2097151 的超大 UID/GID 支持長路徑名或鏈接名 用 -o 標志可以修改歸檔算法注意事項 在讀取或復制方式下,如果需要中間目錄來抽取歸檔成員,pax 執行與 mkdir 子例程相同的操作,中間目錄作為路徑參數,值 S_IRWXU 作為方式參數。 如果沒有任何指定的模式或文件操作數與至少一個文件或歸檔成員匹配,pax 為每個不匹配的模式或文件操作數寫一條診斷消息到標準錯誤,并以錯誤狀態退出。 遍歷目錄過程中,pax 將檢測無限循環;例如,進入一個作為最后訪問文件的祖先的先前訪問的目錄。在檢測到無限循環時,pax 將診斷消息寫到標準錯誤然后終止。 當 pax 處于讀取方式或列表

17、方式,使用 -x pax 歸檔格式和文件名、鏈接名、所有者名或任何其他擴展的頭記錄中的字段,這些字段無法從 pax UTF8 編碼集格式轉換到當前編碼集和語言環境,pax 寫診斷消息到標準錯誤,如 -o invalid= 選項所描述的那樣處理文件,然后處理歸檔中的下一個文件。 對于 AIX 5.3,在缺省情況下 pax 命令將忽略擴展屬性。-U 選項通知 pax 來歸檔或恢復擴展屬性,它包括 ACL。-pe 選項將保留 ACL。指定 -pe 選項時,如果 pax 無法保留 ACL,診斷消息將寫入標準錯誤,但是不會刪除抽取的文件。將返回非零退出代碼。pax 歸檔文件中的擴展屬性條目需要新的記錄類

18、型。示例1. $pax -wf mytest.ar -x pax test1該命令將在當前目錄下為目錄 test1 創建 pax 格式的歸檔 mytest.ar。使用 -w 標志來寫歸檔文件,-x 參數指定輸出歸檔格式。pax 有 3 中輸出格式:pax、copyio、ustar。pax 為缺省數據交換格式。特定字符歸檔文件的格式的缺省分塊值是 10240。支持以 512 遞增的從 512 到 32256 的分塊值;cpio 擴展 cpio 交換格式。特定字符歸檔文件的格式的缺省分塊值是 5120。支持以 512 遞增的從 512 到 32256 的分塊值 ; ustar 擴展 tar 交換格

19、式。特定字符歸檔文件的格式的缺省分塊值是 10240。支持以 512 遞增的從 512 到 32256 的分塊值。值得注意的是:pax 并不一定會減小目錄的大小。2. $ pax -rvf bin.ar -o delete=path3. PAX format archive 4. bin 5. bin/tsmstats.lck 6. bin/dsmcert.kdb.z 7. bin/dsm.tar 8. bin/dsmcert.crl.Z 9. bin/dsm.opt bin/dsm.sys.ar該命令將抽取 bin.ar,抽取過程中要忽略 pax 格式的歸檔的路徑名。當歸檔文件中包含 ASC

20、II 碼,抽取到 z(VM/ESA)操作系統時為了避免出現亂碼現象我們需要在添加其他的標志來進行抽取。10. $ pax -r -f myfile1.pax -o from=ISO8859-1,to=IBM-1047該命令將抽取 myfile1.pax 文件,該命令保證了歸檔文件中的 ASCII 碼解壓到 zVM/ESA)操作系統的正常使用。11. $ pax -rw bin newdir該命令將 bin 目錄層次結構復制到 newdir 中同時保留了源文件的大多數屬性,如硬連接數和文件訪問次數等。如果 newdi 目錄中包含相同的文件或目錄那么該命令不會覆蓋原有的目錄結構,該命令會提示類似下

21、面的信息:12. $ pax: bin : The file/directory exists and will not be overwritten.回頁首tartar 是一個已移植到 Linux 中的經典 UNIX 命令。 tar 是 tape archive(磁帶歸檔)的縮寫,最初設計用于將文件打包到磁帶上,現在也可用于其它存儲介質。使用 tar 可以打包整個目錄樹,這使得它特別適合用于備份。歸檔文件可以全部還原,或從中展開單獨的文件和目錄。備份可以保存到基于文件的設備或磁帶設備上。文件可以在還原時重定向,以便將它們重新放到一個與最初保存它們的目錄(或系統)不同的目錄(或系統)。 tar

22、 是與文件系統無關的。它可以使用在 ext2、ext3、 jfs、Reiser 和其他文件系統上。單獨使用時,生成具有 .tar 擴展名的文件。當與 Gzip 結合用于數據壓縮時,生成的文件擴展名可能是 .tgz、.tar.gz 或與 compress 結合用于數據壓縮時,生成的文件擴展名則是 .tar.Z。tar 命令通過將文件寫入歸檔存儲介質或將文件從介質中取回,來處理歸檔。 由 tar 命令使用的文件通過 File 參數來表示。如果 File 參數引用一個目錄,則引用該目錄并遞歸引用該目錄下全部的文件和目錄。tar 命令有兩組標志:必需標志和可選標志。必需標志控制 tar 命令的操作,包

23、括 -c、-r、-t、-u 和 -x 標志。要執行 tar 命令至少要選擇一個必需標志。選擇了必需標志后,您可以選擇一個可選標志,但可選標志對控制 tar 命令不是必需的。文件位置/dev/rmt0 指定缺省磁帶設備。/bin/tar 指定 tar 命令的符號鏈接。/usr/bin/tar 包含 tar 命令。注意事項 由于在 tar 命令中對頭塊空間的限制,當恢復到某些系統時,大于 65,535 的用戶號(UID)和組標識號(GID)將毀壞。大小約束只影響所有權和許可權而不對數據造成損害。 ustar 頭格式允許文件大到 8 GB。因此,tar 命令支持歸檔最大 8 GB 的文件。 tar

24、不保留任何稀疏分配的文件的稀疏屬性。任何在恢復前原是稀疏的文件,將按文件大小在文件系統內分配其所有空間。 tar 打包不一定能夠壓縮文件大小。示例1. $tar c myfile1該命令將文件 myfile1 寫到缺省磁帶機上新的歸檔中(例如 /dev/rmt0)。通常 AIX 會連接一些磁帶,如果沒有物理磁帶或者缺省磁帶沒有配好 tar 命令就會打印出類似下面的錯誤信息2. $tar: /dev/rmt0: There is a request to a device or address that does not exist.為了避免上述情況發生通常建議用戶在使用 tar 命令時指定 -

25、f Archive,使用 Archive 變量表示要讀或寫的歸檔。3. $tar cvf myfile1.tar myfile1該命令將文件 myfile1 在當前目錄下歸檔,歸檔文件名為 myfile1.tar,同時處理每個文件時列出它們的名稱。有時候我們只需要某個類型的文件并不想打包整個文件夾,可以通過使用 tar 命令時指定 -L InputList 實現。-L 選項的 Inputlist 參數是一個文件名稱,該名稱列出需要歸檔的文件和目錄。4. $tar cvf /usr/log.tar L log_list該命令歸檔 log_list 文件中列出的文件和目錄,歸檔文件到 /usr/l

26、og.tar。這里的 log_list 列表文件可以通過一下命令獲得:5. $ls *.log log.lstTar 文件的恢復也是通過 tar 命令來完成的。6. $tar xf myfile1.tar該命令恢復歸檔文件 myfile1.tar 到當前目錄。有時我們想先看看 tar 包中有那些文件,然后再決定是否進行解 tar,通過 -t 標志可以按照文件在歸檔中的順序列出文件。7. $tar vtf myfile1.tar該命令列出 myfile1.tar 磁盤歸檔文件中各文件的名稱。值得注意的是文件可能會多次列出。有時候我們會遇到 gzip 格式的文件,通過 -z 參數 tar 同樣可以

27、解壓 gzip 格式的文件。8. $tar zxvfmyfile1.tar.gz該命令解壓 myfile1.tar.gz 文件到當前目錄。回頁首GZIP gzip 最早由 Jean-loup Gailly 和 Mark Adler 創建,用于 UNIX 系統的文件壓縮。Gzip 是一種無損失的數據壓縮格式。gzip(也稱 zip 或 zlib)所使用的算法是開源、無專利的 LZ77(Lempel-Ziv 1977)算法的變體。該算法尋找輸入數據內的重復字符串。二次出現的字符串由一個指向前一字符串的指針(以對的形式 - 距離和長度)代替。其中,距離限定為 32 KB,長度限定為 258 字節。如

28、果字符串沒有在這前 32 KB 內出現,它就會作為文字字節序列發出(這里所說的字符串 定義為隨意字節序列,并不僅限于可打印的字符)。我們在 Linux 中經常會用到后綴為 .gz 的文件,它們就是 GZIP 格式的。現今已經成為 Internet 上使用非常普遍的一種數據壓縮格式,或者說一種文件格式。實例1. $gzip *2. gzip: dsmcert.crl.Z already has .Z suffix unchanged 3. gzip: dsmerror.log.gz already has .gz suffix - unchanged gzip: dsmwebcl.log.z a

29、lready has .z suffix - unchanged該命令壓縮把當前目錄下的每個文件壓縮成 .gz 文件。當前目錄下已經存在的壓縮文件,例如 .Z .z .gz 后綴文件,gzip 將不對它們進行操作;對 .ar .tar 作為后綴的文件責仍然可能進行壓縮。4. $gzip dv *5. rootaixsvt01 /usr/./bin $ gzip -dv * 6. cert.arm.gz: 26.6% - replaced with cert.arm 7. dsmcert.crl.Z: 18.7% - replaced with dsmcert.crl dsmcert.kdb.z

30、: 66.7% - replaced with dsmcert.kdb該命令把當前目錄下每個壓縮的文件解壓,并列出詳細的信息。該命令可以解壓當前目錄下多種壓縮格式的壓縮文件,例如 .Z .z .gz 后綴的壓縮文件。8. $ gzip -l *.gz9. compressed uncompr. ratio uncompressed_name 10. 631 824 26.6% cert.arm 11. 44 12 -16.6% 675 836 22.8% (totals)該命令詳細顯示當前目錄下 .gz 后綴壓縮的文件的信息但是并不解壓。12. gzip myfile.tar該命令壓縮 tar 備份文件 myfile.tar,此時壓縮文件的擴展名為 .tar.gz。回頁首zcatzcat 命令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論