ディスク領域の使用量を最小化するにはどうすればよいですか


29

私のマシンの1つは、非常に限られたリソースを持つきちんとしたネットブックである2GB EeePC Surfです。そのため、現時点では22MBの空き容量が残っています。

そので、Openbox DEとモバイルPCとして機能するために必要な多くのアプリケーションでArch Linuxを実行しています。

不要な使用済みスペースを排除する方法はありますか?


@StefanにはどのくらいのRAMがありますか?(ラムに/ tmpのようなものを入れることが実行可能かどうか疑問に思う)
xenoterracide

1
あなたは...のbtrfsはおそらく圧縮されたファイルシステムを実験的ルートを行くために喜んでサポートしている(?またはに起こっている)場合も...多分それをチェックアウト@Stefan
xenoterracide

またdu -sh /、@ stefanを使用して、スペースのほとんどが使用されている場所を確認できます。
xenoterracide

@ xeno、490MB RAM、それはdu -sh /*
ステファン

それはそう...おっと...あなたができるの@Stefan cd /と実行du -sh *(あなたが本当にそれで店舗スタッフへの十分なRAMを持っていない)...とドリルダウン
xenoterracide

回答:


19

始めることができるいくつかのポイントはここにあります:

  • システムにインストールされているパッケージを確認し、pacman -Q不要なパッケージを削除します。良い出発点は、-t スイッチを追加することです。

    現在インストールされているパッケージで不要なパッケージに出力を制限またはフィルターします。

  • pacmanのパッケージキャッシュを消去します pacman -Sc

  • pacman -Rs未使用のパッケージ依存関係も削除するために常に使用します。

  • ディスクの大部分を使用する「大きなファイル」およびフォルダを見つけるには、に追加するのduがよいでしょうxdiskusage。この小さなツールを使用すると、ファイルシステムをすばやく参照し、フォルダのディスク使用量をグラフィカルに表示できます。


pacman -ccインストールされたパッケージを含むキャッシュ全体をきれいにするために。後でバックアップとして必要になる場合があるため、通常はお勧めしません。
xenoterracide

@xeno、すでにデスクトップにディレクトリをマウントしている--cachedirので、pkgファイルを保持する必要はありません。
ステファン

3
上のスペースをクリアするには/pacgraph本当に便利だと思いました。インストールされたパッケージをサイズで並べ替えることができるため、削除する意味があるものに優先順位を付けることができます。(SVG依存関係グラフを描画することもできますが、コマンドラインからのみ有効です。)
Anko

4
ncduは、の優れたコマンドラインの代替xdiskusageです。しかし、バオバブはこの目的のために断然最高のグラフィカルなアプリです。
ザズ

10

警告:これらのアイデアは、Linux全体とArch Linuxの両方に精通しているユーザー向けです。

危険な領域に踏み込む気があるなら、Archの基本インストールを500MB未満にスリム化できます。これには、いくつかの非常に危険なことを行う必要があります。

  1. 不要なロケールをすべて削除する(すでにカバーされている)
  2. システムの実行に不要なファームウェアファイルを削除する(から/usr/lib/firmware
  3. システムの実行に不要なカーネルモジュールの削除(から/usr/lib/modules/...
  4. .aファイルを削除する/usr/lib(システムを使用してソフトウェアをコンパイルしたことがない場合のみ。注:これにはの使用が含まれますmakepkg
  5. すべてを削除/usr/include(システムを使用してソフトウェアをコンパイルしたことがない場合のみ)
  6. 不要な文書を削除/usr/share/docし、/usr/share/info
  7. (サーバー用でない限り非常に悪いアイデア)からmanページを削除する /usr/share/man
  8. (これも悪い考えです)から不要な端末記述子を削除し/usr/share/terminfo、不要なタイムゾーンファイルを/usr/share/zoneinfo
  9. (危険)実行strip *可能バイナリ(/usr/binおよび/usr/sbin)を含むすべてのフォルダーで実行中
  10. (極端な状況で)のようなツールを使用して、upx使用していることも大きなバイナリ(彼らは非常に大きくなる傾向があるとして、彼らは多くの場合、静的にコンパイルされているので、Sambaのバイナリは、このほかに自分自身を貸す。)ノートを圧縮するupx全体圧縮されていないバイナリを意味することに適合しなければなりません実行中のRAM。したがって、RAMが少ないシステムには疲れます。

これを行う前に、システムの完全なバックアップを作成してください。ありがたいことに、Linuxはこれを比較的簡単にします。外部ボリューム(USBドライブなど)をアタッチしてマウントできる場合cd / && tar -cf /mnt/usb/mySystem.tar /は、システム全体のバックアップなどを行うことができます。

繰り返しますが、Linuxの内部とArch Linuxについての深い知識、経験、理解がない限り、上記(特に7から9)を行うことは実際にお勧めしません。私がリストしたファイルのどれかで遊んでいると、システムに恐ろしいダメージを与える可能性があるので、警告されています。システムに特定のファームウェアファイル、モジュールなどが必要かどうかわからない場合は、混乱する前に調査を行ってください。(システムに必要なカーネルモジュールを削除すると、システムが起動不能になったり、キーボード/ネットワークカード/サウンド/ディスプレイ/などのサポートのないシステムになったり、その他の説明できない動作が発生する可能性があります。

また、パッケージをアップグレードすると、上記で削除したファイルの多くが復元できることに注意してください。この方法を採用することにした場合は、最終的に不要なファイルの削除をスクリプト化し、主要なパッケージをアップグレードするたびにスクリプトを実行することをお勧めします。(例:カーネルをアップグレードすると、すべてのカーネルモジュールが戻され、依存関係を介してlinux-firmwareパッケージがアップグレードされ、すべてのファームウェアが戻され/usr/lib/firmwareます。)

最後に、/var/logジャーナルファイルが時間とともに大きくなるので注意してください。過去のジャーナルを削除することはできrm *\@*.journalますが、ジャーナルフォルダー内で何かを行うことで現在のジャーナルを保持することができます。

これらの手法を使用して、数か月間、512MBのDisk-on-ModuleデバイスからNASサーバーを正常に実行しましたが、まだ気弱な人向けではありません。(LinuxFromScratchを使用して、128MBのストレージで同様のプロジェクトを構築しましたが、それは別の話です...)


編集/追加:

余分なスペースを取得するために使用できるいくつかの方法を次に示します。

  • を取り除くlibgo。このlibgoライブラリは付属してgcc-libsおり、Go言語で記述されたアプリケーションでのみ使用されます。そのライブラリを必要とするアプリケーションは考えられません。私のシステムでは、サイズは40MBです。スリムにしようとするとき、それは多くのスペースです。私は「ミニ」インストールからそれを削除しましたが、私がやることには何の悪影響もありません(しかし、これは私、YMMVです!)

  • 縮みlibicudata.soます。私のシステムでは27MBです。基本的に、ライブラリオブジェクトに圧縮された大量のUnicode /ロケールデータです。このファイルの小さいバージョンを作成できるオンラインのツールがありますが、現在のバージョンに合わせて更新されていません(そして、新しいリリースでは古いファイルを使用できません)。方法がわかれば、このファイルを約20〜22MB削ることができます。

  • Pythonを使用する場合test、python2:からライブラリをrm -r /usr/lib/python2.7/test削除することで37MB程度、python3:でライブラリを削除することで約66MB節約できますrm -r /usr/lib/python3.6/test

  • Pythonの場合も、.pyoファイルと.pyファイルを削除できます。.pyoファイルは、「最適化」のファイルですが、Pythonは実際にそれらを使用することはありません。.pyファイルは、標準ライブラリのための生のソースコードです。Pythonコードの実行時にPythonが通常読み取るファイルは、.pyc(pythonでコンパイルされた)ファイルのみです。cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;そしてcd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • 不要なロケールデータを削除します。これlocalepurgeを自動化するAURパッケージがあります。それ以外の場合は、で遊ぶ必要があります/usr/share/locale。独自のロケールとを維持する必要がありますlocale.alias。私にとっては、ここ米国では、維持en_USlocale.aliasし、80メガバイト程度削ら他のすべてを削除します。

さて、私が見たいのは、システムを分析し、必要なカーネルモジュールと、必要なファームウェアファイルを決定するツールです。それはそれらのフォルダを「安全に」きれいにする良い方法でしょう...

または、誰かがArchの「ディストリビューション」を使用するuClibcか、diet-libcまたは類似の何かを作成する必要があるかもしれません。それは楽しい夏のプロジェクトかもしれません。:-)


2
私もこれに興味があります..ファームウェアは私にとって最大の利益のようです、私は小さな浮浪者ボックスを作ろうとしているので、virtualboxでarchを実行するのに必要なファームウェアだけが必要です...簡単な方法がありますどのファームウェアが必要ですか?
トムB

警告:試したupxだけで、すべてのタイプの実行可能ファイルでうまく動作しません。例:mysqldとmongodbがセグメンテーション違反のままになった
Ayush

3
re:パッケージのアップグレードにより、削除したファイルの多くを復元できます。/etc/pacman.confをNoExtract定義(複数回定義可能)で拡張することにより、その問題を永続的に解決できます。更新Realtek nicドライバーのみを更新する1つの例:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup

find /usr/lib/firmware -atime +3030日以内にアクセスされないファームウェアファイルが見つかります。これらのファイルを削除しても安全です。
user202729

5

TLDR

journalctl --vacuum-size=100M #remove all logs, only retain 100mb
pacman -Scc #remove all package installation files (obsolete and current)
pacman -S bleachbit
bleachbit -c system.*

まず、システムの大きな点

du -d1 -h / 2>/dev/null | sort -h

これは、次の/ 2つのレベルで実行できる最大の日誌のソートされたリストを示します。

du -d2 -h / 2>/dev/null | sort -h

私の結果は次のとおりです。

0       /proc
0       /sys
0       /tmp
12K     /dev
12K     /srv
16K     /lost+found
632K    /run
4.3M    /boot
13M     /opt
15M     /etc
75M     /root
93M     /home
2.4G    /var
3.2G    /usr
221G    /mnt
227G    /

私は無視します/mnt(これは外部ドライブだからです)2つのディレクトリが頭に浮かんでいます:varusr。中身を見てみましょう:

du -d1 -h /var /usr 2>/dev/null | sort -h

次に、もう少し深く:

du -d1 -h /var/log /usr/share /usr/lib /var/cache 2>/dev/null | sort -h

ログから始めましょう

に717MBあり/var/logます。

私はディレクトリをランダムに削除するのが好きではないので、きれいにしましょう:

$ journalctl --disk-usage
Archived and active journals take up 728.7M on disk.

100MBのログのみを残しましょう:

journalctl --vacuum-size=100M
...
Deleted archived journal /var/log/journal/ba5391...b.journal (8.0M).
...
Vacuuming done, freed 616.6M of archived journals on disk.

ここでjournalctlを設定する方法についての詳細情報があります

パッケージ

私が持ってい660M /var/cache/pacmanます。1.8GBでしたが、pacman -Sc未使用のパッケージを削除するために実行しました。残りを削除しましょう:

pacman -Scc

/ usr / share / locale

多くのユーザーが削除するか、少なくともクリーンアップします。しかし、私は問題があるかもしれません。ただし、bleachbitチェックアウト(次の段落)。

ブリーチビット

自動クリーナー。多くのものを削除しますが、それはほとんどがロケールでした。

$ pacman -S bleachbit
$ bleachbit -p system.*
Disk space to be recovered: 488.8MB
$ bleachbit -c system.*

削除するものを探すことができます:

bleachbit --list
bleachbit -p thunderbird.*

209.70のMIBは非常に最小限のアーチのLinux 64ビットインストールでは、合計はbleachbitパッケージのサイズをインストールしている:Total Installed Size: 209.70 MiB
Proのバックアップ

1
ヒント:あなたが行う場合du -xkd1には/、ディレクトリ、それが他のマウントポイントに降りません。
fdmillion

3

私のEeepc with Ubuntuの4GBディスクでは、いくつかのロケールファイル(/ usr / share / localeから)とGnomeヘルプファイル(/ usr / share / gnome / help /から)を削除するのに役立ちました。どちらも、私が使用しない言語用にインストールされました。ただし、Arch Linuxがこれらのファイルをすべてインストールするかどうかはわかりません。


はい... du -hs /usr/share/locale約300MBです... rm -rf不要なファイルだけでいいですか?
ステファン

2
@Stefan wiki.archlinux.org/index.php/Localeを編集/etc/locale.genして再実行するとlocale-gen、プリコンパイルされたロケールが少なくなります。自動化された方法でより多くのスペースを解放したい場合は、aur.archlinux.org / packages.php?ID = 11975も試してみてください。(ただし、サポートされていないため、システムに
障害が発生した場合

1
localepurgeは、不要なローカライズのために無駄になったディスク容量を削除するスクリプトです。最初に/etc/locale.nopurgeを編集してください :)最初に実行したときに〜300 MBをクリーンアップし、数か月ごとに数十MBをクリーンアップしました。AURで利用可能です。
tuk0z

0

あなた自身の非常に古いファイルを見て自動化することをお勧めします。そして、それが必要かどうかを確認し、それらを削除します。これは2つのことで実行できます。find非常に古いファイルを探すコマンドを書く人。この出力(おそらくパイプ)を使用して、lograte3か月より古いファイルをアーカイブするスクリプトを作成し、アーカイブで3か月より古いファイルを削除し、削除する1日前にメールを送信します。重要なファイルを失っていないことを確認できます。したがって、最終的には、上記を達成するために次のコマンドが必要になります。

find , | , logrotate , mail, crontab

スプーンで餌をあげるつもりはありません。私は以前これをやったことがありますが、これでかなり成功しましたが、後になって廃棄nagiosされました。社内サーバーでそのようなことを行うように調整されたため、監視に行くことにしました。mailコマンドがまだ設定されていない場合は、最も難しい残りの部分は単純であるはずだと思うかもしれません。これはすべて、bashスクリプトを使用してcronジョブに入れ、x日ごとに実行する必要があります。bashスクリプトを学びましょう。これだけでなく、* nixであなたの人生を楽にするのに非常に役立ちます。お気に入りのインターネット検索エンジンを使用して、上記のコマンドとbashスクリプトについて読んでください。そして、それらを結び付けてテストします。満足したら、定期的に使用します。これを行うのは楽しいことを保証します。この種のことをやったことがなければ、多くを学ぶでしょう。

  • 役立つことを願っています

1
私の経験から、ほとんどのディスク占有物はOS関連のファイルではなく、一定期間蓄積された自分のファイルであることがわかったため、上記を提案しました。
バガヴァダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.