Snow LeopardのHFS+圧縮機能でディスクスペースを有効活用する

海上忍
2010-10-25 19:51:16
  • このエントリーをはてなブックマークに追加
最新特集【一覧】

 前回に続き、HFS Plusボリューム上のさまざまな情報を出力してくれるコマンド「hfsdebug-lite」を利用し、Snow Leopard以降のシステムでどのようにファイル圧縮が行われているかを探ってみたい。

 Snow Leopardでは、/Applications以下に置かれたアプリケーションの多くが、バンドル内部にあるファイルの一部を圧縮することでディスクスペースを稼いでいる。/binや/usr/binなど、いわゆるUNIXコマンドについても同様で、これは「hfsdebug-lite」コマンドを実行することで確認できる。

 しかしiTunesやSafariなど、Snow Leopardのインストール後に追加もしくはアップデートされたアプリケーションは圧縮されていない。これは/usr以下にインストールされるUNIXコマンドも同様で、クリーンインストール時には空のはずの/usr/local/binへインストールされたコマンドは、すべてが未圧縮だ。この状態はインストール(ファイルコピー)時に圧縮処理が行われているかどうかの違い、とおおよその検討がつく。

 ではどのような処理が……と探ってみると、dittoコマンドに「--hfsCompression」オプションが新設されていたことを思い出した。となると、Snow Leopard標準装備のアプリケーションやコマンドは、このdittoコマンド(あるいはAPIに追加された同等の機能)を利用してインストール時に圧縮処理をしている、という可能性が出てくる。

 試しに、ウェブブラウザのCaminoを対象に圧縮を行った。実行したコマンドラインは以下のとおり。なお、圧縮後のバンドルも変わらず動作したことを報告しておく。

$ cd /Applications
$ ditto --hfsCompression Camino.app Camino-compressed.app

 出力されたCamino-compressed.appのファイルサイズをFinderの情報ウインドウで調べたところ、ditoコマンドの実行前と同じ66.6Mバイト。hfsdebug-liteコマンドでバンドル内部を調べたところ、確かに圧縮されているのだが、バンドル全体での圧縮効果を測ることができない。そこで、フリーソフトウェアとして公開されている「afsctool」というコマンドを使い、測定しなおした。

 結果は以下に示す図版のとおり。じつに58%もの圧縮効果を得られることがわかる。dittoコマンドのマニュアル(man ditto)を見ると、--hfsCompressionオプションの項には「システムファイルやユーザーが生成したファイルは対象とすべきではない」という旨の表現はあるが、アプリケーションのように再インストールすれば済むものは危険がないはず。ディスクスペース有効利用の観点からも、もっと利用されていいだろう。

圧縮前と後でアプリケーションバンドルのファイルサイズは変わらないように見えるが 圧縮前と後でアプリケーションバンドルのファイルサイズは変わらないように見えるが……
afsctoolで確認 afsctoolで確認すると、6割近い圧縮効果を得られることがわかった ※クリックで拡大画像を表示
  • 新着記事
  • 特集
  • ブログ