¿Cómo minimizo el uso de espacio en disco?

29

Una de mis máquinas es la EeePC Surf de 2GB , una netbook ordenada con recursos muy limitados. Tan limitado que en este momento, me quedan 22 MB de espacio libre.

En él, estoy ejecutando Arch Linux con Openbox DE y una gran cantidad de aplicaciones necesarias para que funcione como una PC móvil.

¿Qué métodos están disponibles para eliminar algún espacio usado innecesario?

Stefan
fuente
@Stefan, ¿cuánta RAM tiene? (solo me pregunto si es factible poner cosas como / tmp en ram)
xenoterracide
1
@Stefan también ... si estás dispuesto a seguir la ruta experimental ... supuestamente btrfs admite un sistema de archivos comprimido (¿o lo
hará
@stefan también du -sh /para ver dónde se usa la mayor parte de su espacio.
xenoterracide
@xeno, 490 MB de RAM, y es du -sh /*?
Stefan
@Stefan, así es ... ¡Uy ... de ti puedes cd /y correr du -sh *y profundizar ... (realmente no tienes suficiente carnero para almacenar cosas)
xenoterracide

Respuestas:

19

Aquí hay algunos puntos con los que puede comenzar:

  • Eche un vistazo a los paquetes instalados en su sistema pacman -Qy elimine los que no necesita. Un buen comienzo puede ser agregar el -t interruptor:

    Restrinja o filtre la salida a paquetes no requeridos por ningún paquete instalado actualmente.

  • Limpie el caché del paquete de pacman con pacman -Sc

  • Utilice siempre pacman -Rspara eliminar también dependencias de paquetes no utilizados.

  • Para encontrar "archivos grandes" y carpetas que usan partes grandes del disco, una buena adición dues xdiskusage. Esta pequeña herramienta le permite explorar rápidamente su sistema de archivos y ver una representación gráfica del uso del disco de las carpetas.

echox
fuente
pacman -ccpara limpiar todo el caché, incluidos los paquetes instalados, creo. Normalmente no se recomienda, ya que es posible que desee usarlos como copias de seguridad más adelante.
xenoterracide
@xeno, ya monte un directorio en mi escritorio --cachedir, así que no necesito guardar ningún archivo pkg.
Stefan
3
Para liberar espacio /, me pareció pacgraphrealmente útil. Puede ordenar los paquetes instalados por tamaño, por lo que puede priorizar mejor lo que tiene sentido eliminar. (Incluso puede dibujar gráficos de dependencia SVG, pero es útil solo desde la línea de comandos).
Anko
44
ncdues una buena alternativa de línea de comandos para xdiskusage. Sin embargo, Baobab es, con mucho, la mejor aplicación gráfica para este propósito.
Zaz
10

ADVERTENCIA: Estas ideas son solo para usuarios que conocen bien Linux como un todo y Arch Linux.

Si está dispuesto a pisar territorio peligroso, puede reducir una instalación de Arch base a menos de 500 MB instalados. Esto requiere hacer algunas cosas muy peligrosas:

  1. eliminar todas las configuraciones regionales innecesarias (ya cubiertas)
  2. eliminar cualquier archivo de firmware que no sea necesario para ejecutar su sistema (desde /usr/lib/firmware)
  3. eliminar cualquier módulo del núcleo que no sea necesario para ejecutar su sistema (desde /usr/lib/modules/...)
  4. eliminar cualquier .aarchivo /usr/lib(solo si nunca usa el sistema para compilar software. nota: esto incluye usar makepkg)
  5. eliminar todo /usr/include(solo si nunca usa el sistema para compilar software)
  6. eliminar documentación innecesaria de /usr/share/docy/usr/share/info
  7. (IDEA MUY MALA, a menos que sea para un servidor) eliminar páginas de manual /usr/share/man
  8. (también es una mala idea) eliminar descriptores de terminal /usr/share/terminfoinnecesarios y archivos de zona horaria innecesarios de/usr/share/zoneinfo
  9. (PELIGROSO) ejecutándose strip *en todas las carpetas que contienen archivos binarios ejecutables ( /usr/biny /usr/sbin)
  10. (en situaciones extremas) usando una herramienta como upxpara comprimir binarios más grandes (los binarios de Samba se prestan bien a esto, ya que tienden a ser bastante grandes ya que a menudo se compilan estáticamente). También tenga en cuenta que usar upxsignifica que todo el binario sin comprimir debe encajar RAM durante la ejecución, así que tenga cuidado con los sistemas con poca RAM.

Antes de hacer CUALQUIERA de esto, HAGA UNA COPIA DE SEGURIDAD COMPLETA de su sistema. Afortunadamente, Linux hace esto relativamente fácil: si puede conectar y montar un volumen externo (por ejemplo, una unidad USB), puede hacer algo como cd / && tar -cf /mnt/usb/mySystem.tar /hacer una copia de seguridad de todo el sistema.

Una vez más, tenga en cuenta que en realidad no recomiendo hacer lo anterior (especialmente del 7 al 9) a menos que tenga un profundo conocimiento, experiencia y comprensión de los componentes internos de Linux y Arch Linux . Jugar con casi cualquiera de los archivos que he enumerado puede dañar un sistema de manera horrible, por lo que te advertimos. Si no sabe si su sistema necesita un determinado archivo de firmware, módulo, etc., investigue antes de meterse con él. (Tenga en cuenta que la eliminación de los módulos del núcleo que necesita su sistema puede dar como resultado un sistema que no se puede iniciar, o un sistema sin soporte para teclado / tarjeta de red / sonido / pantalla / etc., o todo tipo de otro comportamiento inexplicable).

Además, tenga en cuenta que las actualizaciones de paquetes pueden restaurar muchos de los archivos que eliminó anteriormente. Si decide seguir esta ruta, es posible que desee realizar una secuencia de comandos para eliminar los archivos innecesarios y ejecutar su secuencia de comandos después de cada actualización importante del paquete. (Ejemplo: la actualización del kernel traerá de vuelta todos los módulos del kernel, así como la actualización por dependencia del paquete linux-firmware que traerá de vuelta todo el firmware /usr/lib/firmware).

Finalmente, vigile /var/logque los archivos del diario crecerán con el tiempo. Puede eliminar diarios pasados ​​pero conservar los actuales haciendo algo como rm *\@*.journalen su carpeta de diario.

Ejecuté con éxito un servidor NAS en un dispositivo de disco en módulo de 512 MB durante meses usando estas técnicas, sin embargo, todavía no son para los débiles de corazón. (También he usado LinuxFromScratch para construir un proyecto similar en solo 128 MB de almacenamiento, pero esa es otra historia ...)


EDITAR / AGREGAR:

Aquí hay algunos métodos más que puede usar para intentar obtener algo de espacio adicional:

  • Deshacerse de libgo. La libgobiblioteca viene con gcc-libsAFAIK y solo la usan aplicaciones escritas en el idioma Go. No puedo pensar en ninguna aplicación que use que necesite esa biblioteca. En mi sistema tiene un tamaño de 40 MB. Cuando intentas adelgazar, eso es mucho espacio. Lo eliminé de mis "mini" instalaciones sin efectos negativos en nada de lo que hago (¡pero de nuevo, ese soy yo, YMMV!)

  • La disminución libicudata.so. Son 27 MB en mi sistema. Es básicamente una tonelada de datos unicode / locale comprimidos en un objeto de biblioteca. Hay una herramienta en línea que puede hacer versiones más pequeñas de este archivo, pero no se ha actualizado para la versión actual (y no puede usar archivos más antiguos en versiones más recientes). No he intentado hacer esto a mano, pero Si puede averiguar cómo, puede eliminar unos 20-22 MB de este archivo.

  • Si utiliza Python, puede guardar 37MB o menos mediante la eliminación de la testbiblioteca de python2: rm -r /usr/lib/python2.7/testy alrededor de 66 MB mediante la eliminación de python3: rm -r /usr/lib/python3.6/test.

  • Nuevamente para Python, puede deshacerse de los .pyoarchivos y los .pyarchivos. Los .pyoarchivos son archivos "optimizados", pero Python nunca los usa realmente. Los .pyarchivos son el código fuente sin formato para la biblioteca estándar. Los únicos archivos que Python lee normalmente cuando se ejecuta código Python son los .pycarchivos (compilados en Python). cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;ycd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Eliminando datos locales innecesarios. Hay un paquete AUR llamado localepurgeque automatiza esto. De lo contrario, tienes que jugar /usr/share/locale. Necesita mantener su propio entorno local y locale.alias. Para mí aquí en los EE.UU., manteniendo en_USe locale.aliasy la eliminación de todo lo demás afeitado sobre 80MB.

Ahora, lo que quiero ver es una herramienta que analice su sistema y determine qué módulos del núcleo necesita y también qué archivos de firmware necesita. Esa sería una buena manera de limpiar "con seguridad" esas carpetas ...

O, tal vez alguien debe armar una "distribución" Arco que los usos uClibco diet-libco algo similar. Ese podría ser un proyecto de verano divertido. :-)

fdmillion
fuente
2
También estoy interesado en hacer esto ... el firmware parece la mayor ganancia para mí, estoy tratando de hacer una pequeña caja vagabunda, así que solo necesito el firmware requerido para ejecutar arch en virtualbox ... ¿hay una manera fácil de encontrar ¿Qué firmware se requiere?
Tom B
advertencia: acabo de intentarlo upx, no funciona bien con todo tipo de ejecutables, por ejemplo: dejó mysqld y mongodb segfaulting
Ayush
3
re: Las actualizaciones de paquetes pueden y restaurarán muchos de los archivos que elimine . Al extender /etc/pacman.conf con NoExtractdefiniciones (se pueden definir varias veces), puede resolver ese problema permanentemente. Un ejemplo para actualizar solo los controladores de actualización Realtek nic:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup
find /usr/lib/firmware -atime +30encontraría archivos de firmware a los que no se accede en 30 días. Debería ser seguro eliminar esos archivos.
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.*

Primero, ¿qué hay de grande en el sistema?

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

Esto muestra una lista ordenada de los directorios más grandes en / Puede hacer dos niveles hacia abajo:

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

Mi resultado es:

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    /

Ignoro /mnt(porque se trata de una unidad externa) Hay dos directorios a la mente: vary usr. Veamos que hay dentro:

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

Luego, un poco más profundo:

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

Comencemos con los registros.

Tengo 717mb en /var/log.

No soy fanático de eliminar directorios al azar, así que hagámoslo de manera limpia:

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

Dejemos solo 100mb de registros:

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.

Más información aquí sobre cómo configurar journalctl aquí .

Paquetes

Tengo 660M /var/cache/pacman. Era 1.8gb, pero corrí pacman -Scpara eliminar los paquetes no utilizados. Eliminemos el resto:

pacman -Scc

/ usr / share / locale

Muchos usuarios lo eliminan, o al menos lo limpian. Pero podría ser un problema . Pero pagar bleachbit (siguiente párrafo).

Bleachbit

Limpiador automático . Eliminará muchas cosas, pero en su mayoría fueron locales.

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

Puedes buscar más cosas para eliminar:

bleachbit --list
bleachbit -p thunderbird.*
niebla
fuente
En una instalación mínima de Arch Linux de 64 bits, el tamaño total instalado del paquete de bleachbit es 209.70 MiB:Total Installed Size: 209.70 MiB
Pro Backup
1
Consejo: si lo hace du -xkd1en el /directorio, no descenderá a otros puntos de montaje.
fdmillion
3

En el disco de 4GB en mi Eeepc con Ubuntu, ayudó a eliminar algunos archivos locales (de / usr / share / locale) y los archivos de ayuda de Gnome (de / usr / share / gnome / help /). Ambos fueron instalados para idiomas que no uso. Sin embargo, no estoy seguro de si Arch Linux incluso instala todos esos archivos.


fuente
sí ... du -hs /usr/share/localeson unos 300 MB ... ¿puedo simplemente rm -rflos archivos innecesarios?
Stefan
2
@Stefan wiki.archlinux.org/index.php/Locale Si edita /etc/locale.geny vuelve a ejecutar locale-gen, debería tener menos configuraciones regionales precompiladas. Si desea liberar más espacio de forma automatizada, puede probar aur.archlinux.org/packages.php?ID=11975 también. (Pero no es compatible y si rompe su sistema, puede conservar las piezas).
Ephemient
1
localepurge es un script para eliminar el espacio en disco desperdiciado por localizaciones innecesarias. Edite /etc/locale.nopurge primero :) Limpió ~ 300 MB la primera vez que lo ejecuté y docenas de MB cada par de meses. Está disponible en AUR.
tuk0z
0

Sugeriría AUTOMATIZAR mirar sus propios archivos muy antiguos y ver si es necesario y eliminarlos. Esto se puede hacer con dos cosas. Uno escribiendo un findcomando para buscar archivos muy antiguos. y usar esta salida (quizás canalización) para lograteguiar para archivar archivos anteriores a 3 meses y eliminar archivos anteriores a 3 meses en el archivo y enviar un correo a 1 día antes de eliminarlo. Para que pueda estar seguro de que no ha perdido ningún archivo importante. Entonces, finalmente, necesitaría los siguientes comandos para lograr lo anterior:

find , | , logrotate , mail, crontab

No voy a alimentarte con cuchara. He hecho esto antes ha sido bastante exitoso con esto y luego fue descartado porque decidimos ir nagiosa monitorearlo, ya que estaba más optimizado para hacer ese tipo de cosas en un servidor corp. Creo que si el mailcomando aún no está configurado para usted, es posible que el descanso más difícil sea directo. Todo esto debe hacerse a través de secuencias de comandos bash y ponerlo en el trabajo cron y ejecutarlo cada x días. Aprenda scripts de bash, será muy útil no solo para esto, sino para facilitarle la vida con * nix. Por lo tanto, use su motor de búsqueda de Internet favorito y lea sobre los comandos anteriores y las secuencias de comandos bash. Y átalos y pruébalo. Una vez satisfecho poner a uso regular. Les aseguro que será divertido hacer esto. Aprenderá mucho si no ha hecho esto antes.

  • Espero que ayude
bagavadhar
fuente
1
Desde mi experiencia, descubrí que la mayoría de las cosas que ocupan el disco no son archivos relacionados con el sistema operativo, sino mis propios archivos acumulados durante un período de tiempo, por lo tanto, sugerí lo anterior.
bagavadhar