Para ejecutar algunas sincronizaciones con servidores remotos para que sus datos se incluyan en las copias de seguridad de TimeMachine, solía usar una secuencia de comandos como la siguiente para evitar la sincronización mientras se ejecuta TimeMachine y no obtener copias de seguridad a medias sincronizadas.
La parte de detección del script que espera a que TimeMachine deje de funcionar en la versión 10.8, así que estoy buscando un reemplazo que funcione.
#!/bin/sh -x
while ps -e | grep backupd | grep -v grep; do
echo "Time Machine is running, waiting ..."
sleep 60
done
Lo anterior espera hasta que finalice una ejecución de TimeMachine que ya está en marcha.
Esta es la parte que ya no funciona en 10.8 ya que backupd se muestra siempre en la salida ps -e
. Así que esperará por siempre.
El resto del script aún funciona bien y solo se pone aquí como referencia si alguien necesita apagar TimeMachine durante un script y luego volver a encenderlo de manera segura.
save='defaults read /Library/Preferences/com.apple.TimeMachine AutoBackup | sed -e 's/0/false/' | sed -e 's/1/true/''
Esta es una solución para el hecho de que los valores predeterminados leen 0
y 1
para bool
s, pero los valores predeterminados solo aceptan true
y false
echo "Saved Time Machine state: AutoBackup = $save"
trap "echo 'Restoring Time Machine state'; defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool $save" EXIT HUP INT QUIT ABRT TERM
Aquí restauramos el estado anterior de la máquina del tiempo cuando la secuencia de comandos se detiene por cualquier motivo: no queremos apagar accidentalmente la máquina del tiempo y nadie se da cuenta.
defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -int 0
Apague TimeMachine, ¿no está seguro de por qué -int 0
funciona aquí, tal vez todo el negocio sed
ya no es realmente necesario? Creo que cambia el valor predeterminado a int, que está bien para desactivar (?)
# ... script that does some remote syncing with other machines while time machine is not running