Macのディスクの容量がいっぱいです
どんな大容量SSDのMacを使っていてもなぜか定期的に遭遇するこの問題。
やはりこのご時世で自宅作業が増えたことでディスク容量が増える速度も以前とは比べ物にならないようです。 今日ビルド中に残り300MBになってすごくハラハラしました。
というわけで個人的な対処方法をまとめておきます。
システム情報から管理画面を開く
最近のmacOSには便利な機能がついて、ストレージタブの「管理...」をクリックするとこういう画面が出てきます。 ここでオススメされたものを消したりします。
ファイルサイズが大きいものを表示するビューもあります。
ですが、大抵これだけでは不十分なので、以下の通り泥臭い作業が必要になります。
キャッシュ発掘作業
時間はかかりますがターミナルから以下の要領で容量を食っているディレクトリを特定するのが一番近道です。
$ du -d 1 . | sort -nr | head 99739072 . 66876560 ./Library 8222944 ./.android 7003920 ./.cocoapods 3556704 ./work 3223392 ./.gradle 2604432 ./Documents 1632552 ./.cabal 1435632 ./dev 1427656 ./Software
いうまでもないと思いますが一番左の数字がざっくりとした容量です。 -h
をつけるとGB,MBなどの表示になり見やすくなりますがあんまり気にしないと思うのでそのまま行きます。
Library/
が一番重いので、掘り下げていきます。
$ cd Library/ $ du -d 1 . | sort -nr | head 66908920 . 21692480 ./Android 20229192 ./Developer 10662456 ./Caches 10046112 ./Application Support 2207200 ./Containers 1090392 ./Ethereum 251632 ./Safari 163784 ./MediaStream 135144 ./Group Containers
大抵は Cache
とか cache
ディレクトリが見つかるので、要領を食っていて消して大丈夫そうなものはどんどん掃除していきます。自分の場合は使わなくなったツールのキャッシュとかよく残っていますね。
コマンドにまとめる
上記作業をするとなんとなく傾向が見えてくると思うので、aliasやコマンドにまとめておくと良いと思います。
自分の場合は以下のような感じで ~/.bashrc
にまとめています。
最近はiOSとAndroidを触ることが多いのでそれ関連が増えてきてました。
function removeCaches() { rm -rf `brew --cache` rm -rf ~/Library/Developer/Xcode/DerivedData/ rm -rf ~/Library/Developer/CoreSimulator/Caches/* rm -rf ~/Library/Developer/Xcode/iOS\ Device\ Logs/* rm -rf ~/Library/Caches/org.carthage.CarthageKit/ rm -rf ~/Library/Caches/CocoaPods/ rm -rf ~/.gradle/caches/* # Simulatorを個別にダウンロードした場合にdmgが溜まっていた rm -rf ~/Library/Caches/com.apple.dt.Xcode/Downloads/* }
以上の作業をこの記事を書きつつ大体1時間くらい続けて13GB程度は確保することができました。 Xcodeをアップデートする時に空き容量がXcode自体の倍はないと要領不足で失敗するので、これくらいがギリギリ許容範囲だと思います。
ご覧の通り2TBのHDDもマウントしているし500GBの外付けSSDも持っているので、もっと活用するべきなのかもしれません。 キャッシュディレクトリの変更機能とかあれば便利なのかもしれないですが、HDDをキャッシュディレクトリにしたら読み出し速度も遅いし、キャッシュとしては本末転倒は気はしますよね..
他の要領節約ハック
筆者は他にも以下のようなハックをしてdisk容量をケチケチ節約しています。ご参考まで!
- 写真ライブラリはHDD側に
- iOSシミュレータのランタイムもHDD側に
結論
会社のMacと同じように迷わず256GBのSSDにアップグレードすればよかった!と思ってますが、容量あったらあったでなぜか使い切ってしまうんですよねえ。。不思議なものです。 定期的にクリーンアップして開発中に困らないようにしたいと思います。