安裝 Bzip2
命令如下:
代碼如下:
make -f Makefile-libbz2_so &&
make &&
make install &&
cp bzip2-shared /bin/bzip2 &&
ln -s libbz2.so.1.0 libbz2.so &&
cp -a libbz2.so* /lib &&
rm /lib/libbz2.so &&
ln -s ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so &&
rm /usr/bin/{bunzip2,bzcat,bzip2} &&
mv /usr/bin/{bzip2recover,bzless,bzmore} /bin &&
ln -s bzip2 /bin/bunzip2 &&
ln -s bzip2 /bin/bzcat
儘管不是一個必需的部分,值得說到的是有一個Tar包用的補丁,使tar程式可以更容易地用bzip2/bunzip2來壓縮和解壓。如果是單純的tar,你不得不用這樣的命令:bzcat file.tar.bz | tar -xv 或 tar --use-compress-prog=bunzip2 -xvf file.tar.bz2 來使用bzip2和bunzip2。這個補丁提供了 -j 選項,你可以用這樣的命令: tar -xvfj file.tar.bz2 來解壓一個bzip2格式的包。應用這個補丁將在後面安裝Tar包的時候說到。
簡介
bzip2, bunzip2 - 一種塊排序檔案壓縮軟體,v0.9.5
bzcat - 將檔案解壓縮至標準輸出
bzip2recover - 恢複損壞的 bzip2 檔案
bzip2 採用 Burrows-Wheeler 塊排序文本壓縮演算法和 Huffman 編碼方式壓縮檔。 壓縮率一般比基於 LZ77/LZ78 的壓縮軟體好得多,其效能接近 PPM 族統計類 壓縮軟體。
命令列參數有意設計為非常接近 GNU gzip 的形式,但也不完全相同。
bzip2 從命令列讀入檔案名稱和參數。 每個檔案被名為 "原始檔案名.bz2" 的壓縮檔替換。 每個壓縮檔具有與原檔案相同的修改時間、 許可權, 如果可能的話, 還具有相同的屬主, 因此在解壓縮時這些特性將正確地恢複。 在某些檔案系統中, 沒有許可權、 屬主或時間的概念, 或者對檔案名稱的長度有嚴格限制, 例如 MSDOS, 在這種情況下,bzip2 沒有保持原檔案名稱、 屬主、 許可權以及時間的機制, 從這個意義上說,bzip2 對檔案名稱的處理是幼稚的。
bzip2 和 bunzip2 在預設情況下不覆蓋已有的檔案。 如果想覆蓋已有的檔案,要指定 -f 選項。
如果未指定檔案名稱, bzip2 將壓縮來自標準輸入的資料並寫往標準輸出。在這種情況下, bzip2 會拒絕將壓縮結果寫往終端,因為這完全無法理解並且是沒有意義的。
bunzip2 (以及 bzip2 -d) 對所有指定的檔案進行解壓縮處理。不是由 bzip2 產生的檔案將被忽略,同時發出一個警告資訊。 bzip2 按下列方式由壓縮檔名確定解壓後的檔案名稱:
filename.bz2 解壓成 filename
filename.bz 解壓成 filename
filename.tbz2 解壓成 filename.tar
filename.tbz 解壓成 filename.tar
anyothername 解壓成 anyothername.out
如果檔案名稱的尾碼不是下列之一: .bz2, .bz, .tbz2 或 .tbz, .bzip2 將抱怨無法確定原始檔案名,並採用原檔案名稱加 .out 作為解壓縮檔案名稱。
在壓縮時,如果不提供檔案名稱,bzip2 將從標準輸入讀取資料,壓縮結果寫往標準輸出。
bunzip2 能夠正確地解壓由兩個或更多個壓縮檔連在一起的檔案。 解壓的結果為相應的連在一起的未壓縮檔。
bzip2 也支援對連在一起的壓縮檔的完整性檢查(-t選項)。
同樣可採用 -c 選項將檔案壓縮或解壓縮至標準輸出。 多個檔案可通過這種方式壓縮或解壓縮。 輸出結果被依次送往標準輸出。 採用這種方式對多個檔案的壓縮將產生包含 多個壓縮檔的資料流。這樣的資料流只能被 0.9.0 版或其後續版本的 bzip2 正確解壓。較早版本的 bzip2 會在解壓完第一個檔案之後停止。
bzcat (或 bzip2 -dc) 將所有指定檔案解壓縮至標準輸出。
bzip2 可從環境變數 BZIP2 和 BZIP 中依次讀取參數, 並在命令列參數之前對其進行處理。 這是提供預設選項的方便途徑。
即使壓縮後的檔案略大於原檔案, 壓縮也總是照樣進行。 小於大約 100 位元組的檔案壓縮後傾向於變大, 因為會有一個 50 位元組的資料頭。 對於隨機資料 (包括大多數壓縮軟 件的輸出), 大約每位元組壓成 8.05 位, 放大率約為 0.5%。
bzip2 採用 32 位 CRC 校正碼作自我檢查,以確認解壓後的檔案與原始檔案相同。 這可用於檢測壓縮檔是否損壞,並防止 bzip2 中未知的缺陷(運氣好的話這種可能性非常小)。 資料損毀而未檢測到的幾率非常之小, 對於每個被處理的檔案大約是四十億分之一。 檢查是在解壓縮時進行的, 因此它只能說明某個地方出問題了。 它能協助恢複原始未壓縮的資料。可以用 bzip2recover 來嘗試從損壞的檔案中恢複資料。
傳回值:正常退出返回 0, 出現環境問題返回 1 (檔案未找到,非法的選項,I/O錯誤等), 返回 2 表明壓縮檔損壞,出現導致 bzip2 緊急退出的內部一致性錯誤(例如缺陷)時返回 3。
參數
-c --stdout
將資料壓縮或解壓縮至標準輸出。
-d --decompress
強制解壓縮。 bzip2, bunzip2 以及 bzcat 實際上是同一個程式,進行何種操作將根據程式名確定。 指定該選項後將不考慮這一機制,強制 bzip2 進行解壓縮。
-z --compress
-d 選項的補充:強制進行壓縮操作,而不管執行的是哪個程式。
-t --test
檢查指定檔案的完整性,但並不對其解壓縮。 實際上將對資料進行實驗性的解壓縮操作,而不輸出結果。
-f --force
強制覆蓋輸出檔案。通常 bzip2 不會覆蓋已經存在的檔案。該選項還強制 bzip2 打破檔案的硬串連,預設情況下 bzip2 不會這麼做。
-k --keep
在壓縮或解壓縮時保留輸入檔案(不刪除這些檔案)。
-s --small
在壓縮、 解壓縮及檢查時減少記憶體用量。 採用一種修正的演算法進行壓縮和測試, 每個資料區塊僅需要 2.5 個位元組。 這意味著任何檔案都可以在 2300k 的記憶體中進行解壓縮, 儘管速度只有通常情況下的一半。
在壓縮時,-s將選定 200k 的塊長度,記憶體用量也限制在 200k 左右, 代價是壓縮率會降低。 總之,如果機器的記憶體較少(8MB或更少), 可對所有操作都採用-s選項。參見下面的記憶體管理。
-q --quiet
壓制不重要的警告資訊。屬於 I/O 錯誤及其它嚴重事件的資訊將不會被壓制。
-v --verbose
詳盡模式 -- 顯示每個被處理檔案的壓縮率。 命令列中更多的 -v 選項將增加詳細的程度, 使 bzip2 顯示出許多主要用於診斷目的資訊。
-L --license -V --version
顯示軟體版本,許可證條款及條件。
-1 to -9
在壓縮時將塊長度設為 100 k、200 k .. 900 k。 對解壓縮沒有影響。參見下面的記憶體管理。
--
將所有後面的命令列變數看作檔案名稱,即使這些變數以減號"-"打頭。 可用這一選項處理以減號"-"打頭的檔案名稱, 例如:bzip2 -- -myfilename.
--repetitive-fast --repetitive-best
這些選項在 0.9.5 及其以上版本中是多餘的。 在較早的版本中,這兩個選項對排序演算法 的行為提供了一些粗糙的控制,有些情況下很有用。 0.9.5 及其以上版本採用了改進的演算法而與這些選項無關。
例:
例a,壓縮
代碼如下:
[root@localhost ~]# bzip2 -z abc.sh #壓縮
代碼如下:
[root@localhost ~]# bzip2 -kv abc.sh #壓縮原文保留
abc.sh: 1.220:1, 6.557 bits/byte, 18.04% saved, 255 in, 209 out.
代碼如下:
[root@localhost ~]# bzip2 -9 -c abc.sh >abc.bz2 #壓縮原文保留
例b,解壓
root@tnak-VirtualBox:/home/tnak# bzip2 -dv abc.sh.bz2
abc.sh.bz2: done