Tu tienda online vende bien, los clientes escriben desde distintos países y de pronto todo se vuelve inestable: los pedidos no se registran, el correo no entra y el administrador de tu web muestra un error extraño. Cuando le echás un vistazo a tu VPS descubrís que el problema es tan simple como incómodo: no queda espacio en el disco. Le pasa a emprendedores de toda Latinoamérica y se puede solucionar sin perder información si lo hacés con método.
Esta guía es de nivel intermedio. Vas a usar SSH y algunos comandos básicos de Linux, todos explicados. Si tu sitio está en un dominio .com, .net u .org, todo lo que sigue te sirve igual.
Por qué un disco lleno rompe tantas cosas a la vez
En tu servidor, un mismo espacio de almacenamiento lo comparten la web, la base de datos, el correo, los respaldos y el propio sistema operativo. Cuando llega al 100%, ningún servicio puede guardar información nueva. Por eso los síntomas son tan variados: páginas en blanco, formularios que no envían, sesiones que se cierran solas, correos rebotados o una base de datos que se detiene.
La regla es simple: primero confirmar, después localizar, luego decidir y, recién al final, limpiar. Apurarse a borrar sin entender qué ocupa el lugar es la forma más rápida de generar un problema mayor.
Paso 1: conectate y mirá el estado con df
Desde tu computadora, abrí una terminal y entrá al servidor:
ssh usuario@IP-de-tu-servidor
Escribí:
df -h
Verás una tabla de particiones. Enfocate en la que aparece como / y en su columna Use%. Si supera el 90%, hay que actuar; si está en 100%, es urgente. Tomá nota del número inicial para saber cuánto lograste recuperar.
Paso 2: descubrí quién ocupa el lugar con du
Este comando muestra las carpetas más pesadas del servidor:
sudo du -h –max-depth=1 / 2>/dev/null | sort -hr | head -15
Puede tardar un rato en responder. Generalmente la carpeta /var aparece arriba porque guarda logs y datos de servicios, y /home por los archivos de tus sitios. Seguí bajando de nivel con el mismo comando:
sudo du -h –max-depth=1 /var | sort -hr | head -10
Es como ir abriendo cajas: en dos o tres pasos vas a llegar a la que contiene el problema.
Paso 3: encontrá los archivos enormes
Un atajo útil es pedirle al sistema que liste todo lo que pese más de 500 MB:
sudo find / -type f -size +500M 2>/dev/null
Prestá atención a extensiones como .zip, .tar.gz, .sql y .bak. Suelen ser copias antiguas de seguridad o exportaciones de bases de datos que quedaron olvidadas. Antes de borrar, verificá que exista una versión más reciente en otro lugar y, si tenés dudas, descargala a tu equipo primero.
Paso 4: poné orden en los logs
Los registros de tu servidor web, de PHP y del sistema crecen a diario. Mirá cuáles son los mayores:
sudo ls -lhS /var/log | head -10
Para reducir el registro del sistema de forma segura, usá:
sudo journalctl –vacuum-size=200M
Y si un archivo de log en particular pesa gigas y no lo necesitás, vacialo sin eliminarlo:
sudo truncate -s 0 /var/log/nombre-del-archivo.log
Así el programa que lo escribe sigue funcionando sin inconvenientes. Si querés conservar su contenido, comprimilo antes y bajalo a tu computadora.
Paso 5: limpiá los paquetes que ya no sirven
Cada actualización del sistema deja archivos de instalación acumulados. En Ubuntu o Debian corré:
- sudo apt clean para vaciar la caché de instaladores.
- sudo apt autoremove para retirar dependencias sin uso.
En AlmaLinux, Rocky o CentOS, el equivalente es sudo dnf clean all. Es una limpieza sin riesgos y a veces libera cientos de megas de un solo paso.
Paso 6: revisá los inodos si nada cuadra
Si df -h muestra espacio libre pero el sistema sigue diciendo «no space left on device», el problema puede estar en los inodos. Cada archivo usa uno, y una carpeta con cientos de miles de archivos diminutos, como sesiones o cachés, puede agotarlos. Comprobalo con:
df -i
Si el valor de IUse% se acerca a 100%, buscá la carpeta con más archivos y vaciá los temporales antiguos. Es un caso más común de lo que parece en sitios con mucho movimiento.
Paso 7: reiniciá y probá que todo vuelva a la normalidad
Volvé a ejecutar df -h y comparalo con tu dato inicial. Lo ideal es quedar por debajo del 80%. Después reiniciá los servicios afectados:
sudo systemctl restart nginx (o apache2) y sudo systemctl restart mariadb (o mysql).
Abrí tu web, hacé un pedido de prueba, mandá un correo y subí una imagen desde el panel. Si persiste algún error, consultá el log del servicio: con espacio libre ya va a poder registrar el motivo real.
Dejá el mantenimiento automatizado
Para que no te vuelva a ocurrir, incorporá estos hábitos:
- logrotate: ajustá los archivos de /etc/logrotate.d/ para conservar solo unas pocas semanas de registros.
- Respaldos externos: enviá las copias a otro almacenamiento y dejá en el servidor solo las últimas.
- Chequeo mensual: anotá en tu calendario ejecutar df -h una vez por mes.
- Alerta temprana: un script con cron puede enviarte un correo cuando el uso supere el 85%.
Con estas tres o cuatro tareas, el disco lleno pasa de ser una sorpresa a ser algo que ves venir con semanas de anticipación.
Errores frecuentes al limpiar
- Usar rm -rf sin revisar la ruta. Un carácter de más puede borrar mucho más de lo que querías.
- Eliminar archivos de base de datos a mano en lugar de usar el gestor correspondiente.
- Borrar carpetas del sistema porque «se ven grandes».
- Limpiar sin haber hecho antes un respaldo reciente y comprobado.
Si el proyecto simplemente creció
Puede que hagas toda la limpieza y el disco siga muy ocupado. No es un fracaso: significa que tu negocio tiene más productos, más imágenes y más clientes. La respuesta correcta es ampliar el almacenamiento de tu VPS y trabajar con margen, en vez de repetir esta limpieza cada mes.
Un caso real para practicar la lectura de resultados
Piensa en una tienda online con unos 2.000 productos. df -h muestra la partición principal al 98%. Con du descubres que la carpeta de imágenes de la tienda pesa 22 GB porque cada foto original de celular, de 5 o 6 megas, se subió sin comprimir. Con una herramienta de compresión por lote, las imágenes bajan a menos de 1 MB cada una y recuperas casi 18 GB de golpe, sin que el cliente note diferencia alguna. Es uno de los ahorros más grandes y menos conocidos.
Cómo reducir el peso de imágenes y archivos subidos
Si el espacio lo ocupan las imágenes o los archivos que suben tus usuarios, estos hábitos ayudan mucho:
- Redimensiona antes de subir: una foto para web rara vez necesita más de 1600 píxeles de ancho.
- Elige el formato adecuado: WebP o JPG comprimido pesan mucho menos que PNG para fotografías.
- Elimina duplicados: es común encontrar la misma imagen subida cuatro o cinco veces.
- Revisa los archivos adjuntos antiguos: PDF y videos pesados que ya no se usan pueden trasladarse a otro almacenamiento.
Con estas prácticas, el mismo VPS puede alojar el doble de contenido antes de necesitar más disco.
Checklist de emergencia
- Confirma el problema con df -h.
- Ubica al culpable con du y find.
- Guarda fuera del servidor lo que valga la pena conservar.
- Vacía logs y limpia paquetes.
- Revisa inodos si nada cuadra.
- Reinicia servicios y prueba tu sitio.
Un servidor ordenado no depende de la suerte: depende de tener una lista clara para seguir cuando aparece el problema.
Una herramienta que te ahorra tiempo: ncdu
Si repetir el comando du te resulta pesado, existe un programa llamado ncdu que hace lo mismo de forma interactiva. Se instala con sudo apt install ncdu en Ubuntu o Debian. Luego lo ejecutas con sudo ncdu / y te muestra las carpetas ordenadas por tamaño. Con las flechas del teclado entras en una carpeta, y con Enter bajas al siguiente nivel. Para volver, presionas la flecha izquierda. Es como recorrer el explorador de archivos de tu computadora, pero dentro de la terminal.
La herramienta tarda un poco en escanear en la primera pasada, pero después navegar es instantáneo. Además, incluye una opción para borrar directamente desde ahí con la tecla d; úsala con mucho cuidado y solo sobre archivos que tengas identificados. Para principiantes en la terminal, ncdu es una manera amigable de encontrar al culpable sin memorizar comandos largos.
Un pequeño script que te avisa antes de que sea tarde
Para no depender de tu memoria, puedes automatizar un aviso. Crea un archivo llamado alerta-disco.sh con este contenido:
#!/bin/bash
USO=$(df / –output=pcent | tail -1 | tr -dc ‘0-9’)
if [ «$USO» -gt 85 ]; then echo «Disco al ${USO}%» | mail -s «Alerta de disco» tucorreo@ejemplo.com; fi
Dale permisos de ejecución con chmod +x alerta-disco.sh y prográmalo con cron para que corra una vez al día. Cada mañana el sistema revisa el porcentaje de uso y, si supera el 85%, te envía un mensaje. Necesitas tener configurado el envío de correo en el servidor para que funcione. Si no lo tienes, puedes hacer que el script escriba en un archivo o que llame a un servicio de notificaciones de tu preferencia.
Este sencillo control cambia por completo tu forma de trabajar: en lugar de descubrir el problema cuando la web ya falló, lo ves venir con días de anticipación.
Para cerrar
Ahora tenés un procedimiento completo: medir con df, rastrear con du, ordenar logs, limpiar paquetes, controlar inodos y automatizar la prevención. Aplicalo hoy en tu servidor, incluso si todo funciona bien, y así vas a detectar a tiempo cualquier acumulación. Un VPS ordenado es un negocio más estable, y vos vas a poder concentrarte en lo que de verdad importa: vender y crecer.
