Comment réduire l'utilisation de l'espace disque

29

L'une de mes machines est le 2GB EeePC Surf , un netbook soigné avec des ressources très limitées. Si limité qu'en ce moment, il me reste 22 Mo d'espace libre.

Sur celui-ci, j'exécute Arch Linux avec l' Openbox DE et une foule d'applications nécessaires pour qu'il fonctionne comme un PC mobile.

Quelles méthodes sont disponibles pour éliminer un espace utilisé inutile?

Stefan
la source
@Stefan de combien de RAM dispose-t-il? (je me demande simplement s'il est possible de mettre des choses comme / tmp dans le ram)
xenoterracide
1
@Stefan aussi ... si vous êtes prêt à emprunter la voie expérimentale ... btrfs prend soi-disant en charge un système de fichiers compressé (ou va le faire?) Peut-être vérifier cela
xenoterracide
@stefan également du -sh /pour voir où la plupart de votre espace est utilisé.
xenoterracide
@xeno, 490 Mo de RAM, et c'est du -sh /*?
Stefan
@Stefan il est donc ... oups ... de vous pouvez cd /et exécutez du -sh *et descendez ... (vous n'avez pas vraiment assez de RAM pour y stocker des choses)
xenoterracide

Réponses:

19

Voici quelques points avec lesquels vous pourriez commencer:

  • Jetez un œil aux packages installés sur votre système pacman -Qet supprimez ceux dont vous n'avez pas besoin. Un bon début peut être d'ajouter le -t commutateur:

    Restreindre ou filtrer la sortie aux packages non requis par les packages actuellement installés.

  • Nettoyez le cache des paquets de pacman avec pacman -Sc

  • Utilisez toujours pacman -Rspour supprimer les dépendances de package non utilisées.

  • Pour trouver des "gros fichiers" et des dossiers qui utilisent de grandes parties du disque, un ajout intéressant duest xdiskusage. Ce petit outil vous permet de parcourir rapidement votre système de fichiers et de voir une représentation graphique de l'utilisation du disque des dossiers.

écho
la source
pacman -ccpour nettoyer tout le cache, y compris les packages installés, je pense. Normalement non recommandé car vous voudrez peut-être ces sauvegardes plus tard.
xenoterracide
@xeno, j'ai déjà monté un répertoire sur mon bureau pour --cachedir, donc je n'ai pas besoin de garder de fichiers pkg.
Stefan
3
Pour libérer de l'espace /, j'ai trouvé pacgraphvraiment utile. Il peut trier vos packages installés par taille, afin que vous puissiez mieux hiérarchiser ce qu'il est logique de supprimer. (Il peut même dessiner des graphiques de dépendances SVG, mais il est utile uniquement à partir de la ligne de commande.)
Anko
4
ncduest une alternative intéressante en ligne de commande à xdiskusage. Le Baobab est de loin la meilleure application graphique à cet effet.
Zaz
10

AVERTISSEMENT: ces idées ne sont destinées qu'aux utilisateurs qui connaissent bien Linux dans son ensemble et Arch Linux.

Si vous êtes prêt à pénétrer en territoire dangereux, vous pouvez réduire une installation d'arche de base à moins de 500 Mo installés. Cela nécessite de faire des choses très dangereuses:

  1. suppression de tous les paramètres régionaux inutiles (déjà couverts)
  2. suppression de tous les fichiers du micrologiciel non nécessaires pour exécuter votre système (à partir de /usr/lib/firmware)
  3. supprimer tous les modules du noyau non nécessaires pour exécuter votre système (à partir de /usr/lib/modules/...)
  4. supprimer tous les .afichiers /usr/lib(uniquement si vous n'utilisez jamais le système pour compiler des logiciels. remarque: cela inclut l'utilisation makepkg)
  5. tout supprimer /usr/include(uniquement si vous n'utilisez jamais le système pour compiler des logiciels)
  6. suppression de la documentation inutile /usr/share/docet/usr/share/info
  7. (IDÉE TRÈS MAUVAISE, sauf peut-être pour un serveur) suppression des pages de manuel de /usr/share/man
  8. (également une mauvaise idée) supprimer les descripteurs de terminal /usr/share/terminfoinutiles et les fichiers de fuseau horaire inutiles de/usr/share/zoneinfo
  9. (DANGEREUX) exécuté strip *sur tous les dossiers contenant des fichiers binaires exécutables ( /usr/binet /usr/sbin)
  10. (dans des situations extrêmes) en utilisant un outil tel que upxpour compresser des binaires plus gros (les binaires Samba s'y prêtent bien car ils ont tendance à être assez volumineux car ils sont souvent compilés statiquement.) Notez également que l'utilisation upxsignifie que tout le binaire non compressé doit tenir RAM pendant l'exécution, soyez donc fatigué sur les systèmes à faible RAM.

Avant de faire quoi que ce soit, FAITES UNE SAUVEGARDE COMPLÈTE de votre système. Heureusement, Linux rend cela relativement facile - si vous pouvez attacher et monter un volume externe (par exemple une clé USB), vous pouvez faire quelque chose comme cd / && tar -cf /mnt/usb/mySystem.tar /pour sauvegarder l'ensemble du système.

Encore une fois, notez que je ne recommande pas réellement de faire ce qui précède (en particulier de 7 à 9) à moins d'avoir une connaissance approfondie, une expérience et une compréhension des composants internes de Linux et d'Arch Linux . Jouer avec à peu près tous les fichiers que j'ai répertoriés peut endommager un système de manière horrible, vous avez donc été averti. Si vous ne savez pas si votre système a besoin d'un certain fichier de micrologiciel, module, etc., faites vos recherches avant de vous en occuper. (Soyez averti que la suppression des modules du noyau dont votre système a besoin peut entraîner un système non amorçable, ou un système sans support clavier / carte réseau / son / affichage / etc., ou toutes sortes d'autres comportements inexplicables.)

Veuillez également noter que toute mise à niveau de package peut restaurer et restaurera la plupart des fichiers que vous supprimez ci-dessus. Si vous décidez de suivre cette voie, vous souhaiterez peut-être éventuellement scripter la suppression des fichiers inutiles et exécuter votre script après chaque mise à niveau majeure du package. (Exemple: la mise à niveau du noyau ramènera tous les modules du noyau ainsi que la mise à niveau via la dépendance du paquet linux-firmware ramenant tout le firmware dedans /usr/lib/firmware.)

Enfin, gardez un œil sur le fait /var/logque les fichiers journaux augmenteront avec le temps. Vous pouvez supprimer les journaux passés mais conserver les journaux actuels en faisant quelque chose comme rm *\@*.journaldans votre dossier de journaux.

J'ai réussi à exécuter un serveur NAS sur un périphérique Disk-on-Module de 512 Mo pendant des mois en utilisant ces techniques, mais elles ne sont toujours pas pour les âmes sensibles. (J'ai également utilisé LinuxFromScratch pour construire un projet similaire dans seulement 128 Mo de stockage, mais c'est une autre histoire ...)


MODIFIER / AJOUTER:

Voici quelques méthodes supplémentaires que vous pouvez utiliser pour essayer d'obtenir de l'espace supplémentaire:

  • Se débarrasser libgo. La libgobibliothèque est fournie avec gcc-libsAFAIK et n'est utilisée que par les applications écrites en langue Go. Je ne peux penser à aucune application que j'utilise qui a besoin de cette bibliothèque. Sur mon système, sa taille est de 40 Mo. Lorsque vous essayez de perdre du poids, c'est beaucoup d'espace. Je l'ai supprimé de mes "mini" installations sans aucun effet néfaste sur tout ce que je fais (mais encore une fois, c'est moi, YMMV!)

  • Rétrécissement libicudata.so. C'est 27 Mo sur mon système. Il s'agit essentiellement d'une tonne de données Unicode / locale compressées dans un objet de bibliothèque. Il existe un outil en ligne qui peut créer des versions plus petites de ce fichier, mais il n'a pas été mis à jour pour la version actuelle (et vous ne pouvez pas utiliser des fichiers plus anciens dans les versions plus récentes.) Je n'ai pas essayé de le faire à la main, mais si vous pouvez comprendre comment, vous pouvez raser environ 20-22 Mo sur ce fichier.

  • Si vous utilisez Python, vous pouvez enregistrer 37MB ou si en retirant la testbibliothèque de python2: rm -r /usr/lib/python2.7/testet environ 66MB en le retirant pour python3: rm -r /usr/lib/python3.6/test.

  • Encore une fois pour Python, vous pouvez vous débarrasser des .pyofichiers et des .pyfichiers. Les .pyofichiers sont des fichiers "optimisés", mais Python ne les utilise jamais vraiment. Les .pyfichiers sont le code source brut de la bibliothèque standard. Les seuls fichiers que Python lit normalement lors de l'exécution du code Python sont les .pycfichiers (compilés en python). cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;etcd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Suppression des données locales inutiles. Il y a un package AUR appelé localepurgequi automatise cela. Sinon, vous devez jouer /usr/share/locale. Vous devez conserver vos propres paramètres régionaux et locale.alias. Pour moi , ici aux États - Unis, en gardant en_USet locale.aliaset enlever tout le reste rasé sur les 80Mo.

Maintenant, ce que je veux voir, c'est un outil qui analyse votre système et détermine les modules de noyau dont vous avez besoin, ainsi que les fichiers de firmware dont vous avez besoin. Ce serait une bonne façon de nettoyer "en toute sécurité" ces dossiers ...

Ou, peut - être quelqu'un devrait mettre sur pied une arche « distro » qui utilise uClibcou diet-libcou quelque chose de similaire. Ce pourrait être un projet d'été amusant. :-)

fdmillion
la source
2
Je suis intéressé à le faire aussi .. le firmware semble le plus gros gain pour moi, j'essaie de faire une petite boîte vagabonde donc j'ai seulement besoin du firmware requis pour exécuter arch sur virtualbox ... y a-t-il un moyen facile de trouver quel firmware est requis?
Tom B
avertissement: juste essayé upx, il ne fonctionne pas bien avec tous les types d'exectuables, ex: il a quitté mysqld & mongodb segfaulting
Ayush
3
re: Les mises à niveau des packages peuvent restaurer et restaureront de nombreux fichiers que vous supprimez . En étendant /etc/pacman.conf avec des NoExtractdéfinitions (peut être défini plusieurs fois), vous pouvez résoudre ce problème de manière permanente. Un exemple pour mettre à jour uniquement les pilotes de mise à jour Realtek nic:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup
find /usr/lib/firmware -atime +30trouverait des fichiers de firmware qui ne sont pas accessibles dans les 30 jours. Il devrait être sûr de supprimer ces fichiers.
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.*

Tout d'abord, qu'est-ce qui est gros dans le système

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

Cela montre une liste triée des plus grands répertoires dans / Vous pouvez faire deux niveaux vers le bas:

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

Mon résultat est:

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    /

J'ignore /mnt(car c'est un disque externe) Deux dirs me viennent à l'esprit: varet usr. Voyons ce qu'il y a dedans:

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

Ensuite, un peu plus profondément:

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

Commençons par les journaux

Je 717mb dans /var/log.

Je ne suis pas fan de supprimer des répertoires au hasard, alors faisons-le de la manière la plus nette:

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

Laissons seulement 100 Mo de journaux:

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.

Plus d'informations ici sur la façon de configurer journalctl ici .

Paquets

Je l'ai 660M /var/cache/pacman. C'était 1,8 Go, mais j'ai couru pacman -Scpour supprimer les paquets inutilisés. Supprimons le reste:

pacman -Scc

/ usr / share / locale

Beaucoup d'utilisateurs le suppriment, ou du moins le nettoient. Mais je pourrais être un problème . Mais checkout bleachbit (paragraphe suivant).

Bleachbit

Nettoyant automatique . Supprime beaucoup de choses, mais c'était principalement des locales.

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

Vous pouvez rechercher d'autres éléments à supprimer:

bleachbit --list
bleachbit -p thunderbird.*
brouillard
la source
Sur une installation Arch Linux 64 bits assez minimale, la taille totale installée du paquet bleachbit est de 209,70 Mio:Total Installed Size: 209.70 MiB
Pro Backup
1
Astuce: si vous le faites du -xkd1dans le /répertoire, il ne descendra pas dans d'autres points de montage.
fdmillion
3

Sur le disque de 4 Go de mon Eeepc avec Ubuntu, cela a aidé à supprimer certains fichiers de paramètres régionaux (de / usr / share / locale) et des fichiers d'aide Gnome (de / usr / share / gnome / help /). Les deux ont été installés pour des langues que je n'utilise pas. Je ne sais pas si Arch Linux installe même tous ces fichiers, cependant.


la source
oui ... du -hs /usr/share/localeest d'environ 300 Mo ... puis-je simplement rm -rfles fichiers inutiles?
Stefan
2
@Stefan wiki.archlinux.org/index.php/Locale Si vous modifiez /etc/locale.genet réexécutez locale-gen, vous devriez avoir moins de paramètres régionaux précompilés. Si vous souhaitez libérer plus d'espace de manière automatisée, vous pouvez également essayer aur.archlinux.org/packages.php?ID=11975 . (Mais ce n'est pas pris en charge et si cela casse votre système, vous pouvez garder les morceaux.)
éphémère
1
localepurge est un script pour supprimer l'espace disque gaspillé pour les localisations inutiles. Modifiez /etc/locale.nopurge d' abord :) Il a nettoyé ~ 300 Mo la première fois que je l'ai exécuté et des dizaines de Mo chaque couple de mois. Est disponible en AUR.
tuk0z
0

Je suggère d'automatiser la recherche de vos propres fichiers très anciens et de voir si c'est nécessaire et de les supprimer. Cela peut se faire avec deux choses. L'un écrit une findcommande pour rechercher des fichiers très anciens. et en utilisant cette sortie (peut-être pipe) pour logratecréer un script pour archiver des fichiers plus anciens que 3 mois et supprimer des fichiers de plus de 3 mois dans les archives et envoyer un courrier électronique à 1 jour avant de le supprimer. Pour être sûr de n'avoir perdu aucun fichier important. Donc, enfin, vous aurez besoin des commandes suivantes pour accomplir ce qui précède:

find , | , logrotate , mail, crontab

Je ne vais pas te nourrir à la cuillère. J'ai déjà fait cela auparavant, j'ai eu beaucoup de succès avec cela et j'ai ensuite été abandonné parce que nous avons décidé d'aller avec nagiospour la surveillance car il était plus adapté pour faire ce genre de choses dans un serveur corp. Je pense que si la mailcommande n'est pas déjà configurée pour vous, vous pourriez trouver que le repos le plus difficile devrait être simple. Tout cela doit être fait à travers des scripts bash et mettre cela en tâche cron et s'exécuter tous les x jours. Apprenez le script bash, il sera très utile non seulement pour cela mais pour vous faciliter la vie avec * nix. Utilisez donc votre moteur de recherche Internet préféré et lisez les commandes et les scripts bash ci-dessus. Et attachez-les ensemble et testez-le. Une fois satisfait, utilisez régulièrement. Je vous assure que ce sera amusant de le faire. Vous en apprendrez beaucoup si vous ne l'avez pas fait auparavant.

  • J'espère que ça t'as aidé
bagavadhar
la source
1
Pour mon expérience, j'ai constaté que la plupart des choses occupant le disque ne sont pas des fichiers liés au système d'exploitation, mais mes propres fichiers se sont accumulés sur une période de temps, c'est pourquoi j'ai suggéré ce qui précède.
bagavadhar