¿Hay un comando bash para verificar si la máquina de tiempo ha terminado de hacer una copia de seguridad?

apple.stackexchange https://apple.stackexchange.com/questions/5105

Pregunta

Estoy escribiendo un script que RSYCNC My Time Machine Directory a un servidor remoto usando SSH. He cambiado de un script de shell a un Applecript y luego a un script de Apple y realmente no me importa qué tipo de script requerirá la solución.

He tenido éxito comenzando 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 tener un comando RSYNC realizado una vez que se complete esa copia de seguridad. ¿Hay alguna forma limpia en AppleScript para verificar si el proceso de copia de seguridad se completa? ¿O hay un buen "gancho" que pueda usar en Bash para verificar si está completado?

¿Fue útil?

Solución

Aquí hay una forma: sé que no está 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 para el proceso BackUpD-Helper, luego filtra el comando GREP en sí mismo para que aparezca. Si el comando devuelve> 0 resultados, el proceso de backupd-helper aún está activo. Si no, el proceso ha terminado, por lo que puede suponer que está hecho.

Otros consejos

tmutil status es el camino del león ahora que tenemos una buena herramienta para este tipo de consulta.

También puede comenzar la copia de seguridad con tmutil startbackup -b. -b Bloquea el comando hasta que la copia de seguridad haya terminado.

La ausencia de procesos relacionados con la copia de seguridad es no Se asegura que se complete una copia de seguridad de la máquina del tiempo

En el volumen al que la máquina del tiempo escribe sus copias de seguridad: junto con el .../Latest/... Directorio, considere:

  • la ….inProgress/… paquete.

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

tmutil status|grep -c "Running = 1"

Devuelve '1' cuando se ejecuta, '0' cuando no.

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

tmutils Solo existe de 10.7 en adelante. Antes de eso puedes usar, como se mencionó, /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper Para ejecutar manualmente la máquina de tiempo.

Entonces puedes usar wait esperar hasta que el proceso esté terminado. Sin argumentos simplemente esperará; Si proporciona el PID, puede obtener su valor de devolución (estado de salida).

Particularmente, wait $! Esperará el último proceso iniciado en ese shell. Sin embargo, como mencionó Lauri, esta espera volverá antes de que la máquina del tiempo esté terminada porque los acabados de BackUpd-Helper antes de 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 la copia de seguridad está terminada, lo último que se hace es expulsar la imagen de disco de la máquina del tiempo. Efectivamente, verifiqué que (esto es OS X 10.6.8) durante la copia de seguridad hay un /Volumes/Time Machine Backups. Por lo tanto, simplemente puede verificar si el directorio existe. Cuando ya no lo hace, la máquina de tiempo está terminada.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a apple.stackexchange
scroll top