Mac OS X で /var/folder の中身を削除したら画面からアイコン画像が消失した

Mac OS X で /var/folder の中身を削除したら画面からアイコン画像が消失した#interest_aeおがた (@xtetsuji) です。

今回は完全に「やっちゃダメ」シリーズと、日頃からどうするべきか考えるシリーズ。

/var/folders 消してアイコンが消えていった事件

酔っていて電車に座れたので、MacBook Airを開いてファイル整理をしていたんですが、find / -size +250MB などとして無駄な大きなディレクトリを探そうとしていたら、”/var/folders” というのがあって、中を見ても明らかにキャッシュでしかなかったので躊躇なく rm -rf しました。

そうしたら、しばらくしたらドックや(Command-Tabで出てくる)タスクスイッチャーや、デスクトップ上のアイコン画像がどんどん消え始めました。名前だけ出てきてアイコンはないけど存在しないはずのアイコンの影はあるといった感じ。Finderから見えるファイルのアイコンも消えていきました。恐ろしい!

ドックから消えたアイコン画像

Windowsでも似たようなことがあったときに再移動したらアイコンキャッシュが戻ったので再起動してみたものの、全く直る様子なし。

あとで調べてみたら、やはり /var/folders はキャッシュディレクトリのようでした。例えば 新・OS X ハッキング! (56) 新世代のOS Xユーザへ(4):情報の宝庫「/var」 | マイナビニュース が詳しい。その他にも /var/folders で検索してみると出てくるのですが、これ関連でトラブルに陥って結局直せない人が多いという印象でした。前出の記事ではログアウトしたら消えるディレクトリのはずが、再起動しても戻らなかったりしました。

私も色々やってみた挙句、自分の症状も治らなかったので、結局6日前に取っていたTime Machineのバックアップを引き上げて復帰させたという感じ。ちょうど平日は仕事で忙しくてそれほど個人用MacBook Airにファイルを置いたりしていなかったので、まだ傷口が浅かったです。

ちなみにTime Machineからの復元方法は、いったんMacを終了させて、Time Machineディスクをつないでおいて電源投入時にCommand-R を押しっぱなしで起動させること。これで復元ウィザードが出るので、あとは画面に従って復帰していきます。この方法だとOSイメージごとまるまる復元されるので、たとえばMountain LionのTime MachineイメージをMavericksに復元させるとMountain Lionに戻るくらいまるまる書き換えてくれるものです。

とりあえず6日前に戻して、あとは取り戻す必要のあるファイルを、GitHubやBitbucketから取ってきたり、Dropboxを同期させたりして対応しました。

既にトラブルが起こっているときにTime Machineを接続して、その時の記録も取られているので、バージョン管理やオンラインストレージの管理下ではないディレクトリのファイルも部分的にTime Machineで取り戻せるとは思いますが、まぁ自分の場合は6日の変更内容がほとんどGitHub、BitBucket、Dropbox上のものだったので助かった感じ。

教訓

  • /var/folders はキャッシュディレクトリだけど、巨大だからといって軽く扱ってはダメ
  • Time Machineは日頃から励行したい
  • 何かあったときに面倒なので、Time MachineディスクはローカルUSB接続が面倒だけど速いしオススメ
  • ファイル類はなるべくバージョン管理して外に出すようにして、GitHubやBitbucketに日々pushする習慣をつけておくとよい。またDropboxなどのオンラインストレージを活用するのもよい
  • Google Chromeのオンライン同期は素晴らしい。ブックマークとかは直前のものがそのまま同期された
  • 酔ってパソコンを操作するときは、ファイル整理とか失敗すると危険な作業はしない

色々と教訓を得ることができました。

Mac OS X で /var/folder の中身を削除したら画面からアイコン画像が消失した」への2件のフィードバック

  1. ピンバック: [Mac]アプリケーションのアイコンが消えてしまった。結局Time Machineで復旧。 | 先走れカート

  2. ピンバック: Cyberduck(ファイル転送ツール)で作成したファイルがローカル開発環境上に転送できない – エコテキブログ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です