🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo liberar espacio en disco en un servidor Linux

Actualizado el 25 de febrero de 2026

¿Por qué tu servidor Linux se queda sin espacio?

Si estás leyendo esto, probablemente te ha pasado: intentas actualizar un sitio web, subir un archivo o simplemente revisar el panel de control y, de repente, todo falla. El servidor responde lento, los correos no salen o peor aún, la web muestra un error de "disco lleno". Esto es más común de lo que parece, y la buena noticia es que liberar espacio en linux no requiere ser un experto en sistemas.

El problema suele acumularse por varias razones: logs de sistema que crecen sin control, cachés de paquetes, archivos temporales, correos electrónicos antiguos o incluso versiones viejas de kernels que ya no usas. Cada uno de estos elementos ocupa espacio poco a poco, y cuando menos lo esperas, el disco está al 95% o 100% de su capacidad.

En esta guía completa, vamos a explicarte paso a paso cómo identificar qué está consumiendo tu almacenamiento y cómo recuperar ese espacio de forma segura. No importa si tu servidor usa Ubuntu, Debian, CentOS o cualquier otra distribución, los comandos y técnicas que verás aquí son universales.


Primeros pasos: Diagnóstico rápido del disco

Antes de borrar nada, necesitas saber cuánto espacio tienes y dónde se está yendo. Es como cuando limpias tu casa: primero miras qué hay en cada habitación y luego decides qué tirar. Vamos a hacer exactamente eso con tu servidor.

El comando df para ver el estado general

El comando df (disk free) te muestra el uso de espacio de todas las particiones montadas. Es la primera herramienta que debes usar cuando sospechas que el disco lleno servidor está causando problemas.

Abre tu terminal y escribe:

df -h

La opción -h hace que los resultados sean legibles para humanos (en gigabytes y megabytes en lugar de bloques). Verás algo así:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G   18G  1.5G  93% /
tmpfs           500M  12K  500M   1% /dev/shm
/dev/vdb1       100G   80G   20G  80% /home

Lo que te interesa aquí es la columna Use%. Si alguna partición está al 90% o más, tienes un problema claro. La línea con / es la raíz del sistema, y suele ser la que más se llena. En este ejemplo, la partición raíz está al 93%, lo que significa que necesitas actuar.

El comando du para encontrar los "culpables"

Una vez que sabes qué partición está llena, es hora de usar du (disk usage) para ver qué carpetas pesan más. Este comando recorre los directorios y calcula el espacio que ocupan.

Para ver el tamaño de los directorios en la raíz, ejecuta:

sudo du -h --max-depth=1 / 2>/dev/null | sort -hr | head -20

Vamos a desglosar este comando:

  • sudo du -h: ejecuta como superusuario (necesario para acceder a todos los archivos) y muestra tamaños legibles.
  • --max-depth=1: solo mira un nivel de profundidad, es decir, las carpetas directamente dentro de /.
  • 2>/dev/null: descarta los errores de permisos para que la salida sea limpia.
  • sort -hr: ordena los resultados de mayor a menor tamaño.
  • head -20: solo muestra los 20 primeros resultados.

El resultado te dirá, por ejemplo, que /var ocupa 8 GB, /home ocupa 5 GB y /usr ocupa 3 GB. A partir de ahí, puedes ir profundizando en cada una de esas carpetas.

Por ejemplo, si /var es el culpable, ejecuta:

sudo du -h --max-depth=1 /var 2>/dev/null | sort -hr | head -20

Así irás descendiendo hasta encontrar la carpeta exacta que está llenando tu disco. Es un proceso de "embudo" que te lleva directo al problema.


Limpiar logs en Linux: El enemigo silencioso

Una de las causas más frecuentes de un disco lleno servidor son los archivos de log (registros). Cada vez que tu sistema escribe un evento, una visita web o un error, lo guarda en un archivo de texto. Con el tiempo, estos archivos pueden crecer hasta ocupar gigabytes.

¿Qué son los logs y por qué se acumulan?

Los logs son registros de actividad del sistema y de las aplicaciones. Servicios como Apache, Nginx, MySQL o el propio sistema operativo generan logs constantemente. En un servidor con mucho tráfico, estos archivos pueden crecer a un ritmo alarmante.

Las ubicaciones típicas son:

  • /var/log/: la mayoría de los logs del sistema.
  • /var/log/apache2/ o /var/log/nginx/: logs de servidores web.
  • /var/log/mysql/: logs de bases de datos.

Cómo ver el tamaño de los logs

Antes de borrar nada, comprueba cuánto espacio están ocupando:

sudo du -sh /var/log/*

Esto te mostrará el tamaño de cada archivo dentro de la carpeta de logs. Verás nombres como syslog, auth.log, error.log y otros.

Rotación de logs: La solución automática

La forma más eficiente de limpiar logs linux es configurar la rotación de logs. Esto significa que el sistema crea archivos nuevos automáticamente y comprime los antiguos después de un tiempo determinado.

El sistema más común es logrotate, que ya viene instalado en la mayoría de distribuciones. Puedes comprobar su configuración en /etc/logrotate.conf y en /etc/logrotate.d/.

Para ver qué reglas hay configuradas:

cat /etc/logrotate.conf

Y para ver las configuraciones específicas de cada servicio:

ls /etc/logrotate.d/

Si la rotación ya está activa, no deberías tener problemas graves. Pero si no lo está, puedes configurarla. Un ejemplo básico de configuración para un log de Apache sería:

/var/log/apache2/*.log {
    weekly
    rotate 4
    compress
    delaycompress
    missingok
    notifempty
    create 640 www-data adm
}

Esta configuración rota los logs semanalmente, mantiene 4 copias comprimidas y crea archivos nuevos con los permisos correctos.

Limpiar logs manualmente

Si necesitas liberar espacio urgente, puedes eliminar los logs antiguos manualmente:

sudo find /var/log -type f -name "*.log" -mtime +30 -delete

Este comando borra todos los archivos .log que tengan más de 30 días. Ten cuidado con esto, ya que perderás información histórica. Es mejor usar logrotate para automatizar el proceso.

[TIP] Si tu servidor usa Syspanel (el panel de control accesible por el puerto 2106), puedes programar la rotación de logs desde su interfaz gráfica. Ve a la sección de "Herramientas del sistema" y busca la opción de mantenimiento. Esto te ahorrará tener que usar la línea de comandos.


Limpiar cachés y paquetes temporales

Los gestores de paquetes (como apt en Ubuntu/Debian o yum en CentOS) descargan los paquetes a una carpeta temporal antes de instalarlos. Estos archivos se quedan ahí y pueden ocupar varios gigabytes.

Limpiar la caché de apt (Ubuntu, Debian)

El comando más sencillo es:

sudo apt clean

Esto elimina todos los archivos .deb descargados que ya se han instalado. Si quieres ver cuánto espacio vas a liberar, primero puedes consultar el tamaño de la caché:

sudo du -sh /var/cache/apt/archives

Si el resultado es muy grande (más de 1 GB), vale la pena limpiarla.

También puedes usar el comando autoremove para eliminar paquetes que ya no se necesitan:

sudo apt autoremove

Este comando borra dependencias que quedaron huérfanas después de desinstalar programas. Es seguro y recomendable ejecutarlo de vez en cuando.

Limpiar la caché de yum (CentOS, RHEL)

En sistemas CentOS, el comando equivalente es:

sudo yum clean all

Y para eliminar cachés antiguas:

sudo yum autoremove

Limpiar la caché del sistema

El sistema operativo también guarda archivos temporales en /tmp y en /var/tmp. Estos archivos se crean cuando programas en ejecución necesitan espacio temporal. Aunque se limpian solos al reiniciar, a veces se acumulan.

Para vaciar la carpeta /tmp de forma segura:

sudo rm -rf /tmp/*

[WARNING] Ten cuidado con borrar /tmp. Asegúrate de que no haya procesos críticos usando esa carpeta. En caso de duda, reinicia el servidor primero y luego limpia.


Kernels antiguos y paquetes huérfanos

Cada vez que actualizas el sistema, se instala un nuevo kernel (el núcleo del sistema operativo). Los kernels antiguos no se borran automáticamente, y cada uno puede ocupar entre 200 MB y 500 MB. Con el tiempo, esto se convierte en un problema significativo.

Cómo ver los kernels instalados

En Ubuntu/Debian:

dpkg --list | grep linux-image

En CentOS/RHEL:

rpm -qa | grep kernel

Verás varias versiones. Solo deberías mantener la más reciente y quizás la anterior como respaldo.

Eliminar kernels antiguos

En Ubuntu/Debian:

sudo apt autoremove --purge

Este comando elimina automáticamente los kernels que ya no se usan. Es la forma más segura, ya que el sistema sabe cuál es el kernel activo.

En CentOS/RHEL:

sudo package-cleanup --oldkernels --count=2

Este comando mantiene los 2 kernels más recientes y elimina el resto.

[INFO] Si no estás seguro de cuál es tu kernel actual, ejecuta uname -r y verás la versión en uso. Nunca borres ese kernel, ya que el servidor no arrancaría.


Archivos grandes y duplicados: La búsqueda manual

A veces, el espacio se va en archivos que no son del sistema: backups antiguos, archivos subidos por usuarios, bases de datos que crecen sin control, etc.

Encontrar archivos grandes

Para localizar los archivos más grandes de todo el servidor, puedes usar:

sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -hr | head -20

Este comando busca archivos de más de 100 MB y los muestra ordenados por tamaño. Verás la ruta completa, así que podrás decidir si los necesitas o no.

Buscar archivos duplicados

Si sospechas que hay archivos duplicados (por ejemplo, copias de seguridad repetidas), puedes usar fdupes:

sudo apt install fdupes  # En Ubuntu/Debian
sudo yum install fdupes  # En CentOS

Luego, para encontrar duplicados en una carpeta específica:

fdupes -r /home

Este comando te mostrará los archivos que son idénticos. Puedes elegir cuáles eliminar manualmente.


El caso especial de las bases de datos

Las bases de datos (MySQL, MariaDB, PostgreSQL) pueden crecer enormemente y llenar el disco. Además, sus logs de transacciones también ocupan espacio.

Ver el tamaño de las bases de datos

En MySQL/MariaDB:

mysql -u root -p -e "SELECT table_schema AS 'Database', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)' FROM information_schema.tables GROUP BY table_schema;"

Esto te dará una tabla con el tamaño de cada base de datos.

Optimizar y limpiar tablas

Puedes optimizar las tablas para recuperar espacio desfragmentado:

mysqlcheck -o --all-databases -u root -p

Y para eliminar logs binarios antiguos de MySQL:

mysql -u root -p -e "PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY;"

[WARNING] Antes de tocar nada en la base de datos, haz una copia de seguridad. Un comando mal ejecutado puede causar pérdida de datos irreparable.


Limpiar correos electrónicos y colas de mensajes

Si tu servidor maneja correo (por ejemplo, con Postfix o Exim), los mensajes acumulados pueden ocupar mucho espacio. Esto es especialmente común en servidores que envían notificaciones automáticas.

Ver el tamaño de la cola de correo

sudo du -sh /var/spool/mail/

Y para ver cuántos mensajes hay en la cola:

mailq | tail -1

Eliminar correos antiguos

Para borrar correos de más de 30 días:

sudo find /var/spool/mail/ -type f -mtime +30 -delete

Si usas un servidor de correo como Postfix, también puedes limpiar la cola de forma selectiva:

postsuper -d ALL

Este comando elimina todos los mensajes en la cola. Úsalo con cuidado.


Herramientas gráficas y alternativas

Si no te sientes cómodo con la línea de comandos, existen herramientas gráficas que pueden ayudarte.

Ncdu: El navegador de disco interactivo

ncdu (NCurses Disk Usage) es una herramienta que muestra el uso del disco de forma interactiva y visual. Es perfecta para explorar el sistema de archivos y encontrar lo que ocupa más espacio.

Para instalarlo:

sudo apt install ncdu  # Ubuntu/Debian
sudo yum install ncdu  # CentOS

Y para ejecutarlo:

ncdu /

Verás una interfaz con barras de progreso y porcentajes. Puedes navegar con las flechas del teclado y eliminar archivos directamente con la tecla d.

Syspanel y su herramienta de limpieza

Si tu servidor usa Syspanel (accesible por el puerto 2106), encontrarás una sección de "Almacenamiento" o "Mantenimiento" que te permite ver el uso del disco y limpiar cachés de forma gráfica. Es una opción muy cómoda si prefieres no usar la terminal.


Prevención: Evitar que el disco se llene de nuevo

Una vez que has liberado espacio, es importante implementar medidas para que no vuelva a ocurrir.

Configurar alertas de espacio

Puedes configurar una alerta que te avise cuando el disco alcance un cierto nivel de uso. Con cron y un simple script, puedes recibir un correo cuando el espacio libre sea bajo.

Crea un script en /usr/local/bin/check_disk.sh:

#!/bin/bash
THRESHOLD=80
CURRENT=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$CURRENT" -gt "$THRESHOLD" ]; then
    echo "Alerta: El disco está al ${CURRENT}%" | mail -s "Alerta de espacio en disco" tu@email.com
fi

Luego, hazlo ejecutable y añádelo al cron:

chmod +x /usr/local/bin/check_disk.sh
crontab -e

Y añade la línea:

0 * * * * /usr/local/bin/check_disk.sh

Esto ejecutará el script cada hora.

Programar limpiezas automáticas

Puedes usar cron para ejecutar los comandos de limpieza automáticamente. Por ejemplo, para limpiar la caché de apt cada semana:

0 4 * * 0 apt clean && apt autoremove -y

Y para rotar logs, asegúrate de que logrotate esté bien configurado y se ejecute diariamente (ya lo hace por defecto).


Preguntas frecuentes (FAQ)

¿Cuánto espacio debería tener libre en mi servidor?

Se recomienda mantener al menos un 15-20% del espacio total libre. Esto es necesario para que el sistema operativo pueda crear archivos temporales, actualizarse y funcionar correctamente. Si el disco llega al 100%, el servidor puede dejar de responder por completo.

¿Es seguro borrar los logs de mi servidor?

S

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel