hazael.dev

· Amuyi

Hacer espacio sin perder nada

Dos barras horizontales comparan el disco antes y después de la limpieza. Antes, 96% ocupado, casi todo por simuladores, cachés y archivos de soporte de Xcode. Después, 83% ocupado, con 74 GB libres.
Del 96% al 83% en una mañana

Una mañana la Mac avisó que el disco estaba casi lleno: 96% ocupado, 21 GB libres. Lo primero que pensé fue mover mis fotos y documentos a un disco externo. Antes de mover nada, medí, y esa medición cambió el plan.

Esta guía usa la Terminal, la app de macOS donde se escriben comandos (la encuentras en Aplicaciones → Utilidades). Cada comando va en su propia caja; debajo verás un ejemplo de lo que responde la Mac y qué significa cada parte. Los nombres de carpetas son de ejemplo: usa los tuyos.

Dos símbolos que aparecen seguido:

1. Medir cuánto espacio queda

df -h /System/Volumes/Data

df significa disk free (disco libre) y -h pide los tamaños en unidades fáciles de leer (G para gigas, M para megas). La Mac responde algo así:

Filesystem     Size   Used  Avail Capacity  Mounted on
/dev/disk3s5  460Gi  413Gi   21Gi    96%    /System/Volumes/Data

2. Encontrar qué pesa más

du -sh ~/* ~/Library/* 2>/dev/null | sort -h | tail -8

Este comando tiene tres piezas unidas con |, que pasa el resultado de una a la siguiente:

La respuesta se parece a esto:

2.0G   /Users/tu-usuario/Documentos
3.7G   /Users/tu-usuario/Pictures
 16G   /Users/tu-usuario/Library/Caches
 41G   /Users/tu-usuario/Library/Developer

Cada línea es tamaño y carpeta. Aquí estuvo la sorpresa: mis fotos y documentos sumaban menos de 10 GB. El peso real estaba en Library/Developer, donde Xcode, la herramienta de Apple para hacer apps, guarda sus archivos. Sumando lo que Xcode tiene en otras partes del sistema, eran más de 170 GB.

3. Borrar primero lo que se puede volver a descargar

Hay archivos que son como la vajilla desechable: si los tiras, puedes conseguir otros iguales. Los simuladores (iPhones y relojes virtuales para probar apps), las cachés (copias temporales que las apps guardan para ir más rápido) y los archivos de soporte de Xcode entran ahí. Son lo más seguro de borrar, y casi siempre lo más grande.

xcrun simctl runtime list -j

Este comando lista los simuladores instalados. -j pide la respuesta en JSON, un formato de texto ordenado por etiquetas. Cada simulador aparece así (recortado):

"2B8996D4-91C7-46F6-BE1E-919D836E7931" : {
  "platformIdentifier" : "com.apple.platform.iphonesimulator",
  "version" : "18.0",
  "sizeBytes" : 8400000000,
  "lastUsedAt" : null
}

Diez simuladores tenían null: los instaló una actualización y nunca los abrí. Para borrar uno, copias su identificador:

xcrun simctl runtime delete 2B8996D4-91C7-46F6-BE1E-919D836E7931
xcrun simctl delete unavailable

La primera línea borra ese simulador. La segunda limpia los iPhones virtuales que dependían de simuladores que ya no existen. Si todo sale bien, la Mac no responde nada: en la Terminal, el silencio casi siempre significa éxito. Al borrarlos, macOS también limpió sus cachés.

Luego revisé ~/Library/Developer/Xcode/iOS DeviceSupport. Ahí Xcode guarda una copia de soporte cada vez que conectas el iPhone con una versión nueva de iOS:

3.5G   iPhone16,2 18.6 (22G86)
5.2G   iPhone16,2 26.1 (23B85)
5.6G   iPhone16,2 26.6.1 (23G83)
6.4G   iPhone16,2 27.0 (24A437)

Cada línea es tamaño, modelo de teléfono (iPhone16,2 es el nombre interno de un modelo) y versión de iOS. Me quedé con las dos versiones que mi teléfono usa hoy y borré las anteriores; si algún día hacen falta, Xcode las vuelve a crear al conectar el teléfono.

Resultado: 53 GB libres en minutos, sin tocar un solo archivo personal.

4. Las apps que nunca abriste

macOS anota cuándo abriste cada app por última vez:

mdls -name kMDItemLastUsedDate /Applications/*.app

mdls lee los datos que macOS guarda sobre cada archivo, y kMDItemLastUsedDate es el dato de “último uso”. El * significa “todas”: todas las apps de la carpeta Aplicaciones. La respuesta es una línea por app:

kMDItemLastUsedDate = 2026-10-30 18:42:11 +0000
kMDItemLastUsedDate = (null)

Elegí las que podía soltar y las mandé a la Papelera, que deja tiempo para arrepentirse. Las apps que instala el sistema piden tu contraseña para moverse; esas las arrastré desde el Finder. Vaciar la Papelera lo dejé para el final, cuando ya estaba seguro, porque ese paso sí es definitivo.

5. Mover a un disco externo: copiar, verificar, borrar

Para las fotos y los proyectos archivados usé tres pasos, siempre en este orden.

Paso 1, copiar:

rsync -aH ~/Archivo/Fotos /Volumes/Externo/Archivo/

rsync copia carpetas con cuidado. -a conserva fechas y permisos, y -H respeta los enlaces duros (cuando un mismo archivo aparece en dos carpetas sin ocupar doble espacio). /Volumes/Externo es donde macOS muestra el disco externo; cambia Externo por el nombre del tuyo. Si la copia sale bien, rsync no responde nada.

Paso 2, verificar:

rsync -aHcn --itemize-changes ~/Archivo/Fotos /Volumes/Externo/Archivo/

Es el mismo comando con tres añadidos:

Si no responde nada, cada archivo del disco externo es idéntico al original. Si algo no coincide, verás una línea como esta:

>fc........ Fotos/2024/DSC01177.ARW

Las primeras letras cuentan qué pasa: > significa que el archivo tendría que copiarse otra vez, f que es un archivo y c que su contenido es distinto. Luego viene el nombre del archivo. En ese caso, repite el paso 1 y verifica de nuevo.

Paso 3, borrar el original, sólo cuando el paso 2 no respondió nada:

rm -rf ~/Archivo/Fotos

rm borra sin pasar por la Papelera, por eso va al final. Una copia verificada es una mudanza; sin verificar, es una esperanza.

Dejé en su lugar la fototeca de la app Fotos. Fotos e iCloud esperan encontrarla en el disco interno, y moverla a mano es la forma más fácil de romperla.

6. Medir otra vez al final

Al repetir el comando del paso 1, había menos espacio libre que una hora antes. Busqué con el comando del paso 2 y encontré la causa: un administrador de programas para desarrolladores había actualizado dos apps esa misma mañana, y guardó los instaladores y respaldos de las versiones anteriores, 11 GB en total. Medir al final importa tanto como medir al principio, porque la máquina sigue trabajando mientras limpias.

Una estrategia para lo que viene

La limpieza dejó una idea clara: cada archivo pertenece a uno de tres tipos, y cada tipo pide su propio cuidado.

Tipo Ejemplos Dónde vive Cómo se sincroniza
Regenerable simuladores, cachés, dependencias sólo en la máquina se vuelve a descargar
De trabajo código, sitios, notas activas cada máquina donde trabajas git, con un remoto como fuente de verdad
Archivo fotos RAW, proyectos terminados un disco externo rsync en una sola dirección, con verificación

Git es un programa que guarda la historia de cada cambio en una carpeta y la comparte entre máquinas. El remoto es la copia central, en un servidor en casa o en la nube, de donde las demás máquinas toman y a donde mandan sus cambios.

Las reglas que me llevo:

El disco pasó del 96% al 83%. Lo que más ocupaba era lo que menos valía, y lo que más valía cabía en unos cuantos gigas.

← All storiesTodas las historias