【Linux】意外と気付かないディスク容量圧迫の原因:Trash

【Linux】意外と気付かないディスク容量圧迫の原因:Trash Linux
スポンサーリンク

今回は、先日ディスク容量に悩まされたので、ディスク容量圧迫の原因についてまとめます。

先日仮想環境VirtualBoxでDebianを使用していたら、

知らぬ間にディスク容量が95%になっており、何が原因がつかめず悩みました。

しかし、調べまくった結果、原因は「ゴミ箱」でした。

それでは、詳しく解説します。

発生した問題と開発環境

問題が起きた原因は、以下の環境です。

仮想環境:VirtualBox【バージョン 6.0.14 r133895 (Qt5.6.2)】

LinuxOS:Debina

ホストOS:Windwos10

ディスク容量の状況

User@Debian:~$ df -h

/dev/mapper/Debian–vg-root 31G 27G 1.7G 95% /

容量の原因は「ゴミ箱」

ディスク容量がいっぱいになった時は、以下のファイルパスを確認してみてください。

ファイルパス: /home/User/.local/share/Trash/

(※Userは皆さん使用している環境のユーザー名を入力してください。)

以下のようなGUIを使用している人は、よく見る「ゴミ箱」ではありません。

Linux_Trash

このファイルパスにあるゴミ箱は、「管理者のゴミ箱」です。

どのタイミングで、「管理者のゴミ箱」にファイルが格納されるのでしょうか。

答えは、「ログインユーザーが管理者権限でファイルを削除したとき」です。(まんまですね。)

ログインユーザーでファイルの削除をする場合

・rmコマンドのみで削除できるファイル:ユーザーのゴミ箱(上記の画像)

・sudo rmで管理者権限を伴い削除したファイル:ユーザのゴミ箱にはいかず、「管理者のゴミ箱」に移動

上記のファイルパスを確認してみると以下の3つのディレクトリがあります。

User@Debian:~$ ls -l /home/User/.local/share/Trash/
合計 28
drwx------ 22 User User 4096  5月  30 14:50 expunged
drwx------  6 User User 12288  5月  30 14:51 files
drwx------  2 User User 12288  5月  30 14:51 info

このディレクトリの容量を調べてみましょう。

User@Debian:~$ sudo du -s -h /home/User/.local/share/Trash/* |sort -n
5.8M	/home/User/.local/share/Trash/files
15G	/home/User/.local/share/Trash/expunged
44K	/home/User/.local/share/Trash/info

ここがディスク容量を圧迫していた原因でした。

それぞれ説明していきます。

/home/User/.local/share/Trash/expunged

このディレクトリに関する情報は、調べても一切ヒットしなかったので、まとめます。

私の環境でディスク容量が圧迫していた原因は、.local/share/Trash/expungedにありました。

このファイルに何が入っていたかと調べてみました。

User@Debian:~$ sudo ls -l /home/User/.local/share/Trash/expunged/
合計 80
drwx------ 14 User User 4096  5月 28 13:34 1267574603
drwx------ 14 User User 4096  5月 28 11:12 1436928464
drwx------  4 User User 4096  5月 28 14:10 2197676137
drwx------ 13 User User 4096  4月  1 08:19 2781978847
drwx------ 14 User User 4096  5月 27 11:58 2803165290
drwxrwxrwx  4 root   root   4096  4月  1 08:19 2899766730
drwx------ 13 User User 4096  4月  1 08:19 3227185015
drwx------ 14 User User 4096  5月 28 13:53 3259714353
drwxrwxrwx  4 root   root   4096  4月  1 08:19 3472617615
drwx------ 14 User User 4096  5月 28 14:37 3506982058
drwx------ 13 User User 4096  4月  1 08:19 3630424732
drwx------  3 User User 4096  4月  1 08:19 3637541275
drwx------ 14 User User 4096  5月 28 15:28 3773794587
drwx------ 14 User User 4096  4月  1 08:19 3847952378
drwx------ 13 User User 4096  4月  1 08:19 461281774
drwx------ 12 User User 4096  4月  1 08:19 501081716
drwx------ 14 User User 4096  5月 27 11:58 725418797
drwx------ 14 User User 4096  5月 28 14:13 936609419
drwx------ 14 User User 4096  5月 27 11:58 972273848
drwx------ 14 User User 4096  4月  1 08:19 974106353

何やら、謎の数値ファイルが格納されていました。

この内容を確認すると、ルートファイルシステムを作成に失敗したときの残骸が残っていました。

作成したルートファイルシステムの全てが入っいたわけではなく、ルートファイルシステムの一部が入っていました。

そのファイルは、管理者でないと削除できない場合や、ファイルに実行権(chmod -x)が付与されていないファイル群がありました。

このことから、実行権の関係で削除できなかったファイル、もしくはrootユーザー以外では削除しきれないファイルがここへ移動するみたいです。

その結果、ごみが積もりに積もってディスク容量を圧迫していました。

このディレクトリ以下のファイルは削除しても、システムに問題ありません。

Linuxのディスク容量を圧迫している場合は、削除してももんだないでしょう。

以下のコマンドで削除できます。

User@Debian:~$ sudo ls -l /home/User/.local/share/Trash/expunged/*

/home/User/.local/share/Trash/files

このディレクトリには、管理者で削除された実際のファイルが存在します。

User@Debian:~$ ls -l /home/User/.local/share/Trash/files/
合計 489996
-rw-r--r--  1 User User       210  2月  4 00:59 sample.c
-rw-r--r--  1 User User        35  3月  1 22:03 sudo
-rw-r--r--  1 User User      8278  2月 12 00:24 temp.2.txt
-rw-r--r--  1 User User     11351  2月 12 01:07 temp.3.txt
-rw-r--r--  1 User User     10066  2月 11 23:41 temp.txt
-rw-r--r--  1 User User         2  2月  3 01:04 test
多いため割愛

このディレクトリに存在するファイルは、ログインユーザーのゴミ箱には移動せず、このディレクトリに移動します。

このディレクトリもディスク容量圧迫の原因になるので、削除しても構いません。

以下のコマンドで削除してしまいましょう。

User@Debian:~$ sudo ls -l /home/User/.local/share/Trash/files/*

/home/User/.local/share/Trash/info

このディレクトリは、削除されたファイル情報が書かれたファイルが存在します。

User@Debian:~$ ls -l /home/User/.local/share/Trash/info/
-rw-r--r-- 1 User User  73  3月  1 12:46 sample.c.trashinfo
-rw-r--r-- 1 User User 124  4月 18 09:37 sudo.trashinfo
-rw-r--r-- 1 User User 145  2月 12 00:30 temp.2.txt.trashinfo
-rw-r--r-- 1 User User 145  2月 12 01:09 temp.3.txt.trashinfo
-rw-r--r-- 1 User User 145  2月 11 23:55 temp.txt.trashinfo
-rw-r--r-- 1 User User  74  3月  1 12:46 test.trashinfo

先程の/home/User/.local/share/Trash/files/に対応したファイルに関するinfoファイルが格納されています。

このファイルに何が書かれているのか確認しましよう。

User@Debian:~$ cat /home/User/.local/share/Trash/info/sample.c.trashinfo 
[Trash Info]
Path=/home/User/sample.c
DeletionDate=2020-03-01T12:46:31

書かれている内容は、「削除前のファイルパス」「削除したときのタイムスタンプ」が書かれています。

もちろんこのディレクトリ以下のファイルも削除しましょう。

User@Debian:~$ sudo ls -l /home/User/.local/share/Trash/info/*

/home/User/.local/share/Trash/を整理した結果

管理者のゴミ箱:/home/User/.local/share/Trash/を整理した結果、以下の通りディスク容量が増えました。

User@Debian:~E$ df -h

/dev/mapper/Debian–vg-root 31G 7.8G 21G 28% /

いやー、これで一安心ですよ。

Linuxディスク容量圧迫原因を調べる

以下に個人的にオススメな、Linuxディスク容量を確認するために使用したコマンドを紹介します。

ハードディスクのベンチマークを知る方法も以下にまとめたので、参考にしてみてください。

dfコマンド

ディスク全体の空き容量を調べるコマンド

オプション-hを使用すると、Linuxディスク空き容量を人に見やすい形式で出力してくれます。

私はオプション-hよく使用します。

【コマンド】 df -h

mint@mint-VirtualBox:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            457M     0  457M   0% /dev
tmpfs            99M  1.1M   98M   2% /run
/dev/sda1        16G  6.7G  8.2G  46% /
tmpfs           492M     0  492M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           492M     0  492M   0% /sys/fs/cgroup
tmpfs            99M   16K   99M   1% /run/user/1000
/dev/sr0         74M   74M     0 100% /media/mint/VBox_GAs_6.0.14

duコマンド

ディスク使用量をファイルごとに算出します。

基本的に

私がおすすめなのが、以下の使い方です。

アクセス制限を避けるためsudoコマンドを使用し、duコマンドの結果を降順に表示します。

/*の部分は、自分が検索したいファイルパスを指定します。例:/etc/*など

sudo du -s -h /* |sort -n

mint@mint-VirtualBox:~$ sudo du -s -h /* |sort -n
0	/dev
0	/initrd.img
0	/initrd.img.old
0	/proc
0	/sys
0	/vmlinuz
1.1M	/run
4.0K	/cdrom
4.0K	/lib64
4.0K	/mnt
4.0K	/srv
4.6G	/usr
7.5M	/home
15M	/etc
16K	/lost+found
16M	/bin
19M	/sbin
21M	/opt
36K	/root
72K	/tmp
74M	/media
82M	/boot
601M	/lib
630M	/var
760M	/swapfile

こちらは、先ほどと違いduコマンドの結果を、昇順に並び替えます。

sudo du -s -h /* |sort -nr

760M	/swapfile
630M	/var
601M	/lib
82M	/boot
74M	/media
72K	/tmp
36K	/root
21M	/opt
19M	/sbin
16M	/bin
16K	/lost+found
15M	/etc
7.5M	/home
4.6G	/usr
4.0K	/srv
4.0K	/mnt
4.0K	/lib64
4.0K	/cdrom
1.1M	/run
0	/vmlinuz
0	/sys
0	/proc
0	/initrd.img.old
0	/initrd.img
0	/dev

コマンドの勉強で参考にした本は以下の本を使いました。

Linuxシステム全体を把握するためには、以下の本がおススメ。

最後に

今回は、意外に見落としがちなディスク容量を圧迫する原因として、ゴミ箱を紹介しました。

私は、この存在に気付かずに、いつの間にかディスク容量が圧迫していました。

もし、あまり容量をとるようなファイルを置いてないのに、ディスク容量が圧迫してきたなと感じたら、「管理者のゴミ箱」を確認してみてください。

コメント

  1. しまお より:

    本ページ、大変参考になりました。

    一点、ファイル削除のコマンドはlsではなく、rmではないでしょうか?
    lsだとファイルの表示のみでとどまってしまいます。

    sudo ls -l /home/User/.local/share/Trash/expunged/*
    の箇所を

    sudo rm -rv /home/User/.local/share/Trash/expunged/*

    に修正されると良いかと思います。

    以上、よろしくお願いいたします。

タイトルとURLをコピーしました