Estou escrevendo um script que irá rsycnc meu diretório do Time Machine para um servidor remoto usando ssh. Mudei de um script de shell para um AppleScript e, em seguida, voltei para um script da Apple e realmente não me importo com o tipo de script que a solução exigirá.
Tive sucesso ao iniciar o processo de backup com este pequeno trecho de código.
do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"
O que estou tentando fazer agora é executar um comando rsync assim que o backup for concluído. Existe alguma maneira limpa no AppleScript para verificar se o processo de backup foi concluído? Ou existe um bom "gancho" que você pode usar no bash para verificar se está completo?
backup
time-machine
applescript
bash
whitneyz
fonte
fonte
Respostas:
Aqui está uma maneira: eu sei que não é nem de longe uma solução "adequada", mas imagino que funcionaria.
ps ax | grep "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper" | grep -v 'grep'
O que ele faz é procurar na lista de processos pelo processo backupd-helper e, em seguida, filtra o próprio comando grep de aparecer. Se o comando retornar> 0 resultados, o processo backupd-helper ainda estará ativo. Caso contrário, o processo terminou e, portanto, você pode assumir que está concluído.
fonte
pgrep backupd-helper
TIME_MACHINE_PID=$! wait $TIME_MACHINE_PID
talvez em uma resposta separada? Obrigado.tmutil status
é a maneira Lion agora que temos uma boa ferramenta para esse tipo de consulta.No sistema operacional mais recente, há um comando não documentado
tmutil currentphase
que mostra o nome da fase atual.fonte
tmutuil
é tão cheio de vitórias, é difícil expressar como é bom espiar e cutucar o status de backup, estatísticas e conduzir as coisas de maneira programática.Você também pode iniciar o backup com
tmutil startbackup -b
.-b
bloqueia o comando até que o backup seja concluído.fonte
tmutil status|grep -c "Running = 1"
retorna '1' ao executar, '0' quando não.
fonte
Ausência de processos relacionados ao backup é não garante que um backup do Time Machine esteja completo
No volume em que o Time Machine grava seus backups: ao lado do…
/Latest/
diretório……, considere:.inProgress/
... pacote.Se esse pacote existir, um backup está incompleto.
fonte
.inProgress
diretório, o Time Machine ainda pode estar ocupado se preparando ou arrumando após um backup (por exemplo, removendo backups antigos).O seguinte trabalho para mim ...
Script backup_status:
Script backup_wait:
fonte
tmutils
só existe a partir de 10.7. Antes disso, você pode usar, como mencionado,/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper
para executar manualmente o Time Machine.Você pode então usar
wait
esperar até o processo terminar. Sem argumentos, simplesmente esperará; se você fornecer o PID, poderá obter seu valor de retorno (status de saída).Particularmente,
wait $!
aguardará o último processo iniciado nesse shell. No entanto, como Lauri mencionou, essa espera retornará antes do término da máquina porque o backupd-helper termina antes que o backup seja concluído. Não consegui encontrar nenhum nome de processo que indicava que o backup não estava completo.Observando o conteúdo de /var/logs/system.log (ou através do console), notei que, quando o backup é concluído, a última coisa a ser feita é ejetar a imagem de disco da máquina do tempo. Com certeza verifiquei que (este é o OS X 10.6.8) durante o backup, existe um
/Volumes/Time Machine Backups
. Assim, você pode simplesmente verificar se o diretório existe. Quando isso não acontece, o Time Machine está concluído.Não tenho certeza se isso funcionará para todos, pois segui as instruções aqui para fazer backup em uma máquina Windows na rede.
fonte