とある科学の備忘録

とある科学の備忘録

CやPythonのプログラミング、Arduino等を使った電子工作をメインに書いています。また、木製CNCやドローンの自作製作記も更新中です。たまに機械学習とかもやってます。

【Linux】Ubuntuの不要ファイルを徹底的に削除する

Ubuntuで色々やっていると、だんだんSSDの容量を圧迫してきました。
512GBしかないSSDWindows用とよく使う動画データ用とUbuntu用で3つにパーティション分割している上に、WindowsパーティションSolidworksやらFusionやらInventerやらUnityやら重たいソフトばっかり入っているので、どーしてもUbuntuに割くことのできる容量が少なくなってしまい、すぐ容量いっぱいになってしまうんです。


ちなみにですが、使用しているUbuntuはこちら:
f:id:pythonjacascript:20210409235433p:plain

では本題。

まずは使用容量と空き容量の確認

$ 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

を実行すると、以下のように表示されます。

f:id:pythonjacascript:20210409235725p:plain

`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よりも古いログを消す」という操作を実行しています
いい感じです。

参考:https://www.casesup.com/category/knowledgebase/howtos/how-to-remove-and-purge-old-mysql-binary-log-files



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の不要コンテナ削除が大きかった気がします。