溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統(tǒng)中怎么利用Bzip2壓縮文件

發(fā)布時間:2021-08-11 17:04:33 來源:億速云 閱讀:119 作者:Leah 欄目:系統(tǒng)運維

今天就跟大家聊聊有關Linux系統(tǒng)中怎么利用Bzip2壓縮文件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

安裝 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 族統(tǒng)計類 壓縮軟件。
命令行參數有意設計為非常接近 GNU gzip 的形式,但也不完全相同。
bzip2 從命令行讀入文件名和參數。 每個文件被名為 "原始文件名.bz2" 的壓縮文件替換。 每個壓縮文件具有與原文件相同的修改時間、 權限, 如果可能的話, 還具有相同的屬主, 因此在解壓縮時這些特性將正確地恢復。 在某些文件系統(tǒng)中, 沒有權限、 屬主或時間的概念, 或者對文件名的長度有嚴格限制, 例如 MSDOS, 在這種情況下,bzip2 沒有保持原文件名、 屬主、 權限以及時間的機制, 從這個意義上說,bzip2 對文件名的處理是幼稚的。
bzip2 和 bunzip2 在缺省情況下不覆蓋已有的文件。 如果想覆蓋已有的文件,要指定 -f 選項。
如果未指定文件名, bzip2 將壓縮來自標準輸入的數據并寫往標準輸出。在這種情況下, bzip2 會拒絕將壓縮結果寫往終端,因為這完全無法理解并且是沒有意義的。
bunzip2 (以及 bzip2 -d) 對所有指定的文件進行解壓縮處理。不是由 bzip2 產生的文件將被忽略,同時發(fā)出一個警告信息。 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 版或其后續(xù)版本的 bzip2 正確解壓。較早版本的 bzip2 會在解壓完第一個文件之后停止。
bzcat (或 bzip2 -dc) 將所有指定文件解壓縮至標準輸出。
bzip2 可從環(huán)境變量 BZIP2 和 BZIP 中依次讀取參數, 并在命令行參數之前對其進行處理。 這是提供缺省選項的方便途徑。
即使壓縮后的文件略大于原文件, 壓縮也總是照樣進行。 小于大約 100 字節(jié)的文件壓縮后傾向于變大, 因為會有一個 50 字節(jié)的數據頭。 對于隨機數據 (包括大多數壓縮軟 件的輸出), 大約每字節(jié)壓成 8.05 位, 放大率約為 0.5%。
bzip2 采用 32 位 CRC 校驗碼作自我檢查,以確認解壓后的文件與原始文件相同。 這可用于檢測壓縮文件是否損壞,并防止 bzip2 中未知的缺陷(運氣好的話這種可能性非常小)。 數據損壞而未檢測到的幾率非常之小, 對于每個被處理的文件大約是四十億分之一。 檢查是在解壓縮時進行的, 因此它只能說明某個地方出問題了。 它能幫助恢復原始未壓縮的數據??梢杂?bzip2recover 來嘗試從損壞的文件中恢復數據。
返回值:正常退出返回 0, 出現環(huán)境問題返回 1 (文件未找到,非法的選項,I/O錯誤等), 返回 2 表明壓縮文件損壞,出現導致 bzip2 緊急退出的內部一致性錯誤(例如缺陷)時返回 3。

參數
-c --stdout
    將數據壓縮或解壓縮至標準輸出。
-d --decompress
    強制解壓縮。 bzip2, bunzip2 以及 bzcat 實際上是同一個程序,進行何種操作將根據程序名確定。 指定該選項后將不考慮這一機制,強制 bzip2 進行解壓縮。
-z --compress
-d 選項的補充:強制進行壓縮操作,而不管執(zhí)行的是哪個程序。
-t --test
    檢查指定文件的完整性,但并不對其解壓縮。 實際上將對數據進行實驗性的解壓縮操作,而不輸出結果。
-f --force
    強制覆蓋輸出文件。通常 bzip2 不會覆蓋已經存在的文件。該選項還強制 bzip2 打破文件的硬連接,缺省情況下 bzip2 不會這么做。
-k --keep
    在壓縮或解壓縮時保留輸入文件(不刪除這些文件)。
-s --small
    在壓縮、 解壓縮及檢查時減少內存用量。 采用一種修正的算法進行壓縮和測試, 每個數據塊僅需要 2.5 個字節(jié)。 這意味著任何文件都可以在 2300k 的內存中進行解壓縮, 盡管速度只有通常情況下的一半。
    在壓縮時,-s將選定 200k 的塊長度,內存用量也限制在 200k 左右, 代價是壓縮率會降低。 總之,如果機器的內存較少(8兆字節(jié)或更少), 可對所有操作都采用-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

看完上述內容,你們對Linux系統(tǒng)中怎么利用Bzip2壓縮文件有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI