18 votos

¿Existe un comando bash para comprobar si Time Machine ha terminado de realizar la copia de seguridad?

Estoy escribiendo un script que rsycnc mi Time Machine directorio a un servidor remoto utilizando ssh. He cambiado de un script de shell a un AppleScript y luego de nuevo a un script de Apple y realmente no me importa qué tipo de script requerirá la solución.

He tenido éxito iniciando 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 intentando hacer ahora es que se ejecute un comando rsync una vez finalizada esa copia de seguridad. ¿Hay alguna manera limpia en AppleScript para comprobar si el proceso de copia de seguridad se ha completado? ¿O hay un buen "gancho" que pueda usar en bash para comprobar si se ha completado?

0 votos

Yo preguntaría por qué no simplemente rsync el original - Pregunto esto por lo que entiendo rsync no entiende los directorios de enlace duro de modo que usted va a terminar tomando varias copias de cada archivo.

0 votos

¿Quieres decir que con cada copia de seguridad sucesiva que se realice, Time Machine generará una copia de seguridad con enlaces duros a los archivos originales de los que ya se ha realizado una copia de seguridad? Lo pregunto porque no estoy muy familiarizado con Time Machine. Si ese es el caso, entonces sí copiaría el original. Pero estoy bastante seguro de que rsync tiene una opción que hará que ignore la recreación de enlaces duros.

1 votos

Sí, así es como funciona TM - rsync puede entender los enlaces de archivos duros, pero no creo que entienda los enlaces de directorios duros que son exclusivos de OSX desde 10,5

22voto

Oskar Puntos 1242

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

0 votos

Sí. tmutuil está tan lleno de victorias, que es difícil expresar lo agradable que es echar un vistazo y hurgar en el estado de la copia de seguridad, las estadísticas, y manejar las cosas mediante programación.

0 votos

¡Es una locura que aparentemente no esté documentado!

5voto

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

4voto

bdonlan Puntos 508

Sé que no es ni mucho menos 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, y luego filtra el propio comando grep para que no aparezca. Si el comando devuelve > 0 resultados, el proceso backupd-helper sigue activo. Si no, el proceso ha finalizado, por lo que puedes asumir que ha terminado.

1 votos

... pgrep backupd-helper

1 votos

¡He encontrado una forma más elegante! TIME_MACHINE_PID=$! wait $TIME_MACHINE_PID

1 votos

@whitneyz por favor, ¿podría dar más detalles sobre TIME_MACHINE_PID=$! wait $TIME_MACHINE_PID ¿tal vez en una respuesta separada? Muchas gracias.

4voto

Jason Iverson Puntos 384

tmutil status|grep -c "Running = 1"

devuelve '1' cuando está funcionando, '0' cuando no.

3voto

Tim Puntos 11

La ausencia de procesos relacionados con las copias de seguridad es no garantía de que una copia de seguridad de Time Machine está completa

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

  • la .inProgress/ paquete.

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

0 votos

Tenga en cuenta que aunque no haya .inProgress Time Machine puede estar todavía ocupado preparando u ordenando después de una copia de seguridad (por ejemplo, eliminando copias de seguridad antiguas).

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