Wie kann ich den Speicherplatzbedarf minimieren?

29

Eine meiner Maschinen ist das 2GB EeePC Surf , ein ordentliches Netbook mit sehr begrenzten Ressourcen. So begrenzt, dass ich momentan noch 22 MB freien Speicherplatz habe.

Darauf starte ich Arch Linux mit der Openbox DE und einer Vielzahl von Anwendungen, die für die Funktion als mobiler PC erforderlich sind.

Welche Methoden stehen zur Verfügung, um nicht benötigten Speicherplatz zu entfernen?

Stefan
quelle
@ Stefan wie viel RAM hat es? (
Ich
1
@Stefan auch ... wenn Sie bereit sind, den experimentellen Weg zu gehen ... btrfs unterstützt angeblich ein komprimiertes Dateisystem (oder wird es
tun
@ Stefan auch, um du -sh /zu sehen, wo der größte Teil Ihres Speicherplatzes verwendet wird.
Xenoterracide
@xeno, 490 MB RAM, und es ist du -sh /*?
Stefan
@Stefan so ist es ... hoppla ... von dir können cd /und laufen du -sh *und Drilldown ... (Sie haben nicht wirklich genug RAM, um Sachen darin zu speichern)
Xenoterracide

Antworten:

19

Hier sind einige Punkte, mit denen Sie beginnen könnten:

  • Schauen Sie sich die Pakete an, die auf Ihrem System installiert sind, pacman -Qund entfernen Sie diejenigen, die Sie nicht benötigen. Ein guter Anfang kann sein, den -t Schalter anzuhängen :

    Beschränken oder filtern Sie die Ausgabe auf Pakete, die von keinem derzeit installierten Paket benötigt werden.

  • Reinigen Sie den Paket-Cache von Pacman mit pacman -Sc

  • Immer verwenden pacman -Rs, um auch nicht verwendete Paketabhängigkeiten zu entfernen.

  • Für „große Dateien“ und Ordner , die große Teile der Platte zu verwenden, eine schöne Ergänzung zu duist xdiskusage. Mit diesem kleinen Tool können Sie Ihr Dateisystem schnell durchsuchen und eine grafische Darstellung der Festplattenbelegung der Ordner anzeigen.

Echox
quelle
pacman -ccIch denke, den gesamten Cache einschließlich der installierten Pakete zu bereinigen. Normalerweise nicht empfehlenswert, da Sie diese möglicherweise später als Backups benötigen.
Xenoterracide
@xeno, ich habe bereits ein Verzeichnis auf meinem Desktop für bereitgestellt --cachedir, sodass ich keine pkg-Dateien speichern muss.
Stefan
3
Zum Freiräumen /fand ich das pacgraphecht nützlich. Es kann Ihre installierten Pakete nach Größe sortieren, sodass Sie besser priorisieren können, was zu entfernen sinnvoll ist. (Es kann sogar SVG-Abhängigkeitsgraphen zeichnen, ist aber nur über die Befehlszeile nützlich.)
Anko
4
ncduist eine coole Kommandozeilenalternative zu xdiskusage. Baobab ist jedoch die mit Abstand beste grafische App für diesen Zweck.
Zaz
10

WARNUNG: Diese Ideen sind nur für Benutzer gedacht, die sich sowohl mit Linux als Ganzes als auch mit Arch Linux auskennen.

Wenn Sie bereit sind, gefährliches Terrain zu betreten, können Sie eine Basis-Arch-Installation auf weniger als 500 MB reduzieren. Dies erfordert einige sehr gefährliche Dinge:

  1. Entfernen aller unnötigen Gebietsschemas (bereits behandelt)
  2. Entfernen aller Firmware-Dateien, die nicht zum Ausführen Ihres Systems benötigt werden (von /usr/lib/firmware)
  3. Entfernen aller Kernelmodule, die nicht zum Ausführen Ihres Systems benötigt werden (von /usr/lib/modules/...)
  4. Entfernen von .aDateien in /usr/lib(nur, wenn Sie das System niemals zum Kompilieren von Software verwenden. Hinweis: Dies umfasst die Verwendung von makepkg)
  5. Entfernen von allem in /usr/include(nur wenn Sie das System nie zum Kompilieren von Software verwenden)
  6. Entfernen nicht benötigter Dokumente aus /usr/share/docund/usr/share/info
  7. (SEHR SCHLECHTE IDEE, außer vielleicht für einen Server) Entfernen von Manpages von /usr/share/man
  8. (auch eine schlechte Idee) Entfernen nicht benötigter Terminal-Deskriptoren von /usr/share/terminfound nicht benötigter Zeitzonen-Dateien von/usr/share/zoneinfo
  9. (GEFÄHRLICH) Wird in strip *allen Ordnern ausgeführt, die ausführbare Binärdateien ( /usr/binund /usr/sbin) enthalten.
  10. (in extremen Situationen) Verwenden eines Tools upxzum Komprimieren größerer Binärdateien (die Samba-Binärdateien eignen sich gut dafür, da sie häufig statisch kompiliert werden.) Beachten Sie auch, dass bei Verwendung von upxdie gesamte unkomprimierte Binärdatei passen muss RAM während der Ausführung, seien Sie also auf Systemen mit wenig RAM müde.

Bevor Sie dies tun, ERSTELLEN SIE EINE VOLLSTÄNDIGE SICHERUNG Ihres Systems. Glücklicherweise macht Linux dies relativ einfach - wenn Sie ein externes Volume (z. B. ein USB-Laufwerk) anschließen und mounten können, können Sie so etwas wie ein cd / && tar -cf /mnt/usb/mySystem.tar /Backup des gesamten Systems durchführen.

Beachten Sie erneut, dass ich die oben genannten Schritte (insbesondere die Schritte 7 bis 9) nicht empfehle, es sei denn, Sie verfügen über fundierte Kenntnisse, Erfahrungen und Kenntnisse über Linux-Interna und Arch Linux . Das Spielen mit fast allen aufgelisteten Dateien kann ein System auf schreckliche Weise beschädigen. Sie wurden also gewarnt. Wenn Sie nicht wissen, ob Ihr System eine bestimmte Firmware-Datei, ein bestimmtes Modul usw. benötigt, führen Sie Ihre Recherchen durch, bevor Sie damit herumspielen. (Seien Sie gewarnt, dass das Entfernen von Kernel-Modulen, die Ihr System benötigt, zu einem nicht mehr startbaren System oder zu einem System ohne Tastatur- / Netzwerkkarten- / Sound- / Display- / usw. Unterstützung oder zu allen möglichen anderen unerklärlichen Verhaltensweisen führen kann.)

Beachten Sie auch, dass bei allen Paketaktualisierungen viele der oben entfernten Dateien wiederhergestellt werden können und werden. Wenn Sie sich für diesen Weg entscheiden, möchten Sie möglicherweise die Entfernung nicht benötigter Dateien per Skript ausführen und Ihr Skript nach jedem größeren Paket-Upgrade ausführen. (Beispiel: Durch das Aktualisieren des Kernels werden alle Kernelmodule sowie das Linux-Firmware-Paket, das die gesamte Firmware des Kernels wiederherstellt, über die Abhängigkeit wiederhergestellt /usr/lib/firmware.)

Behalten Sie zum Schluss die Übersicht, /var/logda die Journaldateien mit der Zeit immer größer werden. Sie können frühere Journale entfernen, aber die aktuellen behalten, indem Sie etwas rm *\@*.journalin Ihrem Journalordner tun .

Ich habe monatelang erfolgreich einen NAS-Server von einem 512-MB-Disk-on-Module-Gerät mit diesen Techniken betrieben, aber sie sind immer noch nichts für schwache Nerven. (Ich habe auch LinuxFromScratch verwendet, um ein ähnliches Projekt mit nur 128 MB Speicherplatz zu erstellen, aber das ist eine andere Geschichte ...)


EDIT / ADD:

Hier sind einige weitere Methoden, mit denen Sie versuchen können, zusätzlichen Speicherplatz zu erhalten:

  • Loswerden libgo. Die libgoBibliothek wird mit gcc-libsAFAIK geliefert und wird nur von Anwendungen verwendet, die in der Sprache Go geschrieben sind. Mir fällt keine Anwendung ein, die diese Bibliothek benötigt. Auf meinem System sind es 40 MB. Wenn Sie versuchen, schlank zu werden, ist das viel Platz. Ich habe es aus meinen "Mini" -Installationen entfernt, ohne negative Auswirkungen auf meine Aktivitäten zu haben (aber das bin ich, YMMV!)

  • Schrumpfen libicudata.so. Auf meinem System sind es 27 MB. Es handelt sich im Grunde genommen um eine Menge Unicode- / Gebietsschemadaten, die in ein Bibliotheksobjekt komprimiert wurden. Es ist ein Tool online, mit dem kleinere Versionen dieser Datei erstellt werden können, das jedoch nicht für die aktuelle Version aktualisiert wurde (und Sie können in neueren Versionen keine älteren Dateien verwenden). Ich habe dies nicht manuell versucht, aber Wenn Sie herausfinden können, wie, können Sie etwa 20-22 MB aus dieser Datei rasieren.

  • Wenn Sie Python verwenden, können Sie etwa 37 testMB rm -r /usr/lib/python2.7/testeinsparen, indem Sie die Bibliothek aus python2: entfernen, und etwa 66 MB, indem Sie sie für python3: entfernen rm -r /usr/lib/python3.6/test.

  • Wieder für Python können Sie die .pyoDateien und die .pyDateien loswerden . Die .pyoDateien sind "optimierte" Dateien, aber Python verwendet sie nie wirklich. Die .pyDateien sind der unformatierte Quellcode für die Standardbibliothek. Die einzigen Dateien, die Python normalerweise liest, wenn Python-Code ausgeführt wird, sind die .pyc(mit Python kompilierten) Dateien. cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;undcd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Unnötige Gebietsschemadaten entfernen. Es gibt ein AUR-Paket, localepurgedas dies automatisiert. Ansonsten muss man in herumspielen /usr/share/locale. Sie müssen Ihr eigenes Gebietsschema behalten und locale.alias. Für mich hier in den USA, zu halten en_USund locale.aliasund entfernen alles andere über 80MB abrasiert.

Was ich jetzt sehen möchte, ist ein Tool, das Ihr System analysiert und bestimmt, welche Kernelmodule Sie benötigen und welche Firmware-Dateien Sie benötigen. Das wäre eine gute Möglichkeit, diese Ordner "sicher" zu bereinigen ...

Oder vielleicht jemand sollte einen Bogen „Distro“ dass Anwendungen zusammen uClibcoder diet-libcoder etwas ähnliches. Das könnte ein lustiges Sommerprojekt sein. :-)

fdmillion
quelle
2
Ich bin auch daran interessiert, dies zu tun. Die Firmware scheint der größte Gewinn für mich zu sein. Ich versuche, eine kleine Vagrant-Box zu bauen, also brauche ich nur die Firmware, die zum Ausführen von arch auf virtualbox erforderlich ist Welche Firmware wird benötigt?
Tom B
Warnung: gerade ausprobiert upx, es funktioniert nicht mit allen Arten von exectuables, zB: es hat mysqld & mongodb segfaulting
Ayush
3
Betreff: Paket-Upgrades können und werden viele der Dateien wiederherstellen, die Sie entfernen . Indem Sie die Datei /etc/pacman.conf mit NoExtractDefinitionen erweitern (die mehrmals definiert werden können), können Sie dieses Problem dauerhaft lösen. Ein Beispiel, um nur die Treiber von Realtek nic zu aktualisieren:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup
find /usr/lib/firmware -atime +30Ich würde Firmware-Dateien finden, auf die in 30 Tagen nicht zugegriffen wurde. Es sollte sicher sein, diese Dateien zu löschen.
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.*

Erstens, was ist auf dem System groß

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

Dies zeigt eine sortierte Liste der größten Verzeichnisse in / Sie können zwei Ebenen nach unten gehen:

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

Mein Ergebnis ist:

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    /

Ich ignoriere /mnt(weil das ein externes Laufwerk ist) Zwei dirs stehen in den Sinn: varund usr. Mal sehen, was drin ist:

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

Dann etwas tiefer:

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

Beginnen wir mit den Protokollen

Ich habe 717mb in /var/log.

Ich bin kein Fan des zufälligen Löschens von Verzeichnissen, also lass es uns auf die saubere Art und Weise machen:

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

Lassen wir nur 100 MB an Protokollen:

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.

Weitere Informationen zum Konfigurieren von journalctl finden Sie hier .

Pakete

Ich habe 660M /var/cache/pacman. Es war 1,8 GB, aber ich lief pacman -Sc, um nicht verwendete Pakete zu entfernen. Lassen Sie uns den Rest entfernen:

pacman -Scc

/ usr / share / locale

Viele Benutzer entfernen es oder bereinigen es zumindest. Aber ich könnte ein Problem sein . Aber zur Kasse Bleichbit (nächster Absatz).

Bleachbit

Automatischer Reiniger . Wird eine Menge Sachen löschen, aber dafür waren meistens Locales.

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

Sie können nach weiteren zu löschenden Elementen suchen:

bleachbit --list
bleachbit -p thunderbird.*
Nebel
quelle
Bei einer 64-Bit-Installation von Arch Linux beträgt die installierte Gesamtgröße des Bleachbit-Pakets 209,70 MiB:Total Installed Size: 209.70 MiB
Pro Backup
1
Tipp: Wenn Sie dies du -xkd1im /Verzeichnis tun , wird es nicht in andere Mountpunkte absteigen.
Fdmillion
3

Auf der 4 GB Festplatte in meinem Eeepc mit Ubuntu hat es geholfen, einige Locale-Dateien (aus / usr / share / locale) und Gnome-Hilfedateien (aus / usr / share / gnome / help /) zu entfernen. Beide wurden für Sprachen installiert, die ich nicht verwende. Ich bin mir nicht sicher, ob Arch Linux überhaupt alle diese Dateien installiert.


quelle
ja ... du -hs /usr/share/localeist ungefähr 300MB ... kann ich nur rm -rfdie nicht benötigten Dateien?
Stefan
2
@Stefan wiki.archlinux.org/index.php/Locale Wenn Sie bearbeiten /etc/locale.genund erneut ausführen locale-gen, sollten Sie weniger vorkompilierte Gebietsschemas haben. Wenn Sie automatisiert mehr Speicherplatz freigeben möchten, können Sie auch aur.archlinux.org/packages.php?ID=11975 ausprobieren . (Aber es wird nicht unterstützt und wenn es Ihr System kaputt macht, können Sie die Teile behalten.)
Ephemient
1
localepurge ist ein Skript zum Entfernen von Speicherplatz, der für nicht benötigte Lokalisierungen verschwendet wird. Bearbeite /etc/locale.nopurge zuerst :) Es hat ~ 300 MB aufgeräumt, als ich es zum ersten Mal ausgeführt habe und Dutzende MB alle paar Monate. Ist in AUR verfügbar.
Tuk0z
0

Ich würde AUTOMATISIEREN vorschlagen, indem Sie Ihre eigenen, sehr alten Dateien betrachten und prüfen, ob dies erforderlich ist, und sie entfernen. Dies kann mit zwei Dingen geschehen. Man schreibt einen findBefehl, um nach sehr alten Dateien zu suchen. und mit dieser Ausgabe (möglicherweise Pipe) ein lograteSkript erstellen, um Dateien zu archivieren, die älter als 3 Monate sind, und Dateien zu löschen, die älter als 3 Monate sind, und eine E-Mail an einen Tag zu senden, bevor sie gelöscht werden. Damit Sie sicher sein können, dass Sie keine wichtige Datei verloren haben. Zum Abschluss müssten Sie also die folgenden Befehle ausführen:

find , | , logrotate , mail, crontab

Ich werde dich nicht füttern. Ich habe das schon mal gemacht, war damit ziemlich erfolgreich und wurde später ausrangiert, weil wir uns nagiosfür die Überwachung entschieden haben, da es besser darauf abgestimmt war, solche Dinge auf einem Corpserver zu erledigen. Ich denke, wenn der mailBefehl nicht bereits für Sie konfiguriert ist, werden Sie vielleicht feststellen, dass der schwierigste Rest direkt sein sollte. Dies alles muss durch Bash-Skripte und Cron-Jobs geschehen und alle x Tage ausgeführt werden. Lerne bash scripting, es wird nicht nur dafür sehr nützlich sein, sondern auch, um dir das Leben mit * nix zu erleichtern. Verwenden Sie also Ihre bevorzugte Internet-Suchmaschine und informieren Sie sich über die obigen Befehle und Bash-Skripte. Und binde sie zusammen und teste es. Einmal befriedigt, regelmäßig anwenden. Ich versichere, es wird Spaß machen, dies zu tun. Sie werden viel lernen, wenn Sie das noch nie gemacht haben.

  • hoffentlich hilft das
Bagavadhar
quelle
1
Aufgrund meiner Erfahrung stellte ich fest, dass die meisten Dinge, die die Festplatte belegen, keine Betriebssystemdateien sind, sondern meine eigenen Dateien, die sich über einen bestimmten Zeitraum angesammelt haben. Daher schlug ich das Obige vor.
Bagavadhar