シェルから定番アーカイバ「tar」を使用したとき、その変化に気付いただろうか? 実は、Snow Leopardのtarコマンドは、Leopardの「GNU tar 1.15.1」から「BSD tar 2.6.2」に置き換えられているのだ。

GNU版からBSD版に置き換えられた「tar」

調べてみると、/usr/bin/tarには、Leopardのときは存在しなかったライブラリ(/usr/lib/libarchive)がリンクされている。このライブラリはFreeBSD 5.3に正式採用されたもので、NetBSDおよびFreeBSDの成果を取り入れているMac OS Xはその流れを受けたものと考えられる。

このBSD tar、用法やオプションはGNU tarと大きく変わらないが、bzip2で圧縮されたファイルを「z」オプションで展開できるという隠れた(?)メリットがある。GNU tarのときは、「tjf」とすべきところをうっかり「tar tzf」としてしまい展開できないという失敗を繰り返していた筆者だが、「j」でも「z」でも快く展開してくれるBSD tarは扱いやすい。「-y」オプションがあるなどGNU tarとの機能差は多少あるが、アーカイバとしての基本機能はほぼ同じだ。

HDDの空き容量が増えた理由

Snow Leopardリリース前にアピールされていた「HDDの空き容量増加」。PowerPCバイナリを取り去るなど、不要となったリソースの除去を中心とした"ダイエット"もその理由の1つだが、さり気なくファイルシステム「HFS+」の改良も行われている。これは、WWDCの基調講演では特に触れられていなかったことだ。

仕様の変更により、一部後方互換性が失われている。Snow Leopardをインストールしたマシンをターゲットモードで起動し、Tigerが動作するマシンにマウントしたところ、通常のフォルダ/ファイルには変わらずアクセスできたが、アプリケーションは変化していた。バンドル内部にある実行ファイルはファイルサイズが「0」、Fileコマンドで確認しても「empty」と表示されるのだ(下図参照)。

Tigerから直接Snow Leopardのアプリケーションを見ると、実行ファイル部分のサイズが「empty」となっている

HFS+に圧縮機能が追加されていることもわかる。Finderの情報ウインドウでプレビュー(Preview.app)のサイズを確認したところ、Tigerで測ったときは14.6MB、Snow Leopardで測ったときは34.9MB。Tigerで測定したときの容量が物理的なディスク消費量とすると、約4割のサイズにまで圧縮されている計算だ。

Snow Leopardでは34.9MBの「プレビュー」が、直接Tigerでマウントしたときには14.6MBと表示された

旧バージョンのOSでSnow Leopardのアプリケーションを見たとき、車両通行止めのマークが表示されるのは、圧縮されたデータにアクセスさせないという配慮があるのだろう。いずれにしてもこのHFS+の仕様変更は興味深く、検証を重ねたうえで再度ご報告したいと考えている。