bzip2 === å°æä»¶å缩æbz2æ ¼å¼ ## è¡¥å 说æ **bzip2å½ä»¤** ç¨äºå建å管çï¼å æ¬è§£å缩ï¼â.bz2âæ ¼å¼çå缩å ã bzip2 éç¨ Burrows-Wheeler åæåºææ¬åç¼©ç®æ³å Huffman ç¼ç æ¹å¼å缩æä»¶ã å缩çä¸è¬æ¯åºäº LZ77/LZ78 çå缩软件好å¾å¤ï¼å ¶æ§è½æ¥è¿ PPM æç»è®¡ç±»å缩软件ã å½ä»¤è¡åæ°ææè®¾è®¡ä¸ºé常æ¥è¿ GNU gzip çå½¢å¼ï¼ä½ä¹ä¸å®å ¨ç¸åã bzip2 ä»å½ä»¤è¡è¯»å ¥æä»¶åååæ°ã æ¯ä¸ªæä»¶è¢«å为 "åå§æä»¶å.bz2" çå缩æä»¶æ¿æ¢ã æ¯ä¸ªå缩æä»¶å ·æä¸åæä»¶ç¸åçä¿®æ¹æ¶é´ã æéï¼ å¦æå¯è½çè¯ï¼è¿å ·æç¸åçå±ä¸»ï¼ å æ¤å¨è§£å缩æ¶è¿äºç¹æ§å°æ£ç¡®å°æ¢å¤ã å¨æäºæä»¶ç³»ç»ä¸ï¼ 没ææéã å±ä¸»ææ¶é´çæ¦å¿µï¼ æè 对æä»¶åçé¿åº¦æä¸¥æ ¼éå¶ï¼ ä¾å¦ MSDOSï¼å¨è¿ç§æ åµä¸ï¼bzip2 没æä¿æåæä»¶åã å±ä¸»ã æé以忶é´çæºå¶ï¼ ä»è¿ä¸ªæä¹ä¸è¯´ï¼bzip2 对æä»¶åçå¤çæ¯å¹¼ç¨çã bzip2 å bunzip2 å¨ç¼ºçæ åµä¸ä¸è¦çå·²æçæä»¶ã 妿æ³è¦çå·²æçæä»¶ï¼è¦æå® -f é项ã å¦ææªæå®æä»¶åï¼ bzip2 å°å缩æ¥èªæ åè¾å ¥çæ°æ®å¹¶å徿 åè¾åºãå¨è¿ç§æ åµä¸ï¼ bzip2 伿ç»å°åç¼©ç»æåå¾ç»ç«¯ï¼å 为è¿å®å ¨æ æ³çè§£å¹¶ä¸æ¯æ²¡ææä¹çã bunzip2 (以å bzip2 -d) å¯¹æææå®çæä»¶è¿è¡è§£å缩å¤çã䏿¯ç± bzip2 产ççæä»¶å°è¢«å¿½ç¥ï¼åæ¶ååºä¸ä¸ªè¦åä¿¡æ¯ã bzip2 æä¸åæ¹å¼ç±å缩æä»¶åç¡®å®è§£ååçæä»¶åï¼ ```shell filename.bz2 è§£åæ filename filename.bz è§£åæ filename filename.tbz2 è§£åæ filename.tar filename.tbz è§£åæ filename.tar anyothername è§£åæ anyothername.out ``` 妿æä»¶åçåç¼ä¸æ¯ä¸åä¹ä¸ï¼ .bz2, .bz, .tbz2 æ .tbz, .bzip2 å°æ±æ¨æ æ³ç¡®å®åå§æä»¶åï¼å¹¶éç¨åæä»¶åå .out ä½ä¸ºè§£å缩æä»¶åã å¨å缩æ¶ï¼å¦æä¸æä¾æä»¶åï¼bzip2 å°ä»æ åè¾å ¥è¯»åæ°æ®ï¼åç¼©ç»æå徿 åè¾åºã bzip2 éç¨ 32 ä½ CRC æ ¡éªç ä½èªææ£æ¥ï¼ä»¥ç¡®è®¤è§£ååçæä»¶ä¸åå§æä»¶ç¸åã è¿å¯ç¨äºæ£æµå缩æä»¶æ¯å¦æåï¼å¹¶é²æ¢ bzip2 䏿ªç¥ç缺é·ï¼è¿æ°å¥½çè¯è¿ç§å¯è½æ§é常å°ï¼ã æ°æ®æåèæªæ£æµå°çå çé常ä¹å°ï¼ å¯¹äºæ¯ä¸ªè¢«å¤ççæä»¶å¤§çº¦æ¯åå亿åä¹ä¸ã æ£æ¥æ¯å¨è§£å缩æ¶è¿è¡çï¼å æ¤å®åªè½è¯´ææä¸ªå°æ¹åºé®é¢äºã å®è½å¸®å©æ¢å¤åå§æªåç¼©çæ°æ®ãå¯ä»¥ç¨ bzip2recover æ¥å°è¯ä»æåçæä»¶ä¸æ¢å¤æ°æ®ã è¿åå¼ï¼æ£å¸¸éåºè¿å 0ï¼ åºç°ç¯å¢é®é¢è¿å 1 ï¼æä»¶æªæ¾å°ï¼éæ³çé项ï¼I/Oé误çï¼ï¼ è¿å 2 表æå缩æä»¶æåï¼åºç°å¯¼è´ bzip2 ç´§æ¥éåºçå é¨ä¸è´æ§é误ï¼ä¾å¦ç¼ºé·ï¼æ¶è¿å 3ã ### è¯æ³ ```shell bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ... ] ``` ### é项 ```shell -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 å·¦å³ï¼ 代价æ¯å缩çä¼éä½ã æ»ä¹ï¼å¦ææºå¨çå åè¾å°ï¼8å åèææ´å°ï¼ï¼ # å¯å¯¹æææä½é½éç¨-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 # åå ¶ä»¥ä¸çæ¬éç¨äºæ¹è¿çç®æ³èä¸è¿äºé项æ å ³ã ``` ### åæ° æä»¶ï¼æå®è¦å缩çæä»¶ã ### å®ä¾ **å缩æå®æä»¶filename:** ```shell bzip2 filename æ bzip2 -z filename ``` è¿éï¼åç¼©çæ¶åä¸ä¼è¾åºï¼ä¼å°åæ¥çæä»¶filenameç»å é¤ï¼æ¿æ¢æfilename.bz2.妿以åæfilename.bz2åä¸ä¼æ¿æ¢å¹¶æç¤ºé误ï¼å¦ææ³è¦æ¿æ¢åæå®-fé项ï¼ä¾å¦`bzip2 -f filename`ï¼å¦æfilenameæ¯ç®å½å乿éé误ä¸å任使ä½ï¼å¦æfilenameå·²ç»æ¯åè¿çäºæbz2åç¼å°±æéä¸ä¸ï¼ä¸ååç¼©ï¼æ²¡æbz2åç¼ä¼å次å缩ã **è§£åæå®çæä»¶filename.bz2:** ```shell bzip2 -d filename.bz2 æ bunzip2 filename.bz2 ``` è¿éï¼è§£åçæ¶åæ²¡æ åè¾åºï¼ä¼å°åæ¥çæä»¶filename.bz2ç»æ¿æ¢æfilenameã妿以åæfilenameåä¸ä¼æ¿æ¢å¹¶æç¤ºé误ï¼å¦ææ³è¦æ¿æ¢åæå®`-f`é项ï¼ä¾å¦`bzip2 -df filename.bz2`ã **å缩解åçæ¶åå°ç»æä¹è¾åºï¼** ```shell $bzip2 -v filename ``` è¾å ¥ä¹åï¼è¾åºå¦ä¸ï¼ ```shell filename: 0.119:1, 67.200 bits/byte, -740.00% saved, 5 in, 42 out. ``` è¿éï¼å ä¸`-v`é项就ä¼è¾åºäº,åªç¨å缩举ä¾äºï¼è§£åçæ¶ååç`bzip2 -dv filename.bz2`ä¸å举ä¾äºã **模æè§£åå®é å¹¶ä¸è§£åï¼** ```shell bzip2 -tv filename.bz2 ``` è¾å ¥ä¹åï¼è¾åºå¦ä¸ï¼ ```shell filename.bz2: ok ``` è¿éï¼`-t`æå®è¦è¿è¡æ¨¡æè§£åï¼ä¸å®é çæç»æï¼ä¹å°±æ¯è¯´ç±»ä¼¼æ£æ¥æä»¶,å½ç¶å°±ç®ç®å½ä¸é¢æfilenameä¹ä¸ä¼æä»ä¹é误è¾åºäºï¼å ä¸ºå®æ ¹æ¬ä¸ä¼ççè§£åæä»¶ã为äºå¨å±å¹ä¸è¾åºï¼è¿éå ä¸`-v`é项äº,妿æ¯ççè§£å`bzip2 -dv filename.bz2`åè¾åºçæ¯æ"ok"æ¿æ¢æäº"done"ã **å缩解åçæ¶åï¼é¤äºçæç»ææä»¶ï¼å°åæ¥çæä»¶ä¹ä¿å:** ```shell bzip2 -k filename ``` è¿éï¼å ä¸`-k`å°±ä¿ååå§çæä»¶äºï¼å¦ååå§æä»¶ä¼è¢«ç»ææä»¶æ¿ä»£ãåªç¨å缩举ä¾äºï¼è§£åçæ¶ååç`$bzip2 -dk filename.bz2`ä¸å举ä¾äºã **è§£åå°æ åè¾åºï¼** ```shell bzip2 -dc filename.bz2 ``` è¾å ¥ä¹åï¼è¾åºå¦ä¸ï¼ ```shell hahahhaahahha ``` è¿éï¼ä½¿ç¨`-c`æå®å°æ åè¾åºï¼è¾åºçæ¯æä»¶filenameçå 容ï¼ä¸ä¼å°filename.bz2å é¤ã **åç¼©å°æ åè¾åºï¼** ```shell bzip2 -c filename bzip2: I won't write compressed data to a terminal. bzip2: For help, type: `bzip2 --help'. ``` è¿éï¼ä½¿ç¨`-c`æå®åç¼©å°æ åè¾åºä¸å é¤åææä»¶ï¼ä¸åçæ¯ï¼å缩åçæä»¶æ æ³è¾åºå°æ åè¾åºã **使ç¨bzip2çæ¶åå°ææåé¢çç使件(å³ä½¿æä»¶å以'-'å¼å¤´)ï¼** ```shell bzip2 -- -myfilename ``` è¿éä¸»è¦æ¯ä¸ºäºé²æ¢æä»¶åä¸`-`产ç以为æ¯éé¡¹çæ§ä¹ã