【Linux】Ubuntuの不要ファイルを徹底的に削除する
Ubuntuで色々やっていると、だんだんSSDの容量を圧迫してきました。
512GBしかないSSDをWindows用とよく使う動画データ用とUbuntu用で3つにパーティション分割している上に、WindowsパーティションにSolidworksやらFusionやらInventerやらUnityやら重たいソフトばっかり入っているので、どーしてもUbuntuに割くことのできる容量が少なくなってしまい、すぐ容量いっぱいになってしまうんです。
ちなみにですが、使用しているUbuntuはこちら:
では本題。
まずは使用容量と空き容量の確認
$ sudo du / -h -s # 現在使用している容量を取得 75G $ df / -h Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 ext4 82G 75G 7G 95% /
パーティションサイズが82GBでそのうち75GBも使ってました。ひえー
不要なアプリケーションを削除
これは簡単。以下のコマンドを実行するだけ
$ sudo apt autoremove # 更新に伴い必要なくなったパッケージを削除 $ sudo apt clean # キャッシュされている全てのdebファイルを削除
ndcuで巨大ファイルを削除
sudo apt-get install ncdu -y
でインストールします。
cd /; ncdu
を実行すると、以下のように表示されます。
`du`コマンドなどと違って、ファイルの大きさがグラフで表示されており、しかもサイズが大きい順にソートされているのでわかりやすいです。
- 上下矢印:フォルダ or ファイル選択
- 左矢印:上の階層に移動
- Enter:選択中のフォルダに入る
- d : フォルダ or ファイルの削除
- q : ncduを終了
のようなコマンドを駆使して、大容量の不要ファイルを見つけて削除していきます。
?を入力するとヘルプ画面が表示されます
不要なDockerイメージを削除
`dockrer ps -a` とか `docker images`とかを打ちながら、もう使っていないDockerコンテナ/イメージを削除します。
$ docker ps -a #コンテナ一覧 $ docker images # イメージ一覧 $ docker rm [container] # コンテナ削除(その前にdocker stop [container]でコンテナ停止が必要) $ docker rmi [image] # イメージ削除
上記のようなコマンドを一括で行うには
$ docker system prune -a
を実行します。これを実行すると以下の内容が削除されます:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Android emulatorのDocker Imageが11GBくらいあったので、思い切って削除しました。
MySQLのデータベース削除
$ mysql --version mysql Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) $ sudo mysql -u root -p; mysql> show databases; mysql> drop database [hoge]; ...... mysql> quit
みたいな感じでMySQLの不要なテーブルやデータベースを削除していきます。
最終的に残ったデータベースはこれだけになりました。↓(おそらくデフォルト?)
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+
各種ログ削除
ここから、各アプリケーションのログを削除していきます。
`/var/cache/ `とかに入っている場合が多いのかなぁ...
Slack
どこにあったかはメモしていなかったためわかりませんでしたが、どこかにSlackフォルダがあってそこにlogがあったので全部消しました。
//TODO:どこだっけ?
MySQL
MySQLのログは/var/lib/mysqlにバイナリーログとしてあるようです。Linuxのrmコマンドを使ってもいいのかもしれませんが、怖いのでこうしました:
mysql> SHOW BINARY LOGS; +---------------+-----------+-----------+ | Log_name | File_size | Encrypted | +---------------+-----------+-----------+ | binlog.000186 | 85478899 | No | (略 100ファイルくらいあった) | binlog.000321 | 1531 | No | | binlog.000322 | 574 | No | +---------------+-----------+-----------+ 137 rows in set (0.07 sec) mysql> PURGE BINARY LOGS TO 'binlog.000322'; Query OK, 0 rows affected (0.07 sec) mysql> SHOW BINARY LOGS; +---------------+-----------+-----------+ | Log_name | File_size | Encrypted | +---------------+-----------+-----------+ | binlog.000322 | 574 | No | +---------------+-----------+-----------+ 1 row in set (0.00 sec)
2つ目のコマンド、「PURGE BINARY LOGS TO 'binlog.000322';」で「binlog.000322よりも古いログを消す」という操作を実行しています
いい感じです。
snap関連を削除
これはしないほうが良いかも?
$ sudo apt purge snapd sudo rm -rf /var/cache/snapd/
結果
再度dfコマンドを実行した結果:
$ df / -h Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 ext4 82G 25G 53G 33% /
おお〜〜!!!
個人的には、MySQLのログとDockerの不要コンテナ削除が大きかった気がします。