Esiste un comando bash per verificare se Time Machine ha terminato il backup?

16

Sto scrivendo uno script che farà rsycnc la mia directory Time Machine su un server remoto usando ssh. Sono passato da uno script di shell a un AppleScript e quindi a uno script Apple e non mi interessa davvero quale tipo di script richiederà la soluzione.

Ho avuto successo iniziando il processo di backup con questo piccolo frammento di codice.

do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"

Quello che sto cercando di fare ora è eseguire un comando rsync una volta completato il backup. C'è un modo pulito in AppleScript per verificare se il processo di backup è completato? O c'è un buon "gancio" che puoi usare in bash per controllare se è completato?

    
posta whitneyz 19.12.2010 - 20:07
fonte

7 risposte

4

Ecco un modo: so che non è affatto vicino a una soluzione "corretta", ma immagino che funzionerebbe.

ps ax | grep "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper" | grep -v 'grep'

Quello che fa è cercare l'elenco dei processi per il processo backupd-helper, quindi filtra il comando grep stesso da mostrare. Se il comando restituisce > 0 risultati, il processo backupd-helper è ancora attivo. Altrimenti, il processo è terminato e quindi potresti presumere che sia stato eseguito.

    
risposta data 19.12.2010 - 20:25
fonte
15

tmutil status è la via Lion ora che abbiamo uno strumento utile per questo tipo di query.

    
risposta data 29.09.2011 - 18:08
fonte
5

Potresti anche avviare il backup con tmutil startbackup -b . -b blocca il comando fino al termine del backup.

    
risposta data 30.09.2011 - 03:30
fonte
2

tmutil status|grep -c "Running = 1"

restituisce '1' quando è in esecuzione, '0' quando non lo è.

    
risposta data 20.02.2012 - 08:47
fonte
2

L'assenza di processi correlati al backup è garanzia non che un backup di Time Machine è completo

Sul volume su cui Time Machine scrive i suoi backup: accanto alla ... /Latest/ ..., prendi in considerazione:

  • il ... .inProgress/ ... pacchetto.

Se questo bundle esiste, un backup è incompleto.

    
risposta data 04.08.2011 - 13:49
fonte
1

Il seguente lavoro per me ...

Script backup_status:

    #!/usr/bin/env bash
    #
    # Determines if Time Machine is running and works with older Mac OS x versions
    #
    if [ x == x'type -P tmutil' ]; then
            # Older OSx
            count='ps -ef | grep -v grep | grep -c 'CoreServices/backupd''
            # Should also detect /Volume/Time Machine …/Latest/… directory ….inProgress/… bundle existence here to make it tight.
    else
            # OSx 10.7+
            count='tmutil status | grep -c "Running = 1"'
    fi

    if [ $count == 0 ]; then
            echo stopped
    else
            echo running
    fi

Script backup_wait:

    #!/usr/bin/env bash

    #
    # Waits for Time Machine backup to complete
    #
    while [ 'backup_status' == running ] ; do
            sleep 2
    done
risposta data 30.04.2014 - 08:23
fonte
0

tmutils esiste solo dal 10.7 in poi. Prima puoi utilizzare, come detto, /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper per eseguire manualmente Time Machine.

Puoi quindi utilizzare wait per attendere fino al termine del processo. Senza argomenti, semplicemente aspetterà; se fornisci il PID puoi ottenere il suo valore di ritorno (stato di uscita).

In particolare, wait $! attenderà l'ultimo processo avviato in quella shell. Tuttavia, come ha affermato Lauri, questa attesa tornerà prima che la macchina del tempo sia finita perché backupd-helper finisce prima che il backup sia completato. Non sono stato in grado di trovare alcun nome di processo che indica che il backup non è stato completato.

Guardando il contenuto di /var/logs/system.log (o tramite la console), ho notato che quando il backup è terminato, l'ultima operazione è quella di espellere l'immagine del disco della macchina del tempo. Certo, ho controllato che (questo è OS X 10.6.8) durante il backup c'è un /Volumes/Time Machine Backups . Quindi puoi semplicemente controllare se la directory esiste. Quando non funziona più, Time Machine è finito.

Non sono sicuro che funzionerà per tutti da quando ho seguito le indicazioni qui per eseguire il backup su una macchina Windows sulla rete.

    
risposta data 01.01.2014 - 22:22
fonte

Leggi altre domande sui tag