The world's most advanced operating system.

MacBook AIRでシステム開発から事務作業までこなすビジネスマンが増えているが、その場合にはひとつ心もとないことがある。MacBook AIRは持ち運びに便利でシステム開発に対してすら十分なパワーを提供しているが、ディスク容量が少ない。特に仮想化環境を複数使うようなケースではディスク容量が厳しいことになる。

Mac OS Xではファイルを削除したにも関わらず、ディスクの空き容量が削除した量ほどは減らないことがある。これはMac OS X Lionから提供されるようになったローカルスナップショットと呼ばれる機能によるものだが、この機能の恩恵を受けるよりも、正確なディスクの空き容量を把握しておきたいことが度々訪れる。そのような場合、多少強引なやり方だが次のようなシェルスクリプトを作成しておいて実行するとよい。

#!/bin/sh

sudo echo > /dev/null 2>&1

df -h /
/bin/echo -n . && sudo tmutil disablelocal && sleep 1
/bin/echo -n . && sudo tmutil enablelocal  && sleep 1
/bin/echo -n . && sudo tmutil disablelocal && sleep 1
/bin/echo -n . && sudo tmutil enablelocal  && sleep 1
/bin/echo -n . && sudo tmutil disablelocal && sleep 1
/bin/echo -n . && sudo tmutil enablelocal  && sleep 1
/bin/echo -n . && sudo tmutil disablelocal && sleep 1
/bin/echo -n . && sudo tmutil enablelocal  && sleep 1
sleep 1
/bin/echo -n . && sudo tmutil disablelocal && sleep 1
/bin/echo -n . && sudo tmutil enablelocal  && sleep 1
/bin/echo -n . && sudo tmutil disablelocal && sleep 1
/bin/echo -n . && sudo tmutil enablelocal  && sleep 1
/bin/echo -n . && sudo tmutil disablelocal && sleep 1
/bin/echo -n . && sudo tmutil enablelocal  && sleep 1
/bin/echo -n . && sudo tmutil disablelocal && sleep 1
/bin/echo -n . && sudo tmutil enablelocal  && sleep 1
echo
df -h /

たとえばこのシェルスクリプトをdiskcompという名前で保存して実行権限を与えておき、環境変数PATHの通ったディレクトリにコピーしておく。

% echo $PATH
/Users/daichi/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
% pwd          
/Users/daichi/bin
% ls -l diskcomp
-rwxr-xr-x  1 daichi  staff  932  8 21 05:19 diskcomp
%

実行すると次のような結果が得られる。

% diskcomp 
Password:
Filesystem     Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
/dev/disk0s2  233Gi  140Gi   93Gi    61% 36679260 24390180   60%   /
................
Filesystem     Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
/dev/disk0s2  233Gi  129Gi  104Gi    56% 33806370 27263070   55%   /
%

あまり頻繁に実行して意味があることでもないので、新しい仮想環境を作ったり、サイズの大きめなデータをコピーしたり、ディスクの空き容量が気になったときに実施して本当の空き領域を確認するのに使ってみてはいかがだろう。