日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

下一步linux命令bzip,linux基础命令---bzip2

發(fā)布時(shí)間:2025/3/15 linux 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 下一步linux命令bzip,linux基础命令---bzip2 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

bzip2

使用Burrows-Wheeler塊排序文本壓縮算法,將文件進(jìn)行壓縮,壓縮比率比一般算法高一些。bzip2要求命令行標(biāo)志附帶一個(gè)文件名列表。每個(gè)文件都被自己的壓縮版本替換,名稱為“original_name.bz2”。每個(gè)壓縮文件與相應(yīng)的原始文件具有相同的修改日期、權(quán)限和所有權(quán)(如果可能的話),因此可以在解壓縮時(shí)正確地還原這些屬性。

默認(rèn)情況下,bzip2和bunzip2不會(huì)覆蓋現(xiàn)有文件。如果希望發(fā)生這種情況,請(qǐng)指定“-f”標(biāo)志。如果沒有指定文件名,bzip2將從標(biāo)準(zhǔn)輸入壓縮到標(biāo)準(zhǔn)輸出。在這種情況下,bzip2拒絕將壓縮輸出寫入終端,因?yàn)檫@將是完全不可理解的,因此毫無意義。

bunzip2(或bzip2 -d)解壓縮所有指定的文件。未由bzip2創(chuàng)建的文件將被檢測(cè)和忽略,并發(fā)出警告。bzip2試圖從壓縮文件中猜測(cè)解壓縮文件的文件名,如下所示:

filename.bz2????becomes??filename

filename.bz?????becomes??filename

filename.tbz2???becomes??filename.tar

filename.tbz????becomes??filename.tar

anyothername????becomes??anyothername.out

如果文件沒有以.bz2、.bz、.tbz2或.tbz中的某個(gè)結(jié)尾,bzip2抱怨它無法猜測(cè)原始文件的名稱,并使用原始名稱并附加.out。與壓縮一樣,不提供文件名會(huì)導(dǎo)致從標(biāo)準(zhǔn)輸入到標(biāo)準(zhǔn)輸出的解壓縮。bunzip2將正確解壓縮一個(gè)文件,該文件是兩個(gè)或多個(gè)壓縮文件的級(jí)聯(lián)。其結(jié)果是連接相應(yīng)的未壓縮文件。還支持連接壓縮文件的完整性測(cè)試(-t)。

還可以通過賦予“-c”標(biāo)志將文件壓縮或解壓縮到標(biāo)準(zhǔn)輸出。可以像這樣壓縮和解壓縮多個(gè)文件。結(jié)果輸出按順序輸入到stdout。以這種方式壓縮多個(gè)文件會(huì)生成包含多個(gè)壓縮文件表示的流。這樣的流只能通過bzip2版本0.9.0或更高版本正確地解壓縮。在解壓縮流中的第一個(gè)文件后,bzip2的早期版本將停止。

bzcat(或bzip2 -dc)將所有指定的文件解壓到標(biāo)準(zhǔn)輸出。bzip2將按照這個(gè)順序從環(huán)境變量BZIP2和BZIP讀取參數(shù),并在從命令行讀取任何參數(shù)之前對(duì)它們進(jìn)行處理。這為提供默認(rèn)參數(shù)提供了一種方便的方法。

壓縮總是被執(zhí)行,即使壓縮文件比原始文件稍大。小于100個(gè)字節(jié)的文件往往會(huì)變大,因?yàn)閴嚎s機(jī)制在50個(gè)字節(jié)的范圍內(nèi)有一個(gè)恒定的開銷。隨機(jī)數(shù)據(jù)(包括大多數(shù)文件壓縮器的輸出)編碼大約為每字節(jié)8.05位,擴(kuò)展幅度約為0.5%。

bzip2使用32位crc來確保解壓縮版本的文件與原始文件相同。這可以防止壓縮數(shù)據(jù)的損壞,防止bzip2中未被檢測(cè)到的bug(希望非常不可能)。數(shù)據(jù)損壞的可能性是微乎其微的,大約每處理40億個(gè)文件就有一個(gè)機(jī)會(huì)。但是,請(qǐng)注意,檢查是在解壓時(shí)發(fā)生的,因此它只能告訴您某些事情是錯(cuò)誤的。它無法幫助您恢復(fù)原始未壓縮數(shù)據(jù)。您可以使用bzip2recover嘗試從損壞的文件中恢復(fù)數(shù)據(jù)。

返回值:0表示正常退出,1表示環(huán)境問題(文件未找到,無效標(biāo)志,I/O錯(cuò)誤,&c),2表示損壞的壓縮文件,3表示內(nèi)部一致性錯(cuò)誤(例如,bug),導(dǎo)致bzip2恐慌。

此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法

bzip2?[ -cdfkqstvzVL123456789 ]??[ filenames ...??]

2、選項(xiàng)列表

選項(xiàng)

說明

-h | --help

幫助信息

-V | --version

顯示命令版本信息

-c | --stdout

將解壓或者解壓文件寫到標(biāo)準(zhǔn)輸出

-d | --decompress

解壓

--z | -compress

對(duì)-d的補(bǔ)充:強(qiáng)制壓縮,而不管調(diào)用名稱如何

-t | --test

檢查指定文件的完整性,但不要解壓縮它們。這確實(shí)執(zhí)行了一次嘗試解壓縮,并丟棄了結(jié)果。

-f | --force

強(qiáng)制執(zhí)行

-k | --keep

解壓之后,保留源文件

-s | --small

減少內(nèi)存使用,用于壓縮、解壓縮和測(cè)試。使用修改的算法對(duì)文件進(jìn)行解壓縮和測(cè)試,該算法每個(gè)塊字節(jié)只需要2.5字節(jié)。這意味著任何文件都可以在2300 k內(nèi)存中解壓縮,盡管速度是正常速度的一半。

在壓縮期間,-s選擇200 k的塊大小,這將內(nèi)存的使用限制在大約相同的數(shù)字上,而代價(jià)是壓縮比。簡(jiǎn)而言之,如果你的機(jī)器內(nèi)存不足(8兆字節(jié)或更少),那就用-s來做所有的事情。請(qǐng)參閱下面的內(nèi)存管理。

-L | --license | -V | --version

列出gzip的許可證

-q | --quite

跳過所有的警告信息

-v | --verbose

顯示詳細(xì)執(zhí)行過程

-1 ~-9

指定壓縮比率,將塊大小設(shè)為100k,200k,900K。解壓時(shí)無效,“-1”等價(jià)于“--fast”,“-9”等價(jià)于“--best“。

-v | --verbose

顯示執(zhí)行過程

--

將所有后續(xù)參數(shù)視為文件名,即使它們以‘-’開頭。這樣您就可以處理以‘-’開頭的文件,例如:“bzip2??--??-myfilename”。

--repetitive-fast

--repetitive-best

這些標(biāo)志在0.9.5及以上版本中是多余的。它們對(duì)早期版本中排序算法的行為提供了一些粗略的控制,這有時(shí)是有用的。0.9.5及以上版本的改進(jìn)算法使這些標(biāo)志不相關(guān)

3、內(nèi)存管理

bzip2以塊壓縮大型文件。塊大小既影響壓縮比,也影響壓縮和解壓縮所需的內(nèi)存量。標(biāo)志-1到-9指定塊大小分別為100000字節(jié)至900000字節(jié)(默認(rèn)值)。解壓縮時(shí),從壓縮文件的頭讀取用于壓縮的塊大小,然后為其分配足夠的內(nèi)存來解壓縮文件。由于塊大小存儲(chǔ)在壓縮文件中,因此在解壓縮過程中,標(biāo)志-1至-9與此無關(guān),因而被忽略。壓縮和解壓縮需求(以字節(jié)為單位)可估計(jì)為

Compression:???400k + ( 8 x block size )

Decompression: 100k + ( 4 x block size ), or 100k + ( 2.5 x block size )

更大的區(qū)塊大小給出迅速遞減的邊際回報(bào)。大部分壓縮來自塊大小的前兩三百k,在小型機(jī)器上使用bzip 2時(shí)要記住這一點(diǎn)。同樣重要的是要認(rèn)識(shí)到,解壓縮內(nèi)存需求是通過選擇塊大小在壓縮時(shí)間設(shè)置的。

對(duì)于默認(rèn)的900k塊大小壓縮的文件,bunzip2需要大約3700千字節(jié)來解壓縮。為了支持對(duì)4MB機(jī)器上的任何文件進(jìn)行解壓縮,bunzip2可以選擇使用大約一半的內(nèi)存(約2300千字節(jié))來解壓縮。解壓縮速度也減半,因此您應(yīng)該只在必要時(shí)使用此選項(xiàng)。相關(guān)的標(biāo)志是-s。通常,嘗試并使用允許的最大塊大小的內(nèi)存約束,因?yàn)檫@樣可以最大限度地實(shí)現(xiàn)壓縮。壓縮和解壓縮速度幾乎不受塊大小的影響。

另一個(gè)要點(diǎn)適用于適合單個(gè)塊的文件,意味著大多數(shù)使用大塊大小的文件。接觸到的實(shí)際內(nèi)存量與文件大小成正比,因?yàn)槲募∮趬K。例如,使用標(biāo)志-9壓縮一個(gè)文件的長度為20000字節(jié),將導(dǎo)致壓縮器分配大約7600k的內(nèi)存,但只會(huì)觸及400k+20000*8=56萬字節(jié)的內(nèi)存。類似地,解壓縮程序?qū)⒎峙?700k,但只會(huì)觸及100k+20000*4=180 k字節(jié)。

下面是一個(gè)表,它總結(jié)了不同塊大小的最大內(nèi)存使用量

Compress?????Decompress???????Decompress???????Corpus

Flag?????????????usage??????usage???????-s usage?????Size

-1???????????????1200k???????500k?????????350k??????914704

-2???????????????2000k???????900k?????????600k??????877703

-3???????????????2800k??????1300k?????????850k??????860338

-4???????????????3600k??????1700k????????1100k??????846899

-5???????????????4400k??????2100k????????1350k??????845160

-6???????????????5200k??????2500k????????1600k?????838626

-7???????????????6100k??????2900k????????1850k??????834096

-8???????????????6800k??????3300k????????2100k??????828642

-9???????????????7600k??????3700k????????2350k??????828642

4、從損壞的文件中恢復(fù)數(shù)據(jù)

bzip2以塊的形式壓縮文件,通常長達(dá)900千字節(jié)。每個(gè)塊都是獨(dú)立處理的。如果媒體或傳輸錯(cuò)誤導(dǎo)致multi-block .bz2文件損壞,則可以從文件中未損壞的塊恢復(fù)數(shù)據(jù)。每個(gè)塊的壓縮表示由一個(gè)48位模式分隔,這使得以合理的確定性找到塊邊界成為可能。每個(gè)塊還帶有自己的32位CRC,因此損壞的塊可以與未損壞的塊區(qū)分開來。

bzip2Recovery是一個(gè)簡(jiǎn)單的程序,其目的是搜索“.bz2”文件中的塊,并將每個(gè)塊寫入自己的“.bz2”文件中。然后可以使用“bzip2??–t”測(cè)試結(jié)果文件的完整性,并解壓縮未損壞的文件。

bzip2Recovery接受一個(gè)參數(shù),即受損文件的名稱,并寫入一些文件“rec00001file.bz2”、“rec00002file.bz2”等,其中包含提取的塊。輸出文件名的設(shè)計(jì)使得在隨后的處理中使用通配符。例如,“bzip2??-dc??rec*file.bz2??>??recovered_data”按正確的順序處理文件。

處理大型bz2文件時(shí),bzip2恢復(fù)應(yīng)該是最有用的,因?yàn)檫@些文件將包含許多塊。在損壞的單塊文件上使用它顯然是徒勞無功的,因?yàn)閾p壞的塊無法恢復(fù)。如果希望通過媒體或傳輸錯(cuò)誤最大限度地減少任何潛在的數(shù)據(jù)丟失,可以考慮使用較小的塊大小進(jìn)行壓縮。

5、執(zhí)行情況說明

壓縮的排序階段收集文件中類似的字符串。正因?yàn)槿绱?#xff0c;包含大量重復(fù)符號(hào)的文件,如“aabaabaabaab.”(重復(fù)幾百次)可能比正常壓縮速度慢。在這方面,0.9.5及以上的版本比以前的版本要好得多。最壞壓縮時(shí)間與平均壓縮時(shí)間之比在10:1左右.對(duì)于以前的版本,這個(gè)數(shù)字更像是100:1。如果需要,可以使用-vvvv選項(xiàng)來非常詳細(xì)地監(jiān)視進(jìn)度。減壓速度不受這些現(xiàn)象的影響。

bzip 2通常分配幾兆字節(jié)的內(nèi)存進(jìn)行操作,然后以相當(dāng)隨機(jī)的方式對(duì)其進(jìn)行充電。這意味著壓縮和解壓縮的性能在很大程度上取決于您的機(jī)器能夠?yàn)榫彺鎭G失提供服務(wù)的速度。正因?yàn)槿绱?#xff0c;通過對(duì)代碼進(jìn)行小幅度的更改以降低漏出率,從而提供了不成比例的大幅度性能改進(jìn)。我認(rèn)為bzip 2在具有非常大緩存的機(jī)器上表現(xiàn)最好。

7、實(shí)例

1)壓縮文件

[root@localhost weijie]#?bzip2 1.c???????????????????//壓縮1.c,源文件會(huì)被刪除

[root@localhost weijie]#?ls

11.c??1.c.bz2??2.c??3.c??4.c??5.c??6.c~??bak

[root@localhost weijie]#?bzip2 -c 2.c > res.bz2?????//將1.c壓縮到res,源文件不動(dòng)

[root@localhost weijie]#ls

11.c??1.c.bz2??2.c??3.c??4.c??5.c??6.c~??bak??res.bz2

2)解壓

[root@localhost weijie]#?bzip2 -d res.bz2????????????//解壓

[root@localhost weijie]#?ls

11.c??1.c.bz2?2.c??3.c??4.c?5.c??6.c~??bak?res

3)將兩個(gè)文件壓縮到一個(gè)文件中

[root@localhost weijie]#?cat 1.c 2.c???????????????????//輸出兩個(gè)文件的內(nèi)容

hello world,

i am david.

i love linux,

love code.

123

23

212

[root@localhost weijie]#?bzip2 –c 1.c > foo.gz????????//將1.c壓縮到foo

[root@localhost weijie]#?bzip2 –c 2.c >> foo.gz???????//將2.c壓縮到foo

[root@localhost weijie]# bgzip2 -d foo.gz??????????????//解壓foo

[root@localhost weijie]#?cat foo????????????????????????//顯示foo的內(nèi)容

hello world,

i am david.

i love linux,

love code.

123

23

212

總結(jié)

以上是生活随笔為你收集整理的下一步linux命令bzip,linux基础命令---bzip2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。