Landscape トップページ | < 前の日 2005-12-06 2005-12-07 次の日 2005-12-08 >

Landscape - エンジニアのメモ 2005-12-07

gzip/bzip2 は環境変数 GZIP/BZIP2 で圧縮レベルのデフォルト値を指定できる


* gzip/bzip2 は環境変数 GZIP/BZIP2 で圧縮レベルのデフォルト値を指定できる

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [unix] [Apache] [シェルスクリプト]

2005-12-04 に書いた「gzip 圧縮されたファイルを最強の圧縮レベルで再圧縮」について、いくつか指摘を頂いた。ありがとうございます。本当に、当サイトにも早くコメント欄を付けるべきだなあ・・・。

まずは掲示板 (wiki でしたっけ?) の「イナモデ」に書かれていた指摘。
http://inamode6.tokuhirom.dnsalias.org/show/1827
わざわざ再圧縮するんであればbzip2使えばgzip -9より圧縮できるだろう。

今回の圧縮対象はテキストのログなので、確かに bzip2 の方が圧縮率は高くなるでしょうね。でも、以下の2つの理由で bzip2 は使いませんでした。

1. さくらインターネットが採用しているログ圧縮やローテーションの仕組みがわからないので、その仕組みによっては bzip2 で圧縮したファイルをさらに gzip 圧縮するとういう動きをするかもしれなかった。gzip や bzip2 コマンドならば、圧縮済みファイルだったら何もしないという動きをすると思いますが、さくらインターネットが採用している仕組みがわからなかったので現状維持で gzip としました。

2. さくらインターネットでは webalizer でアクセスログからレポートを生成しているが、webalizer が bzip2 で圧縮されたログを読めるかどうかわからないので不安だった。たぶん大丈夫なんでしょうけど、そこまで冒険することもないかなあと。

> ところで、この圧縮率の差が生まれる原因って、logrotate か rotatelogs あたりのオプションにあるのかな? それとも独自のシェルスクリプトか何かのオプションが原因なのかな。

man 1 gzipに「The default compression level is -6 (that is, biased towards high compression at expense of speed). 」と書いてあるって。

あ、疑問の趣旨は、logrotate や rotatelogs を使ってるとして、そこから呼びだされている gzip や zlib の圧縮レベルを指定してるのはどこなのかな、というものです。それで、logrotate や rotatelogs は圧縮レベルを指定できるオプションを持ってるのかな、というのが元の文の意味です。わかりにくかったですね。

gzip コマンド自体が圧縮レベルを指定できるオプションを持ってるのは知ってたので、とりあえずレベル最強で圧縮し直すという単純な解決法をとったわけですしね。

そういえば、その昔に linux の logrotate を使ってた頃は、何もしなくても gzip -9 と同等の圧縮レベルが指定されてたような気がします。気のせいかもしれないけど・・・。

- gzip/bzip2 コマンドは環境変数 GZIP/BZIP2 でオプションのデフォルト値を指定できる

freebsdグループ - TransFreeBSDの日記 - gzipの圧縮レベルを変えるには
http://freebsd.g.hatena.ne.jp/TransFreeBSD/20051205/p2
私も、newsyslogとかにオプションとかあるかもと思って、ちょっと探したけどなかった。で、gzipは環境変数「GZIP」にオプションを設定できるらしい。

On-line Manual of ”gzip”

というわけで、newsyslogとかlogrotateとかがこの環境変数を消していなければ、crontabに設定すればわたるはず。

あと、さくらインターネットの専用サーバはFreeBSDが選べますが、レンタルサーバのOSは何だろう。FreeBSDならbzip2の方がお得だと思います。

これは知りませんでした。確かに man ページに書いてありました。「よく使ってるコマンドでも man を読むと発見がある」という好例ですね。勉強になりました。

Manpage of GZIP
http://www.linux.or.jp/JM/html/GNU_gzip/man1/gzip.1.html
環境変数
環境変数 GZIP に gzip のデフォルトのオプションセットを入れることができる。これらのオプションは最初に解釈されるので、明示的なコマンドラインパラメータで上書きすることができる。例を示す。
      sh の場合:    GZIP="-8v --name"; export GZIP
      csh の場合:  setenv GZIP "-8v --name"
      MSDOS の場合: set GZIP=-8v --name

bzip2 コマンドも同じように環境変数 BZIP2 と BZIP でオプションのデフォルト値を指定できるようですね。

Manpage of bzip2
http://www.linux.or.jp/JM/html/bzip2/man1/bzip2.1.html
bzip2 は環境変数 BZIP2, BZIP からこの順番で引き数を読み込み、コマンドラインから読み込まれた引き数よりも先に処理する。これはデフォルトの引き数を与える便利な方法である。

ただ、やっぱりさくらインターネットのログ切り出しと圧縮の仕組みがわからないので、2005-12-04 の再圧縮スクリプトを cron で実行という方法を取ろうと思います。運営側で圧縮レベルを上げるという対処をしてくれるかどうかもわからないですしね。とりあえず後でサポートに要望を出しておこうとは思ってます。

そうそう、さくらインターネットのレンタルサーバは FreeBSD でした。uname -a したら以下のように出力されました。

$ uname -a
FreeBSD www****.sakura.ne.jp 4.10-RELEASE-p16 FreeBSD 4.10-RELEASE-p16 #0: Thu Aug  4 11:51:09 JST 2005    root@******.sakura.ne.jp:/usr/src/sys/compile/SAKURA8S  i386


すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。