Bzip2 Howto

David Fetter, dfetter@best.com <mailto:dfetter@best.com> Diterjemahkan oleh Pranoto Dj Pranoto Dj <mailto:rosiana@diffy.com> v1.92, 18 August 1998 Terj. 20 Jan 1999

Dokumen ini menjelaskan bagaimana menggunakan program kompresi bzip2. Salinan dokumen ini dalam format sgml dapat ditemukan pada situs berikut sini <Bzip2-HOWTO.sgml>, dan "authoritative" sgml terdapat di sini

<http://www.best.com/~dfetter/Bzip2-HOWTO/Bzip2-HOWTO.sgml>.

Contents

1 Pengenalan 2

1.1 Versi-versi Bzip2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.1.1 v1.92 Pengubahan bagian 2.2 (Getting bzip2 binaries), termasuk penambahannya un-

tuk S.u.S.E. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.2 v1.91 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.3 v1.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.4 v1.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.5 v1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.6 v1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.7 v1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.8 v1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.9 v1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.10 v1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.11 v1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.12 v1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Situs untuk Mendapatkan Bzip2 4 2.1 Bzip2-HOWTO dalam bahasa Anda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Mendapatkan bzip2 binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Mendapatkan Source Bzip2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.4 meng-kompile bzip2 untuk mesin Anda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Menggunakan Bzip2 5

4 Menggunakan Bzip2 Bersama dengan Tar 5 4.1 Paling mudah untuk di set up: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4.2 Mudah untuk men-setup, cukup mudah untuk digunakan, tidak membutuhkan hak istimewa

root: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

4.3 Juga mudah digunakan, tapi membutuhkan akses root. . . . . . . . . . . . . . . . . . . . . . . 6

5 Menggunakan Bzip2 dengan Less 7

6 Menggunakan Bzip2 dengan Emacs 8

6.1 Mengubah emacs untuk semua user: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

6.2 Mengubah emacs untuk satu user: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

7 Menggunakan Bzip2 dengan Wu-ftpd 10

8 Menggunakan Bzip2 dengan Grep 10

9 Menggunakan Bzip2 dengan Netscape dalam X. 12

10 Menggunakan Bzip2 untuk Rekompres Format Kompresi Lain 12

1 Pengenalan

Bzip2 adalah algoritma baru dalam pengompresan data. Secara umum file yang dikompres menggunakan bzip2 menghemat 30-40% ruang harddisk bila dibandingkan dengan file yang dikompres dengan gzip.

Dokumen ini akan menunjukkan pada Anda beberapa aplikasi umum yang bisa bekerja sama dengan bzip2.

Versi yang akan datang dari dokumen ini akan mendiskusikan tentang bzip2 library, diuraikan oleh pembuat

bzip2 sendiri Julian Seward <mailto:Julian_Seward@muraroa.demon.co.uk> sebagai berikut:
Saya sedang mengerjakan bzip2 versi berikutnya, yang tetap menggunakan
format .bz2; tambahan utamanya adalah sebuah library mirip zlib
untuk membaca dan menulis data dalam format tersebut dari dalam program-program.

Versi berikutnya dari dokumen ini mungkin juga menyertakan sebuah ringkasan dari diskusi-diskusi tentang perlu tidaknya (dan bagaimana) bzip2 dimasukkan dalam Linux kernel.

1.1 Versi-versi Bzip2

1.1.1 v1.92 Pengubahan bagian 2.2 (Getting bzip2 binaries), termasuk penambahannya untuk S.u.S.E.

1.1.2 v1.91

Membetulkan penulisan dan klarifikasi beberapa idiom shell pada 4 (section on using bzip2 with tar). Terima kasih pada Alessandro Rubini untuk hal ini.

Mengubah tool "buzzit" agar tidak menghapus archive bzip2 asli.

Menambahkan bgrep, sebuah tool mirip zgrep.

1.1.3 v1.9

Klarifikasi masalah gcc versi 2.7.*. Terima kasih pada Ulrik Dickow untuk petunjuknya atas hal ini. Menambahkan cara elegan Leonard Jean-Marc sehingga bzip2 bisa bekerja dengan tar. Menambahkan terjemahan untuk bahasa swedia. Memperbaiki seksi wu-ftpd per usul Arnaud Launay. Memindahkan terjemahan-terjemahan pada seksi-seksi tersendiri.

1.1.4 v1.8

Meletakkan buzzit and tar.diff dalam sgml di tempat semestinya. Memperbaiki pembubuhan tanda baca dan formatnya. Terima kasih pada Arnaud Launay atas bantuannya memperbaiki salinan saya. :-) Menghentikan proyek xv mulai sekarang disebabkan oleh kurang adanya perhatian. Menambahkan humor untuk dokumen versi selanjutnya.

1.1.5 v1.7

Menambahkan utilitas buzzit. Memperbaiki patch untuk gnu tar.

1.1.6 v1.6

Penambahan agar bisa bekerja dengan Netscape atas usul TenThumbs. Juga mengubah lesspipe.sh per usulnya. Seharusnya bekerja lebih baik sekarang.

1.1.7 v1.5

Menambahkan terjemahan bahasa Prancis oleh Arnaud Launay, dan wu-ftpd file miliknya.

1.1.8 v1.4

Menambahkan terjemahan bahasa Jepang oleh Tetsu Isaji.

1.1.9 v1.3

Menambahkan .emacs milik Ulrik Dickow untuk versi 19.30 atau lebih tinggi. (Juga membetulkan patch jka-compr.el untuk emacs per usulnya. Oops! Bzip2 belum mempunyai(?) flag "append".)

1.1.10 v1.2

Mengubah patch untuk emacs sehingga secara otomatis mengenali file .bz2.

1.1.11 v1.1

Menambahkan patch untuk emacs.

1.1.12 v1.0

Versi pertama.

2 Situs untuk Mendapatkan Bzip2

Home page Bzip2 ada di The UK home site <http://www.muraroa.demon.co.uk/>. Mirror di USA sini <http://www.digistar.com/bzip2/index.html>. Anda juga bisa menemukannya di situs ftp milik RedHat

sini <ftp://ftp.redhat.com/pub/contrib>.

2.1 Bzip2-HOWTO dalam bahasa Anda

Bagi yang bisa berbahasa Perancis silahkan membaca dokumen berbahasa Perancis milik Arnaud Launay.

Versi webnya terdapat di sini <http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html>, dan Anda da-
pat menggunakan ftp sini <ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz> Arnaud

dapat dihubungi melalui email berikut <mailto:zoro@mygale.org>

Bagi yang bisa berbahasa Jepang silahkan membaca dokumen berbahasa Jepang milik Tetsu Isaji di sini

<http://jf.gee.kyoto-u.ac.jp/JF/JF.html>. Isaji dapat dihubungi di home pagenya <http://www2s.
biglobe.ne.jp/~kaien/>, atau dengan menggunakan email ini. <mailto:isaji@mxu.meshnet.or.jp>

Bagi yang bisa berbahasa Swedia silahkan membaca dokumen berbahasa Swedia milik Linus Ãkerlund di

sini <http://user.tninet.se/~uxm165t/linux_doc.html>. Linus dapat dihubungi melalui email berikut.
<mailto:uxm165t@tninet.se>

2.2 Mendapatkan bzip2 binary

Dapat ditemukan pada situs-situs berikut.

Binary untuk Debian untuk mesin Intel terdapat pada url ini <ftp://ftp.debian.org/debian/dists/

stable/main/binary-i386/utils/bzip2_0.1pl2-5.deb>.

Binary untuk Red Hat untuk mesin alpha terdapat pada url ini <ftp://ftp.redhat.com/pub/redhat/

redhat-5.1/alpha/RedHat/RPMS/bzip2-0.1pl2-1.alpha.rpm>.

Binary untuk Red Hat untuk mesin Intel terdapat pada url ini <ftp://ftp.redhat.com/pub/redhat/

redhat-5.1/i386/RedHat/RPMS/bzip2-0.1pl2-1.i386.rpm>.

Binary untuk Red Hat untuk mesin SPARC terdapat pada url ini <ftp://ftp.redhat.com/pub/redhat/

redhat-5.1/sparc/RedHat/RPMS/bzip2-0.1pl2-1.sparc.rpm>.

Binary untuk Slackware untuk mesin Intel terdapat pada url ini <ftp://www.cdrom.com/pub/linux/

slackware-3.5/slakware/a1/bzip2.tgz>.

Binary untuk S.u.S.E. untuk mesin Intel terdapat pada url ini <ftp://ftp.suse.com/pub/SuSE-Linux/5.

2/suse/ap1/bzip.rpm>.

Anda juga dapat menemukannya pada berbagai situs mirror yang ada.

2.3 Mendapatkan Source Bzip2

Bisa didapatkan di situsnya (see 2 (Getting Bzip2) atau di situs Red Hat yang juga memilikinya di sini

<ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm>).

2.4 meng-kompile bzip2 untuk mesin Anda

Jika Anda mempunyai gcc 2.7.*, ubah baris yang berisi

     CFLAGS = -O3 -fomit-frame-pointer -funroll-loops

menjadi

     CFLAGS = -O2 -fomit-frame-pointer

yaitu, ganti -O3 menjadi -O2 dan buang the -funroll-loops. Anda juga mungkin ingin menambahkan flag -m* (seperti -m486, sebagai contoh) yang Anda gunakan ketika meng-kompile kernel.

Membuang -funroll-loops adalah bagian yang paling penting, karena hal ini menyebabkan gcc 2.7’s menghasilkan kode yang salah, dan semua gcc 2.7’s akan menghasilkan kode yang lebih lambat dan lebih besar. Untuk kompiler yang lain (lcc, egcs, gcc 2.8.x) default CFLAGS yang ada sudah baik,tidak perlu diubah.

Setelah itu, lanjutkan dengan make dan install, baca file README sebelumnya.

3 Menggunakan Bzip2

Baca manualnya :)

4 Menggunakan Bzip2 Bersama dengan Tar

Daftar dibawah ini adalah tiga cara untuk menggunakan bzip2 bersama dengan tar.

4.1 Paling mudah untuk di set up:

Cara ini tidak menggunakan setup sama sekali. Untuk meng-un-tar bzip2 dengan tar archive, foo.tar.bz2 pada direktori aktif, lakukan

     /path/to/bzip2 -cd foo.tar.bz2 | tar xf -

Cara ini bekerja dengan baik, tapi dapat menjadi PITA untuk mengetikkannya.

4. Menggunakan Bzip2 Bersama dengan Tar 6

4.2 Mudah untuk men-setup, cukup mudah untuk digunakan, tidak membutuhkan hak istimewa root:

Terima kasih pada Leonard Jean-Marc <mailto:leonard@sct1.is.belgacom.be> atas tipnya. Terima kasih juga pada Alessandro Rubini <mailto:rubini@morgana.systemy.it> untuk membedakan bash dengan cshnya.

Di file .bashrc Anda, dapat ditambahkan baris seperti ini:

alias btar='tar --use-compress-program /usr/local/bin/bzip2 '

di file .tcshrc, atau .cshrc Anda, tambahkan baris seperti ini:

alias btar 'tar --use-compress-program /usr/local/bin/bzip2'

4.3 Juga mudah digunakan, tapi membutuhkan akses root.

Aplikasikan patch di bawah ini pada gnu tar 1.12 sebagai berikut:

cd tar-1.12/src; patch < /path/to/tar.diff

kompile, dan install, dan Anda siap untuk mulai menggunakannya. Pastikan bahwa keduanya tar dan bzip2 di dalam $PATH Anda dengan "which tar" and "which bzip2." Untuk menggunakan tar yang baru tersebut, lakukan

 tar xyf foo.tar.bz2

untuk men-decompress file tersebut.

Untuk membuat archive baru, seperti yang dicontohkan berikut ini:

 tar cyf foo.tar.bz2 file1 file2 file3...directory1 directory2...

Dan inilah patch-nya:

*** tar.c       Thu Jun 11 00:09:23 1998
--- tar.c.new   Thu Jun 11 00:14:24 1998
***************
*** 196,201 ****
--- 196,203 ----
    {"block-number", no_argument, NULL, 'R'},
    {"block-size", required_argument, NULL, OBSOLETE_BLOCKING_FACTOR},
    {"blocking-factor", required_argument, NULL, 'b'},
+   {"bzip2", required_argument, NULL, 'y'},
+   {"bunzip2", required_argument, NULL, 'y'},
    {"catenate", no_argument, NULL, 'A'},
    {"checkpoint", no_argument, &checkpoint_option, 1},
    {"compare", no_argument, NULL, 'd'},
***************
*** 372,377 ****

5. Menggunakan Bzip2 dengan Less 7

--- 374,380 ----
                PATTERN                at list/extract time, a globbing PATTERN\n\
    -o, --old-archive, --portability   write a V7 format archive\n\
        --posix                        write a POSIX conformant archive\n\
+   -y, --bzip2, --bunzip2             filter the archive through bzip2\n\
    -z, --gzip, --ungzip               filter the archive through gzip\n\
    -Z, --compress, --uncompress       filter the archive through compress\n\
        --use-compress-program=PROG    filter through PROG (must accept -d)\n"),
***************
*** 448,454 ****
     Y  per-block gzip compression */
  #define OPTION_STRING \
!   "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxz"
  static void
  set_subcommand_option (enum subcommand subcommand)
--- 451,457 ----
     Y  per-block gzip compression */
  #define OPTION_STRING \
!   "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxyz"
  static void
  set_subcommand_option (enum subcommand subcommand)
***************
*** 805,810 ****
--- 808,817 ----
        case 'X':
        exclude_option = 1;
        add_exclude_file (optarg);
+       break;
+
+       case 'y':
+       set_use_compress_program_option ("bzip2");
        break;
        case 'z':

5 Menggunakan Bzip2 dengan Less

Untuk meng-uncompress bzip2 file on the fly, agar bisa digunakan dengan "less" supaya tidak perlu mengbunzip2-nya dahulu, Anda dapat mengubah file lesspipe.sh (man less) seperti ini:

#!/bin/sh
# This is a preprocessor for 'less'.  It is used when this environment
# variable is set:   LESSOPEN="|lesspipe.sh %s"
case "$1" in

  *.tar) tar tvvf $1 2>/dev/null ;; # View contents of various tar'd files
  *.tgz) tar tzvvf $1 2>/dev/null ;;
# This one work for the unmodified version of tar:
  *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tzvvf - ;;
#This one works with the patched version of tar:
# *.tar.bz2) tyvvf $1 2>/dev/null ;;
  *.tar.gz) tar tzvvf $1 2>/dev/null ;;
  *.tar.Z) tar tzvvf $1 2>/dev/null ;;
  *.tar.z) tar tzvvf $1 2>/dev/null ;;
  *.bz2) bzip2 -dc $1  2>/dev/null ;; # View compressed files correctly
  *.Z) gzip -dc $1  2>/dev/null ;;
  *.z) gzip -dc $1  2>/dev/null ;;
  *.gz) gzip -dc $1  2>/dev/null ;;
  *.zip) unzip -l $1 2>/dev/null ;;
  *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1` ; # groff src
    FILE=`echo $FILE | cut -d ' ' -f 2`
    if [ "$FILE" = "troff" ]; then
      groff -s -p -t -e -Tascii -mandoc $1
    fi ;;
  *) cat $1 2>/dev/null ;;
#  *) FILE=`file -L $1` ; # Check to see if binary, if so -- view with 'strings'
#    FILE1=`echo $FILE | cut -d ' ' -f 2`
#    FILE2=`echo $FILE | cut -d ' ' -f 3`
#    if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \
#         -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then
#      strings $1
#    fi ;;
  esac

6 Menggunakan Bzip2 dengan Emacs

6.1 Mengubah emacs untuk semua user:

Saya telah menulis patch berikut ini untuk jka-compr.el yang menambahkan bzip2 untuk auto-compression-mode.

Perhatian: Saya hanya mencobakannya pada emacs-20.2, tapi tidak ada alasan untuk percaya bahwa pendekatan serupa tidak akan bekerja pada versi lain.

Untuk menggunakannya,

1. Pindah ke emacs-20.2/lisp source direktori (dimana Anda meng-untarred-nya)

2. Letakkan patch berikut ini ke dalam file yang bernama jka-compr.el.diff (Dalam file itu dia harus sendirian ;).

3. Lakukan

           patch < jka-compr.el.diff

4. Panggil emacs, dan lakukan

           M-x byte-compile-file jka-compr.el

5. Keluar dari emacs.

6. Pindahkan jka-compr.elc asli Anda ke tempat yang aman untuk berjaga-jaga adanya bugs.

7. Gantikan dengan jka-compr.elc yang baru.

8. Selamat bersenang-senang!

--- jka-compr.el        Sat Jul 26 17:02:39 1997
+++ jka-compr.el.new    Thu Feb  5 17:44:35 1998
@@ -44,7 +44,7 @@
 ;; The variable, jka-compr-compression-info-list can be used to
 ;; customize jka-compr to work with other compression programs.
 ;; The default value of this variable allows jka-compr to work with
-;; Unix compress and gzip.
+;; Unix compress and gzip.  David Fetter added bzip2 support :)
 ;;
 ;; If you are concerned about the stderr output of gzip and other
 ;; compression/decompression programs showing up in your buffers, you
@@ -121,7 +121,9 @@

 ;;; I have this defined so that .Z files are assumed to be in unix
-;;; compress format; and .gz files, in gzip format.
+;;; compress format; and .gz files, in gzip format, and .bz2 files,
+;;; in the snappy new bzip2 format from http://www.muraroa.demon.co.uk.
+;;; Keep up the good work, people!
 (defcustom jka-compr-compression-info-list
   ;;[regexp
   ;; compr-message  compr-prog  compr-args
@@ -131,6 +133,10 @@
      "compressing"    "compress"     ("-c")
      "uncompressing"  "uncompress"   ("-c")
      nil t]
+    ["\\.bz2\\'"
+     "bzip2ing"        "bzip2"         ("")
+     "bunzip2ing"      "bzip2"         ("-d")
+     nil t]
     ["\\.tgz\\'"
      "zipping"        "gzip"         ("-c" "-q")
      "unzipping"      "gzip"         ("-c" "-q" "-d")

6.2 Mengubah emacs untuk satu user:

Terima kasih atas hal ini pada Ulrik Dickow, ukd@kampsax.dk <mailto:ukdATkampsax.dk>, Systems Programmer di Kampsax Technology:

Untuk membuatnya supaya Anda bisa mengunakan bzip2 secara otomatis sementara Anda bukan sysadmin, tinggal tambahkan script berikut ini pada file .emacs.

;; Automatic (un)compression on loading/saving files (gzip(1) and similar)
;; We start it in the off state, so that bzip2(1) support can be added.
;; Code thrown together by Ulrik Dickow for ~/.emacs with Emacs 19.34.
;; Should work with many older and newer Emacsen too.  No warranty though.
;;
(if (fboundp 'auto-compression-mode) ; Emacs 19.30+
    (auto-compression-mode 0)
  (require 'jka-compr)
  (toggle-auto-compression 0))
;; Now add bzip2 support and turn auto compression back on.
(add-to-list 'jka-compr-compression-info-list
             ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'"
              "zipping"        "bzip2"         ()
              "unzipping"      "bzip2"         ("-d")
              nil t])
(toggle-auto-compression 1 t)

7 Menggunakan Bzip2 dengan Wu-ftpd

Terima kasih pada Arnaud Launay untuk penghematan bandwidth ini. Yang berikut ini harus diletakkan di /etc/ftpconversions untuk melakukan kompresi dan dekompresi on-the-fly dengan bzip2. Pastikan bahwa path-nya (seperti /bin/compress) benar.

 :.Z:  :  :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
 :   : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
 :.gz: :  :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
 :   : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
 :.bz2: :  :/bin/bzip2 -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:BUNZIP2
 :   : :.bz2:/bin/bzip2 -9 -c %s:T_REG:O_COMPRESS:BZIP2
 :   : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
 :   : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
 :   : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
 :   : :.tar.bz2:/bin/tar -c -y -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+BZIP2

8 Menggunakan Bzip2 dengan Grep

Utilitas berikut, yang saya namakan bgrep, adalah modifikasi dari zgrep yang disertakan pada distribusi Linux. Anda dapat menggunakannya untuk meng-grep suatu file tanpa mem-bunzip2-nya terlebih dahulu.

#!/bin/sh
# bgrep -- a wrapper around a grep program that decompresses files as needed
PATH="/usr/bin:$PATH"; export PATH
prog=`echo $0 | sed 's|.*/||'`
case "$prog" in
        *egrep) grep=${EGREP-egrep}     ;;
        *fgrep) grep=${FGREP-fgrep}     ;;
        *)      grep=${GREP-grep}       ;;
esac
pat=""
while test $# -ne 0; do
  case "$1" in
  -e | -f) opt="$opt $1"; shift; pat="$1"
           if test "$grep" = grep; then  # grep is buggy with -e on SVR4
             grep=egrep
           fi;;
  -*)      opt="$opt $1";;
   *)      if test -z "$pat"; then
             pat="$1"
           else
             break;
           fi;;
  esac
  shift
done
if test -z "$pat"; then
  echo "grep through bzip2 files"
  echo "usage: $prog [grep_options] pattern [files]"
  exit 1
fi
list=0
silent=0
op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
case "$op" in
  *l*) list=1
esac
case "$op" in
  *h*) silent=1
esac
if test $# -eq 0; then
  bzip2 -cd | $grep $opt "$pat"
  exit $?

fi
res=0
for i do
  if test $list -eq 1; then
    bzip2 -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i
    r=$?
  elif test $# -eq 1 -o $silent -eq 1; then
    bzip2 -cd "$i" | $grep $opt "$pat"
    r=$?
  else
    bzip2 -cd "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
    r=$?
  fi
  test "$r" -ne 0 && res="$r"
done
exit $res

9 Menggunakan Bzip2 dengan Netscape dalam X.

tenthumbs@cybernex.net mengatakan:

     Saya juga menemukan suatu cara agar Linux Netscape bisa menggunakan bzip2 untuk
     Content-Encoding seperti halnya gzip pada Linux Netscape.  Tambahkan pada
     $HOME/.Xdefaults atau $HOME/.Xresources Saya menggunakan opsi -s karena saya ingin
     mempercepat proses dekompresi namun hal ini menggunakan RAM besar.  Anda dapat membuang
     opsi tersebut bila Anda inginkan.
Netscape*encodingFilters:      \
        x-compress :  : .Z     : uncompress -c  \n\
        compress   :  : .Z     : uncompress -c  \n\
        x-gzip     :  : .z,.gz : gzip -cdq      \n\
        gzip       :  : .z,.gz : gzip -cdq      \n\
        x-bzip2    :  : .bz2   : bzip2 -ds \n

10 Menggunakan Bzip2 untuk Rekompres Format Kompresi Lain

Program perl berikut ini meng-kompress format kompresi lain (.tar.gz, .tgz. .tar.Z, and .Z) dan mempaketkannya ke dalam format kompresi yang lebih baik. Source perl ini mempunyai semua macam dokumentasi yang rapi tentang apa yang dilakukan dan bagaimana melakukannya.

#!/usr/bin/perl -w
#######################################################
#                                                     #

# This program takes compressed and gzipped programs  #
# in the current directory and turns them into bzip2  #
# format.  It handles the .tgz extension in a         #
# reasonable way, producing a .tar.bz2 file.          #
#                                                     #
#######################################################
$counter = 0;
$saved_bytes = 0;
$totals_file = '/tmp/machine_bzip2_total';
$machine_bzip2_total = 0;
while(<*[Zz]>) {
    next if /^bzip2-0.1pl2.tar.gz$/;
    push @files, $_;
}
$total = scalar(@files);
foreach (@files) {
    if (/tgz$/) {
        ($new=$_) =~ s/tgz$/tar.bz2/;
    } else {
        ($new=$_) =~ s/\.g?z$/.bz2/i;
    }
    $orig_size = (stat $_)[7];
    ++$counter;
    print "Repacking $_($counter/$total)...\n";
    if ((system "gzip -cd $_|bzip2 >$new") == 0) {
        $new_size = (stat $new)[7];
        $factor = int(100*$new_size/$orig_size+.5);
        $saved_bytes += $orig_size-$new_size;
        print "$new is about $factor% of the size of $_. :",($factor<100)?')':'(',"\n";
        unlink $_;
    } else {
        print "Arrgghh!  Something happened to $_: $!\n";
    }
}
print "You've ",
      ($saved_bytes>=0)?"saved":"lost",
      " $saved_bytes bytes of storage space :",
       ($saved_bytes>=0)?")":"(", "\n";
unless (-e '/tmp/machine_bzip2_total') {
    system ('echo "0" >/tmp/machine_bzip2_total');
    system ('chmod', '0666', '/tmp/machine_bzip2_total');
}

chomp($machine_bzip2_total = `cat $totals_file`);
open TOTAL, ">$totals_file"
     or die "Can't open system-wide total: $!";
$machine_bzip2_total += $saved_bytes;
print TOTAL $machine_bzip2_total;
close TOTAL;
print "That's a machine-wide total of ",`cat $totals_file`," bytes saved.\n";