¿Cómo puedo saber si se está ejecutando una copia de seguridad de Time Machine?

Debido a que APFS tiene una mente propia y llena el disco duro con instantáneas no deseadas, hice un cron para ejecutar tmutil deletelocalsnapshots xxx. Más tarde descubrí que ejecutar este comando mientras se realiza una copia de seguridad detendrá la copia de seguridad. ¿Cómo puedo saber si se está realizando una copia de seguridad de Time Machine para evitar ejecutar el comando? La página del manual para tmutilno muestra ningún comando de estado.

En este momento estoy haciendo lo siguiente en el script, ya que ahora las copias de seguridad se montan en /Volumes/Time Machine Backups/:

ls -d /Volumes/Time* 2>/dev/null|grep Machin >/dev/null

if [[ $? != 0 ]]; then
     # run here tmutil snapshot deletion commands
fi

Sin embargo, esto no parece ser muy preciso. El volumen puede montarse unos minutos más tarde después de que se haya iniciado una copia de seguridad y, además, detener una copia de seguridad deja el volumen montado durante un tiempo. Finalmente, el nombre del volumen montado podría cambiar en el futuro, haciendo inútil la verificación.

En lugar de editar su publicación, intentaré responder de una manera que ayude. Los problemas que veo son 1) APFS está en SSD y no en HD: necesitaría una pregunta de seguimiento muy detallada para explicar cómo / por qué tiene APFS en HD y si está realizando una copia de seguridad en APFS o desde APFS. 2) Las instantáneas locales realmente no ocupan espacio adicional en la práctica. El espacio ya está comprometido y se adelgaza cuando lo necesitas. ¿Qué asignación de almacenamiento exacta hay en el volumen que se está agotando? Quizás esta es una pregunta XY.
1) Solo tengo un SSD con APFS y una cápsula del tiempo Ethernet externa. 2) Proceso muchos archivos de video enormes. Muchos días termino mi día de trabajo con 20 GB libres, dejo la computadora encendida y por la mañana tengo 140 GB libres. Esas instantáneas son realmente molestas cuando necesito esos 120 GB ahora .
Eso es fácil de escribir. tmutil thinlocalsnapshots \ 100...con suficientes ceros para llegar a 120 GB. Si ha pagado soporte, abriría un caso con Apple en ese caso de uso. Parece uno tmdiagnosey los ingenieros podrían asegurarse de que su configuración funcione para su caso de uso. Editaré mi publicación para obtener una purga de 1 GB. Gran pregunta +2 si pudiera votar dos veces.
Ugh, sí, gracias, es por eso que comencé esta pregunta, porque estoy tratando de escribir esos comandos, y deletelocalsnapshots simplemente funciona mejor que thinlocalsnapshots en mi experiencia.
Excelente: siéntase libre de enumerar su guión si nadie entrega uno y necesita modificar el ejemplo delgado. No sé si Apple expuso una forma de medir las instantáneas, así que estoy usando thinlocalsnapshotsmás deletelocalsnapshotscuando necesito liberar espacio con urgencia. (por ejemplo, cuando prepara previamente una instalación de Adobe de 50 GB durante un período de una o dos semanas para que podamos instalarlos todos desde la imagen local en lugar de a través de la red)
Puede excluir sus archivos de video de la copia de seguridad de Time Machine si son grandes y no los necesita en su copia de seguridad.

Respuestas (3)

La forma canónica de verificar el estado de la máquina del tiempo es usar la utilidad y verificar el estado o, para sistemas operativos más nuevos, verificar solo la fase actual:

 tmutil status
 tmutil currentphase

Ahora, debe procesar el texto, ya que informa la salida 0 cuando se ejecuta y cuando no se ejecuta desde que se devolvió el estado, no es que haya un estado correcto.

Yo usaría:

tmutil status | grep "Running = 0;"

Eso devuelve 0 si el sistema no se está ejecutando actualmente y 1 si está haciendo una copia de seguridad. Sin embargo, la copia de seguridad en High Sierra implica un evento que no es una instantánea. Las instantáneas son literalmente para unidades externas que, literalmente, no son APFS. Solo el SSD interno recibe tratamiento APFS y las instantáneas locales no son algo que se "ejecuta" sino que "simplemente existen" y la "ejecución" en todo caso es el proceso de adelgazamiento, no el proceso de copia de seguridad.

Las llamadas de proceso de adelgazamiento backupd-helperque no tienen una herramienta de línea de comando para verificar cuando terminan, pero puede cronometrar la ejecución emitiendo una llamada de bloqueo como:

 tmutil thinlocalsnapshots / 1000000000

Arriba tiene suficientes ceros para adelgazar un gigabyte: agregue dos ceros para solicitar 100 GB de vuelta.


Quiero corregir (o al menos desafiar ligeramente) el concepto de demasiadas instantáneas. APFS es una copia en el sistema de archivos de escritura y los únicos ejemplos de que esto es malo parecen configuraciones muy artificiales o no predeterminadas. Los archivos que están alrededor ya están escritos en el disco. El sistema simplemente es "perezoso" para limpiarlos y no gasta tiempo de procesamiento hasta que sabe que a) el sistema está relativamente inactivo b) el almacenamiento está relativamente inactivo y aún no se está quedando sin espacio libre.

Claramente, Apple todavía está cambiando con respecto a cuántas instantáneas mantener montadas, cómo establecer los umbrales de limpieza, cuántos intervalos mantener en situaciones en las que la unidad externa no está conectada y existen instantáneas locales.

Puedes profundizar más con:

tmutil listlocalsnapshots /
tmutil thinlocalsnapshots / 1
tmutil deletelocalsnapshots YYYY-MM-DD-HHMMSS

Una vez más, todavía tengo que ver un lugar donde necesitaba adelgazar o eliminar instantáneas del proceso automático en volúmenes locales. La eliminación puede ser útil cuando desea eliminar una copia de seguridad grande de una unidad externa. La palanca real que solíamos tener era usar las exclusiones de Time Machine para omitir la copia de seguridad de archivos grandes que tenían pequeños cambios. Queda por ver cómo reacciona APFS a estos archivos; supongo que puede colocar ese tipo de archivos en un volumen APFS diferente y adelgazar agresiva y periódicamente o continuar observando las exclusiones de copia de seguridad para ver si eso le ahorra espacio asignado sin ralentizando la copia en rendimiento de escritura y beneficios de almacenamiento.

También hay tmutil currentphase(que existe al menos desde 10.11) que dará un resumen de una palabra de lo que Time Machine está haciendo actualmente. Muestra 'BackupNotRunning' si Time Machine no está activo. Hay una variedad de otras "palabras" que se usan si se está ejecutando. tmutil currentphasees básicamente lo mismo que tmutil status | awk -F' ' '/BackupPhase/{print $NF}'excepto que este último tendrá una ;al final.
Vale la pena editarlo @TJLuoma: gracias por todo lo que aportas a este sitio y comunidad.
Gracias por las amables palabras @bmike. Estoy muy agradecido por este sitio, así que me complace hacer lo que pueda para apoyarlo.
Si desea convertir la salida de tmutil statusa un formato más fácil de analizar, como JSON, puede usar tmutil status | tail -n+2 | plutil -convert json -o - -- -. Luego puede lanzar esta salida jqpara extraer información.

indocumentadotmutil status

Hay un indocumentado, y por lo tanto sujeto a cambios, tmutil status. Esta llamada devuelve la respuesta:

Backup session status:
{
    ClientID = "com.apple.backupd";
    Running = 0;
}

Deberá analizar la parte JSON de la respuesta para saber si Time Machine se está ejecutando.

Buscarbackupd

En versiones anteriores de macOS, si el backupdproceso se está ejecutando, Time Machine está realizando una copia de seguridad de forma activa.

Consulte la pregunta de StackOverflow, ¿Comprobar si el programa se está ejecutando con el script bash shell? para métodos robustos de comprobación de un proceso en ejecución.

grep es lo suficientemente bueno para la verificación en ejecución en la práctica: afortunadamente, esa herramienta "no documentada" se ha mantenido estable desde Lion y grep ha trabajado para nosotros sin necesidad de cambios. Por supuesto, Apple podría cambiar todo esto en 10.13.4, documentado o no. Sin embargo, toda la premisa aquí es sospechosa para mí. Creo que estamos respondiendo algo que ni siquiera ayudará al OP. Una vez que tengan este control en su lugar, ¿cómo van a usarlo y si "resolverá" cualquier cosa? Es curioso para mí.
Eso no es exacto. Tengo Time Machine configurado, pero actualmente no se está ejecutando... de hecho, la unidad ni siquiera está conectada, pero backupdambos backupd-helper -launchdse muestran en ps. Así que tmutil statussigue siendo la mejor manera, a pesar de ser indocumentado.
@TJLuoma gracias. He actualizado la respuesta.

Time Machine tiene una barra de menú que puede usar. Solo necesita habilitar el elemento de la barra de menú.

Dentro del panel de preferencias de Time Machine, hay una casilla de verificación para que aparezca el elemento de la barra de menú. La barra de menú le permite hacer una copia de seguridad manualmente, si está haciendo una copia de seguridad y qué tan avanzada está.

EDITAR: Sin embargo, esto no le permitirá configurar un cron para saber cuándo se está tomando una instantánea local, tendría que hacerlo manualmente.

Edición 2: votado negativamente o no, aquellos que busquen la pregunta titulada encontrarán que mi respuesta es útil. No lo borraré.

¿Cómo ayuda esto en un script de shell (ver pregunta)?
Esa pregunta era "¿Cómo sé si se está ejecutando una copia de seguridad de Time Machine?". Por qué está utilizando un script para eliminar instantáneas locales que se utilizan más tarde durante una copia de seguridad real, no estoy seguro de que no lo haya dicho. Si desea evitar que se realicen instantáneas locales, actualice su pregunta.