Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > c271e9e583b3924e0de744696831c936 > files > 5

howto-text-pl-2006-5mdv2010.0.noarch.rpm

  Bzip2 Howto
  David Fetter dfetter@best.com <mailto:dfetter@best.com>
  v1.92 18 sierpnia 1998
  WWeerrssjjaa ppoollsskkaa:: KKrrzzyysszzttooff PP.. JJaassiiuuttoowwiicczz kkppjjaass@@pprriivv..oonneett..ppll
  v0.99, 28 sierpnia 1998

  Ten tekst wyja¶nia jak u¿ywaæ programu do kompresji bzip2. Lokalna
  wersja tego tekstu w sgml-u jest dostêpna tu tu <Bzip2-HOWTO.sgml>, a
  "autor-ytatywna" pod tym adresem tu <http://www.best.com/~dfet­
  ter/Bzip2-HOWTO/Bzip2-HOWTO.sgml>.  Dokument ten zosta³ napisany w
  standardzie ISO-8859-2.
  ______________________________________________________________________

  Table of Contents:

  1.      Wstêp

  1.1.    Revision History

  1.1.1.  v1.92

  1.1.2.  v1.91

  1.1.3.  v1.9

  1.1.4.  v1.8

  1.1.5.  v1.7

  1.1.6.  v1.6

  1.1.7.  v1.5

  1.1.8.  v1.4

  1.1.9.  v1.3

  1.1.10. v1.2

  1.1.11. v1.1

  1.1.12. v1.0

  2.      Jak zdobyæ bzip2

  2.1.    Bzip2-HOWTO w twoim jêzyku

  2.2.    Jak zdobyæ prekompilowane binaria bzip2-a

  2.3.    Jak zdobyæ ¼ród³a bzip2-a

  2.4.    Kompilacja bzip2-a dla twojej maszyny

  3.      U¿ywanie bzip2

  4.      U¿ywanie bzip2 z tar-em

  4.1.    Naj³atwiejsza do zrobienia:

  4.2.    £atwa do zrobienia, do¶æ ³atwa w u¿yciu, nie trzba mieæ
  uprawnieñ root-a:

  4.3.    Te¿ ³atwa do zrobienia, ale wymaga dostêpu jako root.

  5.      U¿ywanie bzip2 z less-em

  6.      U¿ywanie bzip2 z emacs-em

  6.1.    Zmaina emacs-a dla wszystkich:

  6.2.    Zmiana emacs-a dla pojedyñczego u¿ytkownika:

  7.      U¿ywanie bzip2-a z wu-ftpd

  8.      U¿ycie bzip2 z grep-em

  9.      U¿ywanie bzip2-a z Netscape-m pod X-ami.

  10.     U¿ycie bzip2-a do rekompresji plików skompresowanych w innych
  formatach
  ______________________________________________________________________

  11..  WWssttêêpp

  Bzip2 to superowy nowy algorytm kompresji danych.  Ogólnie rzecz
  bior±c tworzy pliki, które s± 60-70% mniejsze od takich samych plików
  spakowanych gzip-em.

  Ten dokument opisze kilka typowych zastosowañ bzip2-a.

  Przysz³e  wersje tego dokumentu bêd± dotyczy³y planowanej bzip2
  library któr± autor bzip2-a, Julian Seward
  <mailto:Julian_Seward@muraroa.demon.co.uk> opisuje nastêpuj±co:

  Pracujê nad nastêpn± wersj± bzip2-a, która bêdzie u¿ywaæ tego samego
  formatu pliku .bz2; g³ówn± nowo¶ci± bêdzie biblioteka podobna do zlib
  s³u¿±ca do odczytywania i zapisu danych w tym formacie z poziomu programu.

  Przysz³e  wersje tego dokumentu mog± tak¿e zawieraæ podsumowanie
  dyskusji nad tym czy (i jak) bzip2 powinno byæ zastosowane w j±drze
  Linux-a.

  11..11..  RReevviissiioonn HHiissttoorryy

  11..11..11..  vv11..9922

  Zaktualizowa³em rozdzia³ ``Pobieranie binariów bzip2'', doda³em
  S.u.S.E.

  11..11..22..  vv11..9911

  Poprawi³em b³±d w pisowni i poprawi³em kilka idiomów shell-a w
  ``rozdziale o u¿ywaniu bzip2-a z tar-em''.  Podziêkowania dla
  Alessandro Rubini za nie.

  Poprawi³em aby narzêdzie buzzit nie to stomp oryginalnego archiwum
  bzip2-a.

  Doda³em bgrep, narzêdzie podobne do zgrep-a.

  11..11..33..  vv11..99

  Poprawi³em problem z gcc 2.7.*.  Podziêkowanie dla  Ulrika Dickow-a za
  wskazanie go.

  Doda³em elegancki sposób Leonard-a Jean-Marc-a pos³ugiwania siê tar-
  em.

  Doda³em szwedzkie t³umaczenie Linus-a Ãkerlund-a.

  Poprawi³em rozdzia³ o wu-ftpd np. sugestii Arnaud Launay-a.

  Przenios³em t³umaczenia ich odpowiednich rozdzia³ów.

  11..11..44..  vv11..88

  Wstawi³em buzzit i tar.diff do sgml-a tam gdzie ich miejsceg.
  Poprawi³em interpunkcjê i formatowanie.  Podziêkowania dla Arnaud
  Launay za jego pomoc w poprawianiu mojej w³asnej wersji. :-)

  Porzuci³em xv project na razie z powodu braku wiêkszego
  zainteresowania.

  Wspomnia³em o tipsach w przysz³ych wersjach tego dokumentu.

  11..11..55..  vv11..77

  Doda³em aplikacjê buzzit.  Poprawi³em patch do na³o¿enia na gnu tar.

  11..11..66..  vv11..66

  Doda³em tip TenThumbs-a dot. Netscape.

  Tak¿e zmieni³em lesspipe.sh dziêki jego sugestii.  Powinien teraz
  lepiej dzia³aæ.

  11..11..77..  vv11..55

  Doda³em francuskie t³umaczenie Arnaud Launay-a, i jego plik wu-ftpd.

  11..11..88..  vv11..44

  Doda³em japoñskie t³umaczenie Tetsu Isaji-ego.

  11..11..99..  vv11..33

  Doda³em plik Ulrik Dickow-a .emacs do emacs-a 19.30 lub wy¿szej
  wersji.

  (tak¿e poprawi³em patch jka-compr.el do emacs-a dziêki jego sugestii.
  Ojej!  Bzip2 nie ma jeszcze(?) flagi "append".)

  11..11..1100..  vv11..22

  Zmienilem patch do emacs-a aby automagicznie rozpoznawa³ pliki .bz2.

  11..11..1111..  vv11..11

  Doda³em patch dla emacs-a.

  11..11..1122..  vv11..00

  Runda 1.

  22..  JJaakk zzddoobbyyææ bbzziipp22

  Home page Bzip2-a znajduje siê na Home site w Wielkiej Brytanii
  <http://www.muraroa.demon.co.uk/>. Mirror site w U.S.A jest tu
  <http://www.digistar.com/bzip2/index.html>.  Mo¿na te¿ znale¼æ go na
  site-cie FTP Red Hat-a tu <ftp://ftp.redhat.com/pub/contrib>.

  22..11..  BBzziipp22--HHOOWWTTOO ww ttwwooiimm jjêêzzyykkuu

  Osoby pos³uguj±ce siê jêzykiem francuskim mog± skierowaæ siê do
  francuskich dokumentów Arnaud Launay-a.  Wersja WWW jest tu
  <http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html>, a ftp mo¿na u¿yæ
  tu <ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz> Z
  Arnaud mo¿na skontaktowaæ siê poczt± elektroniczn± pod tym adresem
  <mailto:zoro@mygale.org>

  Osoby pos³uguj±ce siê jêzykiem japoñskim mog± skierowaæ siê do
  japoñskich dokumentów Tetsu Isaji tu <http://jf.gee.kyoto-
  u.ac.jp/JF/JF.html>.  Z Isaji mo¿na skotaktowaæ siê na jego stronie
  WWW <http://www2s.biglobe.ne.jp/~kaien/>, lub poczt± elektroniczn± pod
  tym adresem. <mailto:isaji@mxu.meshnet.or.jp>

  Osoby pos³uguj±ce siê jêzykiem szwedzkim mog± skierowaæ siê do
  szwedzkich Linus-a Ãkerlund-a tu
  <http://user.tninet.se/~uxm165t/linux_doc.html>.  Z Linus-em mo¿na siê
  skontaktowaæ poczt± elektroniczn± pod tym adresem.
  <mailto:uxm165t@tninet.se>

  22..22..  JJaakk zzddoobbyyææ pprreekkoommppiilloowwaannee bbiinnaarriiaa bbzziipp22--aa

  Zobacz Home site-y.

  Binarium Debian Intel jest tu
  <ftp://ftp.debian.org/debian/dists/stable/main/binary-
  i386/utils/bzip2_0.1pl2-5.deb>.

  Binarium alpha Red Hat-a jest tu
  <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/alpha/RedHat/RPMS/bzip2-0.1pl2-1.alpha.rpm>.

  Binarium Intel Red Hat-a jest tu
  <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/i386/RedHat/RPMS/bzip2-0.1pl2-1.i386.rpm>.

  Binarium SPARC Red Hat-a jest tu
  <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/sparc/RedHat/RPMS/bzip2-0.1pl2-1.sparc.rpm>.

  Binarium Intel Slackware jest tu
  <ftp://www.cdrom.com/pub/linux/slackware-3.5/slakware/a1/bzip2.tgz>.

  Binarium Intel S.u.S.E jest tu <ftp://ftp.suse.com/pub/SuSE-
  Linux/5.2/suse/ap1/bzip.rpm>.

  Wy¿ej wymienione s± tak¿e dostêpne w analogicznuch miejscach ró¿nych
  lustrzanych site-ów.

  22..33..  JJaakk zzddoobbyyææ ¼¼rróódd³³aa bbzziipp22--aa

  Znajduj± siê na oficjalnych site-ach (zobacz w ``Jak zdobyæ Bzip2''
  gdzie, albo Red Hat ma je tu
  <ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm>).

  22..44..  KKoommppiillaaccjjaa bbzziipp22--aa ddllaa ttwwoojjeejj mmaasszzyynnyy

  JJee¶¶llii mmaasszz ggcccc 22..77..**, zmieñ linijkê która brzmi

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

  na

       CFLAGS = -O2 -fomit-frame-pointer

  to jest, zamieñ -O3 na -O2 i pomiñ -funroll-loops. You may also wish
  to add  any -m* flags (like -m486, for example) you use when compiling
  kernels.

  Usuniêcie -funroll-loops jest najistotniejsz± czê¶ci±, poniewa¿ mo¿e
  to spowodowaæ wiele gcc 2.7-ów bêdzie generowa³o nieprawid³owy kod, a
  wszystkie gcc 2.7-y bêd± wiêkszy i wolniejszy kod wynikowy.  Dla
  innych kompilatorów (lcc, egcs, gcc 2.8.x) standartowe CFLAGS s± w
  porz±dku.

  Potem, po prostu make i zainstaluj wg README.

  33..  UU¿¿yywwaanniiee bbzziipp22

  Przeczytaj Wspanaia³± Stronê Podrêcznika Systemowego :)

  44..  UU¿¿yywwaanniiee bbzziipp22 zz ttaarr--eemm

  Poni¿ej s± opisane trzy metody u¿ywania bzip2 z tar-em, a mianowicie

  44..11..  NNaajj³³aattwwiieejjsszzaa ddoo zzrroobbiieenniiaa::

  Ta metoda nie wyamga wcale ¿adnych zmian.  Aby od-tar-owaæ bzip2-owane
  archiwum tar-owe, foo.tar.bz2 w aktualnym katalogu, wykonaj
       /path/to/bzip2 -cd foo.tar.bz2 | tar xf -

  To dzia³a, ale mo¿e byæ wnerwiaj±ce je¶li wypisuje siê to zbyt czêsto.

  44..22..  ££aattwwaa ddoo zzrroobbiieenniiaa,, ddoo¶¶ææ ³³aattwwaa ww uu¿¿yycciiuu,, nniiee ttrrzzbbaa mmiieeææ
  uupprraawwnniieeññ rroooott--aa::

  Dziêki dla Leonard Jean-Marc <mailto:leonard@sct1.is.belgacom.be> za
  ten tip.  Dziêki tak¿e dla Alessandro Rubini
  <mailto:rubini@morgana.systemy.it> za wprawadzenie ró¿nic
  specyficznych dla csh.

  W swoim .bashrc, mo¿esz wstawiæ tak± linijkê :

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

  W .tcshrc, lub .cshrc, analogiczna linijka wygl±da tak:

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

  44..33..  TTee¿¿ ³³aattwwaa ddoo zzrroobbiieenniiaa,, aallee wwyymmaaggaa ddoossttêêppuu jjaakkoo rroooott..

  Na³ó¿ poni¿szy patch na gnu tar 1.12 w nastêpuj±cy sposób:

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

  skompiluj go, i zainstaluj go, i wszystko ju¿ gotowe do dzia³ania.
  Upewnij siê ze zarówno tar jak i  bzip2 s± w twojej $PATH poprzez
  "which tar" i "which bzip2."  Aby u¿yæ nowego tar-a, po prostu zrób

        tar xyf foo.tar.bz2

  aby zdekompresowaæ plik.

  Aby utworzyæ nowe archiwum, podobnie zrób:

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

  A oto patch:

  *** 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 ****
  --- 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':

  55..  UU¿¿yywwaanniiee bbzziipp22 zz lleessss--eemm

  Aby dekompresowaæ pliki bzip2 w locie, tj. aby móc u¿ywaæ less-a do
  czytania ich bez wcze¶niejszego bunzip2-owania ich, nale¿y zrobiæ
  lesspipe.sh (man less) w ten sposób:

  #!/bin/sh
  # To jest preprocessor dla 'less-a'.  Jest on u¿ywany, gdy ta zmienna
  # ¶rodowiskowa jest ustawiona:   LESSOPEN="|lesspipe.sh %s"

    case "$1" in
    *.tar) tar tvvf $1 2>/dev/null ;; # Ogl±daj zawarto¶æ ró¿nych plików tar-owych
    *.tgz) tar tzvvf $1 2>/dev/null ;;
  # Dzia³a dla niezmodyfikowanej wersji tar-a
    *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tzvvf - ;;
  # Dzia³a z spatchowan± wersj± tar-a
  # *.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 ;; # Ogl±daj spakowane pliki
    *.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

  66..  UU¿¿yywwaanniiee bbzziipp22 zz eemmaaccss--eemm

  66..11..  ZZmmaaiinnaa eemmaaccss--aa ddllaa wwsszzyyssttkkiicchh::

  Napisalem ten patch do jka-compr.el który dodaje bzip2 do auto-
  compression-mode.

  DDiissccllaaiimmeerr:: Spawdzi³em go tylko z emacs-20.2, ale nie mam powodów by
  s±dziæ, ¿e podobne postêpowanie nie bêdzie dzia³aæ z innymi wersjami.

  By go u¿yæ,

  1. Przejd¼ do katalogu ¼ród³owego emacs-20.2/lisp (tam gdzie go
     roztarowa³e¶)

  2. Wstaw ten patch do pliku  jka-compr.el.diff ( powinien byæ sam w
     tym pliku ;).

  3. Wykonaj

        patch < jka-compr.el.diff

  4. Wystartuj emacs-a, i wykonaj

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

  5. Wyjd¼ z emacs-a.

  6. Przenie¶ pierwotny jka-compr.elc w bezpieczne miejsce gdyby by³y
     bug-i.

  7. Zast±p go new jka-compr.elc.

  8. Baw siê dobrze!

     --- 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 doda³ 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")

  66..22..  ZZmmiiaannaa eemmaaccss--aa ddllaa ppoojjeeddyyññcczzeeggoo uu¿¿yyttkkoowwnniikkaa::

  Podziêkowania za to male¿± siê Ulrik-owi Dickow-owi, ukd@kampsax.dk
  <mailto:ukdATkampsax.dk>, programi¶cie systemowemu w Kampsax
  Technology:

  Aby móc u¿ywaæ bzip2 automatycznie gdy nie jeste¶ sysadmin-em, po
  prostu dodaj co nastêpuje do swojego pliku .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)

  77..  UU¿¿yywwaanniiee bbzziipp22--aa zz wwuu--ffttppdd

  Podziêkowania dla Arnaud Launay za tego oszczêdzacza bandwidth-u.  To
  co nastêpuje powinno siê znale¼æ w /etc/ftpconversions aby wykonywaæ
  kompresjê i dekompresjê on-the-fly za pomoc± bzip2. Upewnij siê, ¿e
  ¶cie¿ki takie jak (like /bin/compress) s± poprawne.

   :.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

  88..  UU¿¿yycciiee bbzziipp22 zz ggrreepp--eemm

  Ten u¿ytek, który nazwa³em bgrep, jest niewielk± modyfikacj± zgrep
  który jest dostarczany z Linux-em. Mo¿na go u¿ywaæ do grep-owania
  plików bez bunzip2-owania ich najpierw.

  #!/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

  99..  UU¿¿yywwaanniiee bbzziipp22--aa zz NNeettssccaappee--mm ppoodd XX--aammii..

  tenthumbs@cybernex.net pisze:

       Znalaz³em sposób aby spowodowaæ ¿eby Linux-owy Netscape u¿ywa³ bzip2-a
       do Content-Encoding tak jak u¿ywa gzip-a. Dodaj to do $HOME/.Xdefaults
       lub $HOME/.Xresources

       U¿ywam opcji -s poniewa¿ wolê straciæ trochê z szybko¶ci dekompresji
       na korzy¶æ zu¿ycia RAM-u. Mo¿n pomin±æ t± opcjê, je¶li kto¶ tak chce.

  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

  1100..  UU¿¿yycciiee bbzziipp22--aa ddoo rreekkoommpprreessjjii pplliikkóóww sskkoommpprreessoowwaannyycchh ww iinnnnyycchh
  ffoorrmmaattaacchh

  Ten program w perl-u pobiera plik skompresowany w innych formatach
  (.tar.gz, .tgz. .tar.Z, and .Z ) i przepakowuje je dla lepszej
  kompresji.  Kod ¿ród³owy w perl-u ma wiele porz±dnej dokumentacji
  dotycz±cej tego co robi i jak to robi co robi.

  #!/usr/bin/perl -w

  #######################################################
  #                                                     #
  # Ten program pobiera pliki skompresowane programami  #
  # compress i gzip w aktualnym katalogu i zamienia je  #
  # do formatu bzip2. Obs³uguje rozdszerzenie .tgz w    #
  # prawid³owy sposób, tworz±c plik .tar.bz2.           #
  #                                                     #
  #######################################################
  $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";