ブログ - ディスクフルに近くなったので不要ファイルを消そうとしたら35万ファイルもあった.
ディスクフルに近くなったので不要ファイルを消そうとしたら35万ファイルもあった.
- カテゴリ :
- Apple » mac mini » 2011 server
- ブロガー :
- ujpblog 2026/5/26 11:38
1年前,crucial MX200の500GBが故障して交換したサーバのストレージ,空き容量が少なくなってきた.

MRTGでみると綺麗な右肩上がり. 500GBのストレージだけど100GB程度から400GBほど増えてる.
このmacは防犯カメラからのメール通知情報をアーカイブ保管しているので,定期的クリーニング(除去)が必要なのでアーカイブファイルを移動させることにしたのだけど,そのアーカイブ,調べてみても60GBしかない. 340GB程度のファイルがどこにあるかわからない.
何がどこにあるのか調べてみることにした. まずはmacOSが持っているシステムレポート?のストレージ情報から.

システムが使っているとなっている. これだけだと不明なので,管理ボタンを押して確認.

やっぱり結局「システム」が使っている事になって詳細は不明.
ちなみにこの不要になったファイルを削除する機能でも,大きいファイル,ダウンロードファイルでも削除できそうなファイルは見つからなかった.
どこになんのファイルがあるかを視覚化してみせてくれるDisk Inventory Xを紹介されたのでインストール...不要でダウンロードして起動してみた.

起動してみたかけど調査が終わらない.
仕方ないので,コマンドを使って地道に調べる事に.

MRTGでみると綺麗な右肩上がり. 500GBのストレージだけど100GB程度から400GBほど増えてる.
このmacは防犯カメラからのメール通知情報をアーカイブ保管しているので,定期的クリーニング(除去)が必要なのでアーカイブファイルを移動させることにしたのだけど,そのアーカイブ,調べてみても60GBしかない. 340GB程度のファイルがどこにあるかわからない.
何がどこにあるのか調べてみることにした. まずはmacOSが持っているシステムレポート?のストレージ情報から.

システムが使っているとなっている. これだけだと不明なので,管理ボタンを押して確認.

やっぱり結局「システム」が使っている事になって詳細は不明.
ちなみにこの不要になったファイルを削除する機能でも,大きいファイル,ダウンロードファイルでも削除できそうなファイルは見つからなかった.
どこになんのファイルがあるかを視覚化してみせてくれるDisk Inventory Xを紹介されたのでインストール...不要でダウンロードして起動してみた.

起動してみたかけど調査が終わらない.
仕方ないので,コマンドを使って地道に調べる事に.
rootユーザに成り代わって,普通にルートディレクトリからduで調査してみた.
/privateディレクトリ配下を確認.
直感でtmpが怪しいと考えて確認.
大きめのファイルはあるものの,1GB程度だった.
次に/private/var/tmpを確認.
レスポンスがない.どうもファイル数が多い模様.
そんな時はfindコマンドでファイル数を確認.
X.emlというファイルが約36万ファイル.X.zipというファイルもほぼ同じ数存在している.70万ファイル以上あってこれがストレージ空き容量を圧迫し,結果的にmacのレスポンス性能を下げている原因の模様.
tmp以下のファイルなので,OS再起動すれば消えそうな気がする.
ちなみに,uptimeを確認するとこれ.
長い方かな.
サーバを再起動せずにこのファイルを消すとなると,rmコマンドだとArgument list too longがでてエラーになるので,findコマンドを使って消すこととする.
時間は20分程度かかった.
消えたかどうか確認.
調べると,これはmacOS High Sierraのバグで,High Sierraから導入されたファイルシステムのAFSとbuild_hd_indexというファイルのインデックス作成を行う機能でこのゴミファイルを作ってしまう模様. 最近のOSでは解消されているそう.
引用: 不要ファイルを消すためのシェル.DeleteTemp.shを準備.
実行してみた.
これをcrontabに登録しておくとクリーニングしてくれる事に.
mac:/ root# du -sh *🆑
1.3G Applications
29G Library
3.0K Network
6.4G System
37G Users
458G Volumes
2.5M bin
0B cores
4.5K dev
4.0K etc
1.0K home
4.0K installer.failurerequests
1.0K net
du: private/var/db/ConfigurationProfiles/Store: Operation not permitted
du: private/var/folders/5z/mkkqj8l13yg32k4lrxlh9cgr0000gr/0/com.apple.nsurlsessiond: Operation not permitted
du: private/var/folders/5z/mkkqj8l13yg32k4lrxlh9cgr0000gr/0/com.apple.routined: Operation not permitted
du: private/var/folders/sq/54r_jgb93dd4q95j7bdvb30r0000gn/0/com.apple.nsurlsessiond: Operation not permitted
du: private/var/folders/sq/54r_jgb93dd4q95j7bdvb30r0000gn/0/com.apple.routined: Operation not permitted
du: private/var/folders/sq/54r_jgb93dd4q95j7bdvb30r0000gn/0/SafariFamily: Operation not permitted
du: private/var/folders/sq/54r_jgb93dd4q95j7bdvb30r0000gn/C/com.apple.WebKit.Networking.Sandbox: Operation not permitted
du: private/var/folders/sq/54r_jgb93dd4q95j7bdvb30r0000gn/C/com.apple.WebKit.WebContent.Sandbox: Operation not permitted
du: private/var/folders/zz/zyxvpxvq6csfxvn_n00000y800007k/0/com.apple.nsurlsessiond: Operation not permitted
368G private🈁
1.1M sbin
4.0K tmp
3.9G usr
4.0K var
mac:/ root#mac:/ root# cd private🆑
mac:private root# ls -la🆑
total 0
drwxr-xr-x 6 root wheel 204 Jun 3 2025 .
drwxrwxr-t 35 root admin 1258 May 26 01:54 ..
drwxr-xr-x 96 root wheel 3264 May 26 01:12 etc
drwxr-xr-x 3 root wheel 102 Jun 3 2025 tftpboot
drwxrwxrwt 56 root wheel 1904 May 26 03:14 tmp
drwxr-xr-x 29 root wheel 986 Jun 3 2025 var
mac:private root#mac:var root# sudo du -sh /private/tmp/* | sort -rh | head -n 10🆑
264M /private/tmp/build_hd_index.3z3pRaKBlSG6E3TX
60M /private/tmp/StringTable.Names.dDyFJpc
48M /private/tmp/build_hd_index.wBkUjg6lBdkjwJZT
46M /private/tmp/build_hd_index.jJUp3R7Of9BaO1cq
46M /private/tmp/build_hd_index.UHPZAd0KNhQShiQ1
35M /private/tmp/StringTable.Names.njtCUQH
34M /private/tmp/StringTable.Names.zvaqjCE
34M /private/tmp/StringTable.Names.ezd1AZv
32M /private/tmp/build_hd_index.yw3O5IkN9a2wc7T8
23M /private/tmp/StringTable.Names.L3WU0kD
mac:var root#
次に/private/var/tmpを確認.
mac:var root# sudo du -sh /private/var/tmp/* | sort -rh | head -n 10🈁
^C
mac:var root#そんな時はfindコマンドでファイル数を確認.
mac:var root# sudo find /private/var/tmp -maxdepth 1 | awk -F/ '{print $NF}' | sed -E 's/[0-9_-]+/X/g' | sort | uniq -c | sort -rn | head -n 20🆑
357256 X.eml
356473 X.zip
20 iTermX.socket.X
1 tmp
1 quicklookdXexitXACXFFXDCXCXAXEAX.tailspin
1 filesystemui.socket
mac:var root#
tmp以下のファイルなので,OS再起動すれば消えそうな気がする.
ちなみに,uptimeを確認するとこれ.
mac:var root# uptime🆑
11:14 up 244 days, 7:42, 7 users, load averages: 1.97 2.05 2.08
mac:var root#
サーバを再起動せずにこのファイルを消すとなると,rmコマンドだとArgument list too longがでてエラーになるので,findコマンドを使って消すこととする.
mac:var root# sudo find /private/var/tmp -maxdepth 1 -name "*.eml" -delete
mac:var root# sudo find /private/var/tmp -maxdepth 1 -name "*.zip" -delete
mac:var root#
消えたかどうか確認.
mac:var root# sudo find /private/var/tmp -maxdepth 2 | cut -d/ -f1-5 | sort | uniq -c | sort -rn | head -n 10🆑
1 /private/var/tmp/quicklookd_exit_7AC643FF-AAAA-46C2-A516-XXXX0609ZZZZ.tailspin
1 /private/var/tmp/iTerm2.socket.94829
1 /private/var/tmp/iTerm2.socket.93570
1 /private/var/tmp/iTerm2.socket.9070
1 /private/var/tmp/iTerm2.socket.903
1 /private/var/tmp/iTerm2.socket.902
1 /private/var/tmp/iTerm2.socket.900
1 /private/var/tmp/iTerm2.socket.8505
1 /private/var/tmp/iTerm2.socket.8495
1 /private/var/tmp/iTerm2.socket.8492
mac:var root#引用:
High Sierraの頃は、/private/var/tmp というシステム共通の場所にさまざまなアプリ(Mailなど)が直接一時ファイルを書き込んでいたため、アプリがクラッシュした際に「誰のゴミか分からずシステムも消せない」という状態に陥っていました。現在のmacOSでは、アプリはシステム共通の場所ではなく、アプリごとに完全に隔離された専用のコンテナ領域(~/Library/Containers/ などの内部)に一時ファイルを作るようセキュリティ構造(サンドボックス)が強化されました。万が一アプリがクラッシュしても、そのアプリが次に起動した際や、OSの自動メンテナンスによって、その隔離領域ごと安全かつ確実に掃除される仕組みに変わっています。
echo "=== 処理を開始します(root権限) ==="
echo "1. 削除前のファイル数をカウント中..."
before_eml=$(find /private/var/tmp -maxdepth 1 -name "*.eml" -mtime +0 | wc -l)
before_zip=$(find /private/var/tmp -maxdepth 1 -name "*.zip" -mtime +0 | wc -l)
echo "2. 1日前以上の古いファイルを削除中(数分かかる場合があります)..."
find /private/var/tmp -maxdepth 1 \( -name "*.eml" -o -name "*.zip" \) -mtime +0 -delete
echo "3. 削除後のファイル数をカウント中..."
after_eml=$(find /private/var/tmp -maxdepth 1 -name "*.eml" -mtime +0 | wc -l)
after_zip=$(find /private/var/tmp -maxdepth 1 -name "*.zip" -mtime +0 | wc -l)
echo ""
echo "=== 作業結果レポート ==="
echo "【.eml ファイル (1日前以上)】"
echo " 作業前: ${before_eml} 個 -> 作業後: ${after_eml} 個 (削除数: $((before_eml - after_eml)) 個)"
echo "【.zip ファイル (1日前以上)】"
echo " 作業前: ${before_zip} 個 -> 作業後: ${after_zip} 個 (削除数: $((before_zip - after_zip)) 個)"
echo "========================"
mac:bin root# ./DeleteTemp.sh🆑
=== 処理を開始します(root権限) ===
1. 削除前のファイル数をカウント中...
2. 1日前以上の古いファイルを削除中(数分かかる場合があります)...
3. 削除後のファイル数をカウント中...
=== 作業結果レポート ===
【.eml ファイル (1日前以上)】
作業前: 528 個 -> 作業後: 0 個 (削除数: 528 個)
【.zip ファイル (1日前以上)】
作業前: 0 個 -> 作業後: 0 個 (削除数: 0 個)
========================
mac:bin root#

