Empieza con la app instalada
Esta guía es para Mac. DiskPress for Files para iPhone y iPad no tiene CLI ni monitoreo continuo de carpetas. Para automatizar en iPhone y iPad, consulta los flujos de Atajos de Apple y sus requisitos de iOS.
Mac App Store y Setapp incluyen las mismas funciones CLI. Elige tu descarga. La CLI es el ejecutable dentro de la app, no una descarga separada. Los ejemplos usan la copia de Mac App Store en /Applications/DiskPress.app. Ajusta la ruta si tu copia está en otro lugar.
"/Applications/DiskPress.app/Contents/MacOS/DiskPress" --help Para Setapp usa el ejecutable de tu instalación de Setapp. El nombre y ubicación del paquete pueden variar. Las ediciones guardan ajustes y autorizaciones por separado, así que configura la misma que invocas. Su --help integrado muestra ejemplos con la ruta de esa instalación.
- Abre esa copia de DiskPress y ve a Configuración, luego a Rutas autorizadas.
- Agrega los archivos o carpetas específicos que el comando podrá leer y escribir. Para un archivo comprimido, autoriza la carpeta que lo contiene.
- Inspecciona la selección con
scanantes de elegiroptimize.
Un inicio solo por CLI ejecuta DiskPress sin monitoreo recurrente, registro de inicio automático ni análisis inicial del ahorro de ubicaciones. Después de optimizar actualiza ese ahorro en segundo plano. El resultado puede llegar antes, y el anfitrión espera a que terminen comandos y actualización de solo lectura. Una app ya abierta sigue abierta.
Comandos
Coloca estos comandos después de la ruta del ejecutable. Solo scan y optimize aceptan rutas de destino, con un máximo de 500 por solicitud.
| Comando | Qué hace |
|---|---|
paths | Lista autorizaciones de lectura y escritura guardadas y su disponibilidad. |
locations | Lee ubicaciones guardadas, apps vinculadas, último estado, tamaño y ahorro medido. |
savings | Lee el ahorro actual por compresión y deduplicación, además del reciente. |
overview | Lee la información general, incluida la capacidad del volumen personal y el estado de monitoreo. |
settings | Inspecciona ajustes de optimización, perfiles de rendimiento y exclusiones. |
activity | Lee resultados conservados por archivo, del más reciente al anterior, con paginación por cursor. |
scan | Inspecciona destinos y explica su elegibilidad sin optimizar archivos. |
optimize | Analiza destinos y combina compresión y deduplicación donde lo permitan los ajustes y modos de ubicación. La deduplicación debe estar habilitada. |
paths significa permisos y locations destinos de optimización guardados. No son intercambiables. Los cambios de configuración y nuevos permisos se hacen en los ajustes de la app.
Opciones
| Opción | Comportamiento |
|---|---|
--json | Emite eventos JSON separados por líneas en la salida estándar. |
--quiet | Oculta el progreso intermedio y conserva el resultado final. |
--gui | Muestra de inmediato una ventana de progreso con Cancelar para analizar u optimizar. Se cierra al terminar y no concede permisos ni pide confirmación. |
--no-gui | Ejecuta sin abrir ventana. Es el valor predeterminado. No lo combines con --gui. |
--ignore-exclusions | Al analizar u optimizar, omite exclusiones configuradas solo para archivos nombrados explícitamente. El contenido de carpetas sigue respetándolas. Las comprobaciones de seguridad y límites de tamaño siguen vigentes. |
--limit N | Tamaño de página de Actividad de 1 a 500, predeterminado 50. Solo para activity. |
--before ID | Continúa Actividad con el cursor nextBefore del resultado anterior. Solo para activity. |
-- | Finaliza opciones antes de las rutas, incluso nombres que empiezan con guion. |
-h, --help | Muestra la ayuda integrada sin iniciar el servicio de la app. |
--version | Muestra la versión instalada. |
--json y --quiet funcionan con los ocho comandos. Los informes no aceptan rutas de destino ni --gui o --ignore-exclusions.
Qué esperar durante la optimización
La primera búsqueda de duplicados puede tardar más
Cuando ajustes y modos permiten ambas operaciones, DiskPress las combina en una ejecución. La primera búsqueda puede tardar mucho en carpetas grandes, incluso con archivos comprimidos. Las siguientes reutilizan huellas guardadas de archivos sin cambios, incluso tras reiniciar DiskPress. Antes de reemplazar coincidencias se verifican contenido y metadatos.
DiskPress reutiliza los resultados del análisis dentro de una optimización y recuerda archivos sin cambios que no se beneficiaron de comprimir. Evitar otro intento de compresión no los excluye de la búsqueda de duplicados.
Los modos de ubicación también se aplican a CLI
Elige el modo en la tabla Ubicaciones de la app. La CLI lo respeta incluso para archivos individuales o con --ignore-exclusions.
- Comprimir + Deduplicar permite ambas técnicas juntas.
- Solo comprimir permite compresión, no deduplicación.
- Solo deduplicar permite deduplicación, no compresión.
- Deshabilitado bloquea ambas operaciones para los archivos coincidentes.
La ubicación coincidente más específica tiene prioridad. Un archivo guardado prevalece sobre su carpeta y una subcarpeta sobre su padre, incluso si está deshabilitado. Una regla no recursiva cubre solo la carpeta y sus hijos directos. Fuera de ubicaciones guardadas rigen ajustes generales y seguridad.
Deduplicar requiere un modo compatible y el ajuste global activo. Desactiva "Deduplicar archivos idénticos" para apagarlo globalmente. Esto no habilita compresión en ubicaciones Solo deduplicar o Deshabilitado. No hay opción de solo compresión por comando ni comando para cambiar modos. La CLI no muestra la confirmación inicial de deduplicación, ni con --gui.
locations --json informa enabled, pero aún no incluye el modo de cada ubicación. settings.deduplicationEnabled es el interruptor global, no el modo local. Consulta la tabla Ubicaciones para confirmar operaciones permitidas.
La protección de archivos recientes no retrasa la CLI
La protección de archivos recientes retrasa archivos modificados al optimizar ubicaciones guardadas, incluido monitoreo y Optimizar ahora. CLI scan y optimize son solicitudes puntuales explícitas y no aplican la espera, con o sin --gui, incluso para una ubicación guardada.
recentFileProtectionSeconds indica la demora de ubicaciones guardadas, no una espera CLI. Programa comandos después de que el programa que genera tus archivos termine de escribir. Se mantienen la detección de escrituras activas, comprobaciones de cambios y verificación.
Las apps vinculadas siguen protegiendo sus ubicaciones
Si una ubicación tiene una App vinculada, se omiten sus archivos mientras esté abierta. También afecta a archivos individuales por CLI, y --ignore-exclusions no lo evita. Cierra la app vinculada antes de optimizar.
locations --json incluye linkedApplication con bundleIdentifier, path y name, o null si no está configurada. Describe la asociación guardada, no si la app está abierta. Un scan previo no garantiza pasar todas las comprobaciones al optimizar. Consulta las preguntas sobre App vinculada.
Ejemplos útiles
Para facilitar una sesión de Terminal, guarda la ruta del ejecutable en una variable. No instala un comando ni cambia tu configuración de shell.
DISKPRESS="/Applications/DiskPress.app/Contents/MacOS/DiskPress" Inspecciona permisos y ajustes
"$DISKPRESS" --version
"$DISKPRESS" paths --json
"$DISKPRESS" settings --json
"$DISKPRESS" locations --json Analiza sin optimizar
Los ejemplos usan una carpeta de datos terminados. Sustituye la ruta por una carpeta concreta y estable que quieras optimizar y autorízala primero. El análisis no predice la compresión final y algunas comprobaciones solo ocurren al optimizar.
"$DISKPRESS" scan --json -- "$HOME/Documents/Completed Data" Ejecuta una optimización puntual
Esto cambia el almacenamiento de archivos compatibles y puede añadir escrituras. Evita optimizar repetidamente ubicaciones con archivos nuevos o cambios frecuentes. Lee la guía de escrituras SSD antes de programar comandos.
"$DISKPRESS" optimize --json --quiet -- "$HOME/Documents/Completed Data" Muestra el progreso cuando lo necesites
"$DISKPRESS" optimize --gui -- "$HOME/Documents/Completed Data" Lee los resultados
"$DISKPRESS" overview --json
"$DISKPRESS" savings --json
"$DISKPRESS" activity --limit 20 --json El resultado describe el trabajo terminado. Los totales guardados pueden seguir actualizándose. Revisa savings.refreshing y las fechas antes de considerarlos actualizados.
Entiende la salida
El progreso legible va al error estándar y el resumen final a la salida estándar. Con --json, la salida es un flujo de objetos JSON separados, uno por línea. Interprétalo como NDJSON, no como un documento JSON grande.
- Los eventos incluyen
schemaVersion,requestID,sequenceyevent. La versión actual del esquema es 1. - Los tipos son
progress,resultyerror. El progreso se muestrea, así que puede haber saltos en la secuencia. - El evento final incluye
exitCodeymessage. Un eventoresultpuede indicar éxito parcial o cancelación, así que revisa también el código de salida. - Las etiquetas, ayuda y mensajes generados por CLI están en inglés. Los registros y diagnósticos compartidos conservan su texto original. La ventana opcional sigue el idioma de la app.
- Para automatizar usa nombres JSON, códigos de motivo estructurados cuando existan y códigos de salida. No compares texto traducido ni mensajes legibles.
Resultados de análisis y optimización
scan devuelve totalFiles, eligibleFiles, potentialDeduplicationFiles, logicalBytes, allocatedBytes, alreadySavedBytes y los minimumFileBytes y maximumFileBytes aplicados. Los candidatos potenciales no son duplicados confirmados ni una predicción de ahorro.
Los reasons del análisis contienen code, count y message. Los motivos pueden coincidir y una carpeta excluida cuenta una vez porque no se enumera su contenido.
optimize devuelve targets, totalFiles, processedFiles, compressedFiles, deduplicatedFiles, skippedFiles, failedFiles, el resumen inicial scan y un booleano cancelled. Los reasons superiores resumen omisiones o errores recientes, no todo el historial por archivo. Lee activity para resultados individuales.
Otros contadores incluyen alreadyCompressedFiles, insufficientSavingsFiles y noBenefitFiles. Explican resultados, no son archivos adicionales para sumar al total.
El ahorro aparece como compressionSavedBytes, estimatedDeduplicationSavedBytes y totalEstimatedSavedBytes, con tamaños en bytes. Compresión y deduplicación pueden afectar al mismo archivo, así que no sumes sus contadores para obtener archivos distintos. La deduplicación estima almacenamiento compartido, no garantiza un aumento igual del espacio libre. Cero ahorro puede ser un resultado correcto.
Lee el progreso como instantáneas
Cada evento describe el estado más reciente, no un incremento que sumar al anterior. Usa contadores de etapa para la barra y globales para todo el trabajo.
| Campo JSON | Cómo usarlo |
|---|---|
phase | Etapa actual, como finding_duplicates, grouping_duplicates, comparing, compressing, verifying o deduplicating. Puede cambiar sin archivo activo. |
phaseProcessedFiles / phaseTotalFiles | Progreso de la etapa actual. Los contadores pueden reiniciarse entre etapas. phaseTotalFiles en cero significa total desconocido, así que muestra progreso indeterminado. |
processedFiles / totalFiles | Contadores globales. Durante discovering, processedFiles cuenta archivos encontrados y totalFiles es cero. No confundas descubrimiento con optimización terminada. |
currentPath / currentFile | currentPath identifica un elemento analizado. currentFile es un nombre para mostrar, no necesariamente la ruta completa. Si falta o está vacío, borra el elemento anterior de la pantalla. |
cancelled | Si existe y es true, la optimización se está deteniendo de forma segura. No aparece en todos los eventos. La etapa cancelling también indica detención. Espera el evento final y la salida del proceso. |
Desplaza la tabla horizontalmente en pantallas pequeñas para leer toda la referencia.
Buscar y agrupar duplicados puede tardar sin un nombre activo. Limpia etiquetas anteriores si la nueva instantánea no tiene elemento actual. No supongas orden fijo de etapas ni que completar una termina el comando. Solo el evento final y la salida del proceso confirman el fin.
No todas las mediciones son análisis en vivo
locations, savings y overview leen mediciones guardadas sin analizar archivos, pedir permisos ni iniciar monitoreo. Incluyen readAt, dataSource, locationCount, enabledLocationCount y savings. Las fechas usan ISO 8601 en UTC.
Faltante y desactualizado no son lo mismo
measurementAvailableindica que hay una medición guardada. Los valores desconocidos sonnull, no cero.measurementStalemarca una medición conservada tras fallar la actualización. DiskPress mantiene los últimos valores correctos, no los cambia a cero. ConsultameasurementErrorymeasuredAt.savings.completees false si alguna ubicación no está medida o está desactualizada.unmeasuredLocationCount,staleLocationCountyoldestMeasurementAtdescriben cobertura y antigüedad.- El
statusSourcede una ubicación guardada eslast_saved. Su estado no es un análisis nuevo del destino.
El ahorro actual cubre ubicaciones medidas, incluso deshabilitadas, contando una vez los archivos superpuestos. Una ubicación puede tener tamaño pero no ahorro atribuido porque archivos compartidos ya se cuentan en otra. El ahorro reciente describe trabajo terminado. No sumes Actividad a los totales ni supongas que cada registro es un archivo distinto.
En Catalina no se puede medir el ahorro actual por deduplicación. deduplicationMeasurementAvailable es false y los valores son null. Deduplicar sigue funcionando y el ahorro reciente puede incluirlo.
Disponibilidad y autorización de ubicaciones
Cada entrada de locations --json tiene availability con available, unavailable, stale_bookmark, missing o invalid_authorization. Son estados guardados, no comprobaciones nuevas. Son distintos del booleano available en la salida paths.
invalid_authorization indica que el elemento ya no coincide con el autorizado originalmente, por ejemplo tras restaurar un respaldo. Revisa el destino en DiskPress, quita la ubicación y agrégala de nuevo para autorizar el elemento actual. Quitarla no borra archivos. No intentes saltarte la comprobación de identidad.
Actualización después de optimizar
Después de optimizar, DiskPress actualiza el ahorro en segundo plano. La CLI puede devolver el resultado antes de terminar esa actualización de solo lectura. Los informes muestran savings.refreshing y savings.refreshError. Usa también fechas y cobertura, porque terminar no prueba que cada ubicación se midió correctamente.
El anfitrión espera comandos y actualización sin activar monitoreo recurrente. Un scan de selección o informe por sí solo no solicita actualizar. Usa Volver a analizar en la vista general para actualizar mediciones por separado.
Almacenamiento y monitoreo
savings y overview incluyen recentSavings de 24 horas, 7 y 30 días. overview añade storage del volumen personal y monitoring. La capacidad se consulta al solicitarla, independientemente de las mediciones guardadas.
monitoring.enabled es una preferencia guardada, no indica que CLI inició monitoreo. Revisa monitoring.serviceRunning y monitoring.liveStatusAvailable antes de mostrar estado en vivo. Sin estado disponible, los campos de progreso son null.
Inspecciona Configuración y Actividad
settings --json devuelve un objeto settings con deduplicationEnabled, scanHiddenSystemFiles, recentFileProtectionSeconds, monitoringEnabled y scanIntervalSeconds. Leerlos no los modifica.
Los umbrales son minimumFileBytes, maximumFileBytes, minimumCompressionSavingsFraction y minimumCompressionSavingsBytes. Describen la elegibilidad de compresión, no garantizan ahorro en todos los archivos.
settings.performance incluye level, batteryLevel, separatePowerSettings y pauseMonitoringOnBattery. Los perfiles son low_cpu, balanced, fast o fastest. La fuente de energía y macOS pueden afectar el rendimiento activo.
Los perfiles también se aplican a CLI. El más rápido ajusta la concurrencia a los núcleos de rendimiento o, si hace falta, físicos. CPU baja regula el trabajo dentro de archivos grandes y entre archivos. No es un límite fijo de porcentaje de CPU.
settings.exclusions contiene reglas tipadas con id, enabled, type, target, pattern, description y extensions. Los tipos son file_type, wildcard, regular_expression y file_group. Cada regla apunta a file_name o full_path. Los grupos incluyen sus extensiones.
Las exclusiones predeterminadas incluyen databases. Al habilitarlo cubre archivos auxiliares reconocidos como database.sqlite-wal, database.sqlite-shm y database.sqlite-journal. La lista extensions contiene extensiones base, no todos los patrones auxiliares. Revisa tus reglas y usa scan para comprobar resultados. Evita omitir exclusiones de bases activas.
Recorre resultados conservados por páginas
activity --json devuelve activity.records de GUI y CLI, del más reciente al anterior. Cada registro incluye id, date, path, name, outcome, originalAllocatedBytes, resultAllocatedBytes, savedBytes, durationSeconds, detail y locationID. Los resultados son compressed, deduplicated, skipped, failed o recovered.
Pasa el valor exacto de activity.nextBefore a --before hasta que activity.hasMore sea false. El tamaño predeterminado es 50 y --limit acepta de 1 a 500. Registros grandes pueden acortar páginas, así que sigue el cursor, no la cantidad. Los registros nuevos no desplazan cursores existentes.
Un cursor borrado o vencido da error. Reinicia sin --before. Actividad es historial conservado, no inventario completo. Varios registros pueden referirse al mismo archivo y la ausencia de uno no prueba que nunca se optimizó.
Códigos de salida y cancelación segura
| Código | Significado |
|---|---|
0 | Completado. Puede incluir omisiones seguras o ahorro cero. |
1 | La operación falló o la recuperación requiere atención. |
2 | Éxito parcial. Algunos archivos no se pudieron optimizar o leer, o falló una sección de estadísticas. |
64 | Comando o argumentos inválidos. |
75 | Servicio no disponible o resultado final no entregado. Revisa Actividad y mensajes de recuperación antes de reintentar. |
77 | Un destino carece de autorización guardada utilizable. |
130 | Cancelado. Espera esta salida antes de dar por detenida la operación. |
Ctrl+C, SIGTERM, Cancelar o cerrar la ventana solicita una detención segura. Deja terminar el proceso. Los archivos optimizados se conservan así. Perder el cliente de Terminal o cortar su tubería de salida también cancela.
Quitar una ubicación participante desde la app puede cancelar la optimización CLI. Se informa cancelación aunque no presiones Ctrl+C. El progreso puede mostrar phase en cancelling y cancelled en true. El resultado final tiene exitCode 130 y cancelled en true. Se conserva lo completado y no se detiene por completo hasta salir el proceso.
Si la salida estándar no acepta el resultado final, manda el código de salida. No cortes deliberadamente la salida con comandos como head. Usa --quiet si solo necesitas el resultado final.
Las solicitudes aceptadas no se repiten tras un fallo del anfitrión. El código 75 no prueba que no cambiaron archivos. Si no llegó el resultado, revisa Actividad y recuperación antes de decidir reintentar.
Un flujo sensato para agentes de IA
DiskPress proporciona comandos y tu agente decide cómo invocarlos. Dale límites claros. Abajo tienes una instrucción inicial útil.
Lee --version y --help de mi ejecutable de DiskPress instalado.
Usa la misma edición para permisos, ajustes y comandos.
Inspecciona rutas, ajustes y ubicaciones con --json.
Respeta los modos guardados. Los informes CLI no los muestran.
Pídeme confirmar el modo en Ubicaciones si el flujo depende de él.
Analiza solo los archivos o carpetas que seleccione explícitamente.
Recuerda que la CLI no aplica la protección de archivos recientes.
Explica la elegibilidad y pregunta antes de optimizar.
Respeta las apps vinculadas y espera a que termine la escritura de archivos.
No concedas permisos ni uses privilegios elevados.
No omitas exclusiones salvo que lo pida explícitamente.
Usa el evento JSON final y el código de salida para informar el resultado.
Espera la salida tras cancelar, incluso si la app inicia la detención.
Revisa refreshing, indicadores de desactualización y fechas antes de informar totales.
Si falta el resultado o hay error de recuperación, revisa Actividad antes de reintentar. Pasa cada ruta como argumento separado después de --. Nunca concatenes nombres sin escapar en un comando shell. Si faltan permisos, pide autorización en DiskPress en vez de reintentar en bucle o usar sudo.
Tras avisos o fallos, lee Actividad para motivos por archivo. Una ejecución correcta puede no ahorrar, y una omisión segura no siempre es error. Ante un error de recuperación, conserva archivos e informa el mensaje. Espera la salida tras cancelar.
DiskPress no llama a servicios de IA. Un agente puede recibir rutas, nombres y actividad privados en la salida local y enviarlos a su proveedor. Sus ajustes y política de privacidad determinan ese comportamiento.
Permisos y seguridad siguen vigentes
Todos los destinos necesitan autorización guardada de lectura y escritura antes de empezar. Si falta en uno, el comando falla antes de optimizar los demás. La CLI no abre selectores de permisos, concede acceso ni evita rutas protegidas. Una carpeta puede cubrir descendientes, pero autorizar un archivo no autoriza sus vecinos.
paths --json devuelve authorizations con path, directory, access y available. El valor de acceso es readWrite. Una autorización no disponible puede requerir reconectar el volumen o volver a autorizar en la misma edición.
App y CLI usan el mismo motor, verificación, recuperación, exclusiones y límites de archivos. Apps y ejecutables no se admiten. La deduplicación agrupa solo en el mismo sistema compatible, nunca entre volúmenes. Omitir exclusiones no desactiva seguridad, protección de apps vinculadas ni modos de ubicación.
Los análisis y optimizaciones de Terminal se ejecutan de uno en uno en la sesión actual de macOS, compartiendo CPU, recuperación y contabilidad con la app. Los informes, ajustes y Actividad de solo lectura pueden ejecutarse mientras trabaja. No hay comandos para activar un daemon, cambiar ajustes o deshacer cambios terminados.
Mantén un respaldo independiente. Lee las preguntas sobre verificación y recuperación antes de automatizar datos importantes.