¿Hay un comando de bash para verificar si Time Machine ha finalizado la copia de seguridad?

15

Estoy escribiendo un script que rsycnc mi directorio de Time Machine a un servidor remoto usando ssh. Cambié de un script de shell a un AppleScript y luego volví a un script de Apple y realmente no me importa qué tipo de script necesitará la solución.

He tenido éxito al iniciar el proceso de copia de seguridad con este pequeño fragmento de código.

do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"

Lo que estoy tratando de hacer ahora es realizar un comando rsync una vez que se completa la copia de seguridad. ¿Hay alguna forma limpia en AppleScript para verificar si el proceso de copia de seguridad se ha completado? ¿O hay un buen "gancho" que puedes usar en bash para ver si está completo?

    
pregunta whitneyz 19.12.2010 - 20:07

7 respuestas

4

Aquí hay una forma: sé que no está ni cerca de una solución "adecuada", pero imagino que funcionaría.

ps ax | grep "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper" | grep -v 'grep'

Lo que hace es buscar en la lista de procesos el proceso backupd-helper, luego filtra el comando grep para que no aparezca. Si el comando devuelve > 0 resultados, el proceso de backupd-helper todavía está activo. De lo contrario, el proceso ha finalizado, por lo que puede suponer que se ha completado.

    
respondido por el Harv 19.12.2010 - 20:25
15

tmutil status es la forma Lion ahora que tenemos una buena herramienta para este tipo de consulta.

    
respondido por el bmike 29.09.2011 - 18:08
5

También puede iniciar la copia de seguridad con tmutil startbackup -b . -b bloquea el comando hasta que la copia de seguridad haya finalizado.

    
respondido por el user495470 30.09.2011 - 03:30
2

tmutil status|grep -c "Running = 1"

devuelve '1' cuando se ejecuta, '0' cuando no lo está.

    
respondido por el Tadghostal66 20.02.2012 - 08:47
2

La ausencia de procesos relacionados con la copia de seguridad no es no la garantía de que se haya completado una copia de seguridad de Time Machine

En el volumen en el que Time Machine escribe sus copias de seguridad: junto con el directorio ... /Latest/ ..., considere:

  • el paquete ... .inProgress/ ...

Si ese paquete existe, una copia de seguridad está incompleta.

    
respondido por el Graham Perrin 04.08.2011 - 13:49
1

El siguiente trabajo para mí ...

Script backup_status:

    #!/usr/bin/env bash
    #
    # Determines if Time Machine is running and works with older Mac OS x versions
    #
    if [ x == x'type -P tmutil' ]; then
            # Older OSx
            count='ps -ef | grep -v grep | grep -c 'CoreServices/backupd''
            # Should also detect /Volume/Time Machine …/Latest/… directory ….inProgress/… bundle existence here to make it tight.
    else
            # OSx 10.7+
            count='tmutil status | grep -c "Running = 1"'
    fi

    if [ $count == 0 ]; then
            echo stopped
    else
            echo running
    fi

Script backup_wait:

    #!/usr/bin/env bash

    #
    # Waits for Time Machine backup to complete
    #
    while [ 'backup_status' == running ] ; do
            sleep 2
    done
respondido por el user77052 30.04.2014 - 08:23
0

tmutils solo existe desde 10.7 en. Antes de eso, puede usar, como se mencionó, /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper para ejecutar manualmente Time Machine.

Luego puedes usar wait para esperar hasta que el proceso finalice. Sin argumentos, simplemente esperará; Si proporciona el PID, puede obtener su valor de retorno (estado de salida).

En particular, wait $! esperará el último proceso iniciado en ese shell. Sin embargo, como mencionó Lauri, esta espera volverá antes de que la máquina de tiempo se termine porque backupd-helper finaliza antes de que se realice la copia de seguridad. No pude encontrar ningún nombre de proceso que indicara que la copia de seguridad no estaba completa.

Mirando el contenido de /var/logs/system.log (o a través de la Consola), noté que cuando se termina la copia de seguridad, lo último que se hace es expulsar la imagen del disco de Time Machine. Efectivamente, he comprobado que (esto es OS X 10.6.8) durante la copia de seguridad hay un /Volumes/Time Machine Backups . Por lo tanto, simplemente puede comprobar si el directorio existe. Cuando ya no lo hace, Time Machine ha terminado.

No estoy seguro de si esto funcionará para todos ya que he seguido las instrucciones aquí para hacer una copia de seguridad en una máquina Windows en la red.

    
respondido por el pelesl 01.01.2014 - 22:22

Lea otras preguntas en las etiquetas