僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
まだ
Experimental にも入ってないのだろうか。
と思ったら、lzmaがそれのような。xz-4.999.8betaには同名のコマンド
(xz(1)のシンボリックリンクだけど)があるし...
で、追試。GNU tar-1.22 は J オプションで xz(1) にフィルタする。
また、 --lzma も指定できる。
適当に色々圧縮、展開して試す。
lfs に入れた xz-4.999.8beta より、特に指定しない場合はlzma が幾らか
高い圧縮率を示すようだった。
ちなみに、*.xz も *.lzma も、GNU fileutilsのデフォルトでは
"data"としか表示されない。
さて、どうやったら "data" 以外の文字列を出力できるのか。
man 1 fileによれば、マジックナンバーをmagic(4) の参照から得ているようだ。
とりあえず Linux From Scratch SVN で少し遊んでみる。
$ file --version file-5.00 magic file from /usr/share/file/magic
そんなファイルはない。/usr/share/file/magic.mgc ならあるが。
man 3 libmagic すると、Filesの項目に、
/usr/share/file/magic The non-compiled default magic database. /usr/share/file/magic.mgc The compiled default magic database.
古いfile(4.17)のマニュアルには、この他に magic.mime{,.mgc}も
記述されていた。
まず悪戯から。
$ cd /usr/share/magic $ file magic.mgc magic.mgc: magic binary file for file(1) cmd (version 7) (little endian) $ sudo mv magic.mgc magic.hoge $ file magic.hoge file: could not find any magic files!
マジックナンバーはソースツリーの
magic/Magdir 配下に定義されており、
make 時に magic.mgc が作られている...らしい。
適当に s/bzip2/bakka/ して make install すると、
$ ./file some.tar.bz2 some.tar.bz2: bakka compressed data, block size = 900k
そこまで凝らなくても、~/.magic を編集すればいい。
magic/Magdir/pdf を参考にして、適当なフォーマットを定義してみる。
$ cat > ~/.magic <<"EOF" >0 string %myformat- my test document >!:mime application/myformat >EOF $ echo "%myformat-0.01" > new.img $ dd if=/dev/urandom of=temp count=1 >&/dev/null $ cat temp >> new.img $ file new.img new.img: my test document
さて、xzやlzmaのマジックナンバーを調べろ、ということに なりそうだけど、ど、ど、
左手首がおかしくなってきたので、ここまで。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。