This file is indexed.

/usr/share/doc/HOWTO/fr-html/Bzip2.html is in doc-linux-fr-html 2013.01-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Mini Howto Bzip2</title>
</head>
<body>
<h1>Mini Howto Bzip2</h1>
<h2>David Fetter, <a href=
"mailto:david@fetter.org">david@fetter.org</a>;<br>
Version Fran&ccedil;aise par Arnaud Launay, <a href=
"mailto:asl@launay.org">asl@launay.org</a></h2>
v2.0, 22 ao&ucirc;t 1999
<hr>
<em>Ce document vous expliquera comment utiliser le nouveau
programme de compression bzip2. Le document sgml original se trouve
<a href="http://fetter.org/Bzip2-HOWTO/">ici</a>.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>Bzip2 est un nouvel algorithme d&eacute;lirant de compression de
donn&eacute;es. Il produit g&eacute;n&eacute;ralement des fichiers
qui ne font que 60 ou 70% de la taille obtenue par compression par
gzip.</p>
<p>Ce document vous montrera quelques applications courantes pour
bzip2.</p>
<p>Les futures versions de ce document auront des applications de
libbzip2, la biblioth&egrave;que bzip2 en C que l'auteur de bzip2,
<a href="mailto:Julian_Seward@muraroa.demon.co.uk">Julian
Seward</a>, a sympathiquement &eacute;crite. Le manuel de bzip2,
qui dispose des informations de bas-niveau, se trouve <a href=
"http://www.bzip2.org/bzip2/docs/manual_toc.html">ici</a>.</p>
<p>Les futures versions de ce document pourront &eacute;galement
inclure un r&eacute;sum&eacute; de la discussion sur
l'&eacute;ventualit&eacute; (et la m&eacute;thode) d'utilisation de
bzip2 dans le noyau Linux.</p>
<h2><a name="ss1.1">1.1 Historique des r&eacute;visions</a></h2>
<h3>v2.00</h3>
<p>Changement de la section <a href="#bzip2-with-less">Utiliser
bzip2 avec less</a> pour que les fichiers .tar.bz2 puissent
&ecirc;tre lus. Merci &agrave; <a href=
"mailto:mc8644@mclink.it">Nicola Fabiano</a> pour la
correction.</p>
<p>Mise &agrave; jour de l'utilitaire buzzit.</p>
<p>Mise &agrave; jour des informations sur tar.</p>
<h3>v1.92</h3>
<p>Mise &agrave; jour de la section <a href=
"#bzip2-binaries">Obtenir des binaires de bzip2</a>, incluant les
binaires S.u.S.E.</p>
<h3>v1.91</h3>
<p>Correction d'une type et clarification de quelques
probl&egrave;mes li&eacute;s au shell dans la section <a href=
"#bzip2-with-tar">section sur l'utilisation de bzip2 avec tar</a>.
Merci &agrave; Alessandro Rubini.</p>
<p>Mise &agrave; jour de l'utilitaire buzzit pour ne pas exploser
l'archive bzip2 originale.</p>
<p>Ajout de bgrep, un outil de type zgrep.</p>
<h3>v1.9</h3>
<p>Clarification du probl&egrave;me avec gcc 2.7.*. Merci &agrave;
Ulrik Dickow de l'avoir fait remarquer.</p>
<p>Ajout de la mani&egrave;re &eacute;l&eacute;gante d'utilisation
de tar par Leonard Jean-Marc.</p>
<p>Ajout de la traduction en su&eacute;dois par Linus
&Atilde;kerlund.</p>
<p>Correction de la section wu-ftpd sur la suggestion d'Arnaud
Launay.</p>
<p>D&eacute;placement des traductions vers leur propre section.</p>
<h3>v1.8</h3>
<p>Ajout de buzzit et tar.diff dans le sgml o&ugrave; ils doivent
se trouver. Correction de la ponctuation et de la
pr&eacute;sentation. Merci &agrave; Arnaud Launay pour m'aider
&agrave; corriger ma copie. :-)</p>
<p>Suppression du projet xv pour le moment, d&ucirc; au manque
d'int&eacute;r&ecirc;t populaire.</p>
<p>Ajout d'un pense-b&ecirc;te pour les versions futures du
document.</p>
<h3>v1.7</h3>
<p>Ajout de l'utilitaire buzzit. Correction du patch pour gnu
tar.</p>
<h3>v1.6</h3>
<p>Ajout du truc de TenThumbs pour Netscape.</p>
<p>Egalement, changement de lesspipe.sh d'apr&egrave;s sa
suggestion. Il doit mieux fonctionner maintenant.</p>
<h3>v1.5</h3>
<p>Ajout de la traduction en fran&ccedil;ais d'Arnaud Launay, ainsi
que son fichier pour wu-ftpd.</p>
<h3>v1.4</h3>
<p>Ajout de la traduction en japonais de Tetsu Isaji.</p>
<h3>v1.3</h3>
<p>Ajout du .emacs d'Ulrik Dickow pour les 19.30 et plus
r&eacute;cents.</p>
<p>(Egalement corrig&eacute; le patch jka-compr.el pour emacs
d'apr&egrave;s sa suggestion. Oops! Bzip2 ne poss&egrave;de pas
encore(?) de drapeau "append").</p>
<h3>v1.2</h3>
<p>Correction du patch pour emacs afin qu'il reconnaisse
automagiquement les fichiers .bz2.</p>
<h3>v1.1</h3>
<p>Ajout du patch pour emacs.</p>
<h3>v1.0</h3>
<p>1&egrave;re version.</p>
<h2><a name="obt-bzip2"></a> <a name="s2">2. Obtenir bzip2</a></h2>
<p>La page web de bzip2 se trouve sur le <a href=
"http://www.bzip2.org/">site britannique</a>. Le miroir
am&eacute;ricain est <a href=
"http://www.digistar.com/bzip2/index.html">ici</a>.</p>
<h2><a name="ss2.1">2.1 Le Bzip2-HOWTO dans votre langue</a></h2>
<p>Les francophones peuvent se r&eacute;f&eacute;rer aux
traductions d'Arnaud Launay. La version web se trouve <a href=
"http://www.freenix.org/unix/linux/HOWTO/mini/Bzip2.html">ici</a>,
et vous pouvez utiliser le ftp <a href=
"ftp://ftp.traduc.org/pub/HOWTO/FR/Bzip2.gz">ici</a>. Arnaud peut
&ecirc;tre contact&eacute; par courrier &eacute;lectronique
&agrave; <a href="mailto:asl@launay.org">cette adresse</a>.</p>
<p>Les nippons peuvent se r&eacute;f&eacute;rer aux traductions de
Tetsu Isaji, <a href=
"http://jf.gee.kyoto-u.ac.jp/JF/JF.html">ici</a>. Isaji peut
&ecirc;tre joint sur <a href=
"http://www2s.biglobe.ne.jp/~kaien/">sa page principale</a>, ou par
courrier &eacute;lectronique &agrave; <a href=
"mailto:isaji@mxu.meshnet.or.jp">cette adresse</a>.</p>
<p>Les su&eacute;dois peuvent se r&eacute;f&eacute;rer aux
traductions de Linus &Atilde;kerlund <a href=
"http://user.tninet.se/~uxm165t/linux_doc.html">ici</a>. Linus peut
&ecirc;tre contact&eacute; par courrier &eacute;lectronique
&agrave; <a href="mailto:uxm165t@tninet.se">cette adresse</a>.</p>
<h2><a name="bzip2-binaries"></a> <a name="ss2.2">2.2 Obtenir des
binaires pr&eacute;compil&eacute;s de bzip2</a></h2>
<p>Voir la page web.</p>
<h2><a name="ss2.3">2.3 Obtenir les sources de bzip2</a></h2>
<p>Elles se trouvent sur les sites officiels (voir <a href=
"#obt-bzip2">Obtenir Bzip2</a> pour les emplacements.</p>
<h2><a name="ss2.4">2.4 Compiler bzip2 pour votre machine</a></h2>
<p><b>Si vous avez gcc 2.7.*</b>, changez la ligne indiquant</p>
<blockquote>
<pre>
<code>CFLAGS = -O3 -fomit-frame-pointer -funroll-loops
</code>
</pre></blockquote>
<p>pour avoir</p>
<blockquote>
<pre>
<code>CFLAGS = -O2 -fomit-frame-pointer
</code>
</pre></blockquote>
<p>C'est-&agrave;-dire, remplacez le -O3 par un -O2 et supprimez le
-funroll-loops. Vous pouvez &eacute;galement ajouter une option
quelconque du type -m* (comme -m486, par exemple) que vous utilisez
lorsque vous compilez un noyau.</p>
<p>Eviter le -funroll-loops est le plus important, car la plupart
des gcc 2.7 g&eacute;n&eacute;reront le mauvais code, et tous les
gcc 2.7 g&eacute;n&eacute;reront du code plus lent et plus gros.
Pour les autres compileurs (lcc, egcs, gcc 2.8.x) les CFLAGS par
d&eacute;faut sont bons.</p>
<p>Apr&egrave;s &ccedil;a, lancez simplement <code>make</code> et
installez-le d'apr&egrave;s le README.</p>
<h2><a name="s3">3. Utiliser bzip2 lui-m&ecirc;me</a></h2>
<p>RTFM (Read the Fine Manual Page). En clair: lisez le manuel.</p>
<h2><a name="bzip2-with-tar"></a> <a name="s4">4. Utiliser bzip2
avec tar</a></h2>
<p>Sont list&eacute;s ci-dessous trois m&eacute;thodes
d'utilisation de bzip2 avec tar, soit:</p>
<h2><a name="ss4.1">4.1 Le plus facile &agrave; mettre en
place</a></h2>
<p>Cette m&eacute;thode ne n&eacute;cessite pas de configurer quoi
que ce soit. Pour d&eacute;compresser une archive foo.tar.bz2 en
bzip2 dans le r&eacute;pertoire courant, tapez</p>
<blockquote>
<pre>
<code>/chemin/vers/bzip2 -cd foo.tar.bz2 | tar xf -
</code>
</pre></blockquote>
ou
<blockquote>
<pre>
<code>tar --use-compress-prog=bzip2 xf foo.tar.bz2
</code>
</pre></blockquote>
<p>Ceci fonctionne, mais peut &ecirc;tre ennuyeux &agrave; taper
souvent.</p>
<h2><a name="ss4.2">4.2 Facile &agrave; mettre en oeuvre,
relativement simple &agrave; utiliser, pas de
n&eacute;cessit&eacute; d'avoir les privil&egrave;ges de
super-utilisateur</a></h2>
<p>Merci &agrave; <a href=
"mailto:leonard@sct1.is.belgacom.be">Leonard Jean-Marc</a> pour ce
truc.</p>
<p>Dans votre .bashrc, vous pouvez mettre une ligne comme
celle-ci:</p>
<blockquote>
<pre>
<code>alias btar='tar --use-compress-program /usr/local/bin/bzip2 '
</code>
</pre></blockquote>
<p>Dans votre .tcshrc, ou .cshrc, la ligne ressemblera
&agrave;:</p>
<blockquote>
<pre>
<code>alias btar 'tar --use-compress-program /usr/local/bin/bzip2 '
</code>
</pre></blockquote>
<h2><a name="ss4.3">4.3 Aussi simple &agrave; utiliser, mais
n&eacute;cessite les privil&egrave;ges de
super-utilisateur</a></h2>
<p>Mettez votre tar &agrave; jour avec la nouvelle version de GNU
tar, qui est aujourd'hui la 1.13.10. On peut le trouver sur
<a href="ftp://alpha.gnu.org/gnu/tar/">le site ftp de GNU</a> ou
tout miroir.</p>
<h2><a name="bzip2-with-less"></a> <a name="s5">5. Utiliser bzip2
avec less</a></h2>
<p>Pour d&eacute;compresser les fichiers de bzip2 au vol,
c-&agrave;-d pour pouvoir utiliser "less" sur eux sans commencer
par les bunzip2-er, vous pouvez cr&eacute;er un lesspipe.sh (man
less) comme celui-ci:</p>
<pre>
#!/bin/sh
# Ceci est un pr&eacute;processeur pour 'less'. Il est utilis&eacute; lorsque cette
# variable d'environnement existe:  LESSOPEN="|lesspipe.sh %s"

  case "$1" in
  *.tar) tar tvvf $1 2&gt;/dev/null ;; # Voir le contenu de fichiers .tar et .tgz
  *.tgz) tar tzvvf $1 2&gt;/dev/null ;;
# Celui-ci fonctionne pour la version non-modifi&eacute;e de tar:
  *.tar.bz2) bzip2 -cd $1 $1 2&gt;/dev/null | tar tvvf - ;;
# Celui-ci fonctionne avec la version patch&eacute;e de tar:
# *.tar.bz2) tyvvf $1 2&gt;/dev/null ;;
  *.tar.gz) tar tzvvf $1 2&gt;/dev/null ;;
  *.tar.Z) tar tzvvf $1 2&gt;/dev/null ;;
  *.tar.z) tar tzvvf $1 2&gt;/dev/null ;;
  *.bz2) bzip2 -dc $1  2&gt;/dev/null ;; # Voir correctement les fichiers compress&eacute;s
  *.Z) gzip -dc $1  2&gt;/dev/null ;;
  *.z) gzip -dc $1  2&gt;/dev/null ;;
  *.gz) gzip -dc $1  2&gt;/dev/null ;;
  *.zip) unzip -l $1 2&gt;/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&gt;/dev/null ;;
#  *) FILE=`file -L $1` ; # V&eacute;rifier si c'est un binaire, alors -&gt; voir avec '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
</pre>
<h2><a name="s6">6. Utiliser bzip2 avec emacs</a></h2>
<h2><a name="ss6.1">6.1 Changer emacs pour tous</a></h2>
<p>J'ai &eacute;crit le patch suivant pour jka-compr.el qui ajoute
bzip2 au mode d'auto-compression.</p>
<p><b>Avertissement:</b> Je l'ai uniquement test&eacute; avec
emacs-20.2, mais je n'ai pas de raisons de croire qu'une approche
similaire ne fonctionnerait pas avec d'autres versions.</p>
<p>Pour l'utiliser,</p>
<ol>
<li>Allez dans le r&eacute;pertoire des sources emacs-20.2/lisp
(quel que soit l'endroit o&ugrave; il se trouverait
d&eacute;compact&eacute;)</li>
<li>Enregistrez le patch ci-dessous dans un fichier nomm&eacute;
jka-compr.el.diff (il doit &ecirc;tre seul dans ce fichier ;).</li>
<li>Faites
<blockquote>
<pre>
<code> patch &lt; jka-compr.el.diff
</code>
</pre></blockquote>
</li>
<li>Lancez emacs, et utilisez
<blockquote>
<pre>
<code> M-x byte-compile-file jka-compr.el
</code>
</pre></blockquote>
</li>
<li>Quittez emacs.</li>
<li>D&eacute;placez votre jka-compr.elc original vers un endroit
s&ucirc;r en cas d'erreurs.</li>
<li>Remplacez le par le nouveau jka-compr.elc.</li>
<li>Amusez-vous !</li>
</ol>
<pre>
--- 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")
</pre>
<h2><a name="ss6.2">6.2 Changer emacs pour une seule
personne</a></h2>
<p>Merci &agrave; Ulrik Dickow, <a href=
"mailto:ukdATkampsax.dk">ukd@kampsax.dk</a>, ing&eacute;nieur
syst&egrave;me &agrave; Kampsax Technology, pour celui-ci:</p>
<p>Pour faire en sorte de pouvoir utiliser bzip2 automatiquement
lorsque vous n'&ecirc;tes pas administrateur syst&egrave;me,
ajoutez simplement ce qui suit &agrave; votre fichier .emacs.</p>
<pre>
;; (D&eacute;)compression automatique pour le chargement/sauvegarde de fichiers
;; (gzip(1) et simililaires)
;; Nous le lan&ccedil;ons en &eacute;tat stopp&eacute;, ainsi le support pour bzip2(1) peut &ecirc;tre
;; ajout&eacute;.
;; Cod&eacute; par Ulrik Dickow pour ~/.emacs avec Emacs 19.34.
;; Doit fonctionner avec beaucoup d'anciens et de nouveaux emacs &eacute;galement.
;; Pas de garantie, cependant.
;;
(if (fboundp 'auto-compression-mode) ; Emacs 19.30+
    (auto-compression-mode 0)
  (require 'jka-compr)
  (toggle-auto-compression 0))
;; Ajouter le support bzip2 et autoriser la compression.
(add-to-list 'jka-compr-compression-info-list
             ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'"
              "zipping"        "bzip2"         ()
              "unzipping"      "bzip2"         ("-d")
              nil t])
(toggle-auto-compression 1 t)
</pre>
<h2><a name="s7">7. Utiliser bzip2 avec wu-ftpd</a></h2>
<p>Merci &agrave; Arnaud Launay pour ce gain de bande passante. Ce
qui suit doit aller dans /etc/ftpconversions pour faire de la
compression et d&eacute;compression au vol avec bzip2.
V&eacute;rifiez que les chemins (comme /bin/compress) sont
bons.</p>
<pre>
 :.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
</pre>
<h2><a name="s8">8. Utiliser bzip2 avec Netscape sous X</a></h2>
<p>tenthumbs@cybernex.net nous dit:</p>
<blockquote><code>J'ai &eacute;galement trouv&eacute; un moyen pour
obtenir l'utilisation de bzip2 par Netscape/Linux pour le
Content-Encoding de la m&ecirc;me mani&egrave;re qu'il utilise
gzip. Ajoutez ceci &agrave; $HOME/.Xdefaults ou
$HOME/.Xresources.</code>
<p><code>J'utilise l'option -s car je pr&eacute;f&egrave;re perdre
un peu de vitesse de d&eacute;compression et conserver de la
m&eacute;moire. Vous pouvez supprimer cette option si vous le
d&eacute;sirez.</code></p>
</blockquote>
<pre>
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
</pre>
<h2><a name="s9">9. Utiliser bzip2 pour recompresser en
remplacement d'autres formats de compression</a></h2>
<p>Ce programme perl prend les fichiers compress&eacute;s dans
d'autres formats (.tar.gz, .tgz. .tar.Z, et .Z pour cette
it&eacute;ration) et les recompresse pour un meilleur
r&eacute;sultat. Le source perl dispose de tous les types de
documentation n&eacute;cessaires sur ce qu'il fait et comment il
fait ce qu'il fait. Cette derni&egrave;re version prend les
fichiers sur la ligne de commande. Sans argument en ligne de
commande, il tente de recomprimer tous les fichiers du
r&eacute;pertoire courant.</p>
<pre>
#!/usr/bin/perl -w

#######################################################
#                                                     #
# Ce programme prend les fichiers compress&eacute;s et       #
# gzip-&eacute;s dans le r&eacute;pertoire courant et les tranforme #
# en fichiers bzip2. Il supporte proprement           # 
# l'extension .tgz, produisant un fichier .tar.bz2.   #
#                                                     #
#######################################################
$counter = 0;
$saved_bytes = 0;
$totals_file = '/tmp/machine_bzip2_total';
$machine_bzip2_total = 0;

@raw = (defined @ARGV)?@ARGV:&lt;*&gt;;

foreach(@raw) {
    next if /^bzip/;
    next unless /\.(tgz|gz|Z)$/;
    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 "Recompacte $_ ($counter/$total)...\n";
    if ((system "gzip -cd $_ |bzip2 &gt;$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&lt;100)?')':'(',"\n";
        unlink $_;
    } else {
        print "Arrgghh! Quelque chose est arriv&eacute; &agrave; $_: $!\n";
    }
}
print "Vous avez "
    , ($saved_bytes&gt;=0)?"sauv&eacute; ":"perdu "
    , abs($saved_bytes)
    , " octets d'espace disque :"
    , ($saved_bytes&gt;=0)?")":"("
    , "\n"
    ;

unless (-e '/tmp/machine_bzip2_total') {
    system ('echo "0" &gt;/tmp/machine_bzip2_total');
    system ('chmod', '0666', '/tmp/machine_bzip2_total');
}


chomp($machine_bzip2_total = `cat $totals_file`);
open TOTAL, "&gt;$totals_file"
     or die "Ne peut ouvrir le total sur tout le syst&egrave;me: $!";
$machine_bzip2_total += $saved_bytes;
print TOTAL $machine_bzip2_total;
close TOTAL;

print "Ceci nous donne un total de ",`cat $totals_file`," octets sauv&eacute;s sur
tout le syst&egrave;me.\n";
</pre>
</body>
</html>