4 votos

Ejecutar un launchd trabajo después de la copia de seguridad Time Machine

Simplemente, tengo un proceso que se desencadena por launchd , pero en la actualidad se ejecuta una vez por hora, sin embargo lo que realmente me gustaría hacer es ejecutar una vez una Máquina del Tiempo de copia de seguridad se ha completado.

Inicialmente pensé que yo podría poner mi Máquina del Tiempo de copia de seguridad (/Volúmenes/Foo/Copias de seguridad.backupdb/Haravikk Mac) como un reloj camino para launchd, sin embargo esto parece desencadenar demasiado temprano. Parece desencadenar de nuevo cerca del final, por lo que actualmente estoy usando un retraso y luego de comprobar la existencia de una .curso de copia de seguridad, pero no es realmente una solución ideal, y a veces el Tiempo de la Máquina de la etapa de limpieza va a desencadenar el proceso varias veces.

Es allí una manera más específica camino que yo podía ver que va a desencadenar mi proceso sólo cuando la Máquina del Tiempo se ha terminado una copia de seguridad?

Me doy cuenta de que debo realizar mis cheques de todos modos para estar seguro, pero en la actualidad mi proceso está disparando varias veces por la copia de seguridad, que no es lo que yo quiero.

3voto

M K Puntos 8307

Una solución simple es usar el tmutil comando para activar manualmente la copia de seguridad y seguir con su proceso (como parte de un script de shell que hace estos pasos).

  • En primer lugar, desactivar las copias de seguridad automáticas de las Preferencias del Sistema > Tiempo de Máquina o utilizando el comando tmutil disable
  • Uso tmutil startbackup --auto --block de desencadenar una copia de seguridad una vez cada hora (la --block opción es necesaria para hacer que la ejecución de esperar hasta que termine la copia de seguridad)
  • Siga esto con el lanzamiento de su proceso de

Ver el hombre tmutil para obtener más información sobre el uso de Time Machine desde la línea de comandos.

3voto

Haravikk Puntos 332

Bueno, así que después de la creación de un lanzamiento de agente de registro de la información durante un tiempo me he dado con una solución combinada.

Simplemente he creado un lanzamiento de agente de que los relojes de la com.apple.TimeMachine.plist archivo de actualizaciones como así:

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
    <key>Label</key>
    <string>org.example.backupd</string>
    <key>ProgramArguments</key>
    <array>
        <string>do something</string>
    </array>
    <key>WatchPaths</key>
    <array>
         <string>/Library/Preferences/com.apple.TimeMachine.plist</string>
     </array>
 </dict>
 </plist>

Este archivo se actualiza cada vez que la Máquina del Tiempo, realiza una copia de seguridad, y se extiende hacia el final (durante la limpieza/fase de finalización, creo). Con esto en mente, es posible invocar un script con el por encima del reloj camino que comprueba si backupd todavía se está ejecutando; si es que, a continuación, la secuencia de comandos se duerme durante un minuto y mira de nuevo, repitiendo hasta backupd ha terminado, antes de continuar con todo lo que tiene que hacer.

Esto permite ahora a los post-copia de seguridad de las acciones para que se desencadene tales como la realización de copias de seguridad secundarias (en mi caso a través de la rsync a un NAS), revisar el tamaño de la última copia de seguridad y otras cosas útiles.

De todos modos, esta solución parece ser la mejor manera de hacerlo, como no pude encontrar ningún camino a ver que desencadena de forma fiable después de una copia de seguridad completa, pero esto debe ejecutar lo suficientemente cerca del final de una copia de seguridad a ser útil.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X