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 requerirá 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 intento hacer ahora es ejecutar un comando rsync una vez que se complete 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 puede usar en bash para verificar si está completo?
backup
time-machine
applescript
bash
Whitneyz
fuente
fuente
Respuestas:
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 el proceso de copia de seguridad auxiliar, luego filtra el comando grep para que no aparezca. Si el comando devuelve> 0 resultados, el proceso de copia de seguridad auxiliar todavía está activo. De lo contrario, el proceso ha finalizado, por lo que puede suponer que está hecho.
fuente
pgrep backupd-helper
TIME_MACHINE_PID=$! wait $TIME_MACHINE_PID
tal vez en una respuesta separada? Gracias.tmutil status
es la forma de Lion ahora que tenemos una buena herramienta para este tipo de consulta.En el sistema operativo más reciente, hay un comando no documentado
tmutil currentphase
que muestra el nombre de la fase actual.fuente
tmutuil
está tan lleno de victorias que es difícil expresar lo bueno que es echar un vistazo al estado de la copia de seguridad, las estadísticas y conducir cosas programáticamente.También puede iniciar la copia de seguridad con
tmutil startbackup -b
.-b
bloquea el comando hasta que finalice la copia de seguridad.fuente
tmutil status|grep -c "Running = 1"
devuelve '1' cuando se ejecuta, '0' cuando no.
fuente
La ausencia de procesos relacionados con la copia de seguridad no garantiza que se complete una copia de seguridad de Time Machine
En el volumen en el que Time Machine escribe sus copias de seguridad: junto con el
/Latest/
directorio ... ..., considere:.inProgress/
... paquete.Si ese paquete existe, una copia de seguridad está incompleta.
fuente
.inProgress
directorio, Time Machine puede estar ocupado preparándose o arreglando después de una copia de seguridad (por ejemplo, eliminando copias de seguridad antiguas).El siguiente trabajo para mí ...
Script backup_status:
Script backup_wait:
fuente
tmutils
solo existe desde 10.7 en adelante. Antes de eso, puede usar, como se mencionó,/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper
para ejecutar Time Machine manualmente.Luego puede usar
wait
para esperar hasta que el proceso haya finalizado. Sin argumentos simplemente esperará; si proporciona el PID, puede obtener su valor de retorno (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 finalice porque el asistente de respaldo finaliza antes de que finalice el respaldo. No pude encontrar ningún nombre de proceso que indicara que la copia de seguridad no estaba completa.Al mirar el contenido de /var/logs/system.log (o mediante la Consola), noté que cuando finaliza la copia de seguridad, lo último que se hace es expulsar la imagen del 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, Time Machine está 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.
fuente