it-swarm-es.tech

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

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

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

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

30
Stefan

Aquí hay algunos puntos con los que podría comenzar:

  • Eche un vistazo a los paquetes instalados en su sistema con pacman -Q y 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

  • Siempre usa pacman -Rs para eliminar también las dependencias de paquetes no utilizados.

  • Para encontrar "archivos grandes" y carpetas que usan partes grandes del disco, una buena adición a du es 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.

19
echox

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. eliminando cualquier .a archivos en /usr/lib (solo si nunca usa el sistema para compilar software. nota: esto incluye usar makepkg)
  5. eliminando todo en /usr/include (solo si nunca usa el sistema para compilar software)
  6. eliminando documentación innecesaria de /usr/share/doc y /usr/share/info
  7. (MUY MALO IDEA a menos que sea para un servidor) eliminando páginas de manual de /usr/share/man
  8. (también es una mala idea) eliminar descriptores de terminal innecesarios de /usr/share/terminfo y archivos de zona horaria innecesarios de /usr/share/zoneinfo
  9. (PELIGROSO) corriendo strip * en todas las carpetas que contienen archivos binarios ejecutables (/usr/bin y /usr/sbin)
  10. (en situaciones extremas) usando una herramienta como upx para comprimir archivos binarios más grandes (los archivos 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 usando upx significa que todo el binario sin comprimir debe caber en 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 / para 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 profundo conocimiento, experiencia y comprensión de los componentes internos de Linux y Arch Linux . Jugar con 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 en /usr/lib/firmware.)

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

Ejecuté con éxito un servidor NAS desde un dispositivo Disk-on-Module 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 biblioteca libgo viene con gcc-libs y AFAIK solo lo usan las 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 he eliminado de mis "mini" instalaciones sin efectos negativos en nada de lo que hago (pero, de nuevo, ¡ese soy yo, YMMV!)

  • Encogiendo 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 usa Python, puede ahorrar aproximadamente 37MB quitando la biblioteca test de python2: rm -r /usr/lib/python2.7/test y unos 66 MB eliminándolo para python3: rm -r /usr/lib/python3.6/test.

  • De nuevo para Python, puedes deshacerte de la .pyo archivos y el .py archivos. Los .pyo los archivos son archivos "optimizados", pero Python nunca los usa realmente. El .py los archivos son el código fuente sin formato para la biblioteca estándar. Los únicos archivos Python normalmente se lee cuando se ejecuta Python es el .pyc (archivos compilados en python). cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \; y cd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Eliminando datos locales innecesarios. Hay un paquete AUR llamado localepurge que automatiza esto. De lo contrario, tienes que jugar en /usr/share/locale. Debe mantener su propio entorno local y locale.alias. Para mí aquí en los Estados Unidos, manteniendo en_US y locale.alias y eliminando todo lo demás se redujeron unos 80 MB.

Ahora, lo que quiero ver es una herramienta que analiza su sistema y determina 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 debería armar una "distribución" de Arch que use uClibc o diet-libc o algo similar. Ese podría ser un divertido proyecto de verano. :-)

11
fdmillion

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 / Puedes bajar dos niveles:

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    /

Yo ignoro /mnt (porque es una unidad externa) Hay dos directorios a la mente: var y 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

Yo tengo 660M /var/cache/pacman. Era 1.8gb, pero corrí pacman -Sc para eliminar 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.*
5
mist

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 se instalaron para idiomas que no uso. Sin embargo, no estoy seguro de si Arch Linux incluso instala todos esos archivos.

3
oliver

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 comando find para buscar archivos muy antiguos. y usando esta salida (tal vez pipe) a la secuencia de comandos lograte 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, he tenido bastante éxito con esto y luego lo descarté porque decidimos ir con nagios para el monitoreo, ya que estaba más optimizado para hacer ese tipo de cosas en un servidor corp. Creo que si el comando mail 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
0
bagavadhar