Domanda

Sto scrivendo uno script che sarà la mia directory della mia macchina a tempo su un server remoto utilizzando SSH. Sono passato da uno script di shell a un AppleScript e poi di nuovo a uno script Apple e non mi interessa davvero che tipo di script richiederà la soluzione.

Ho avuto successo a iniziare 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 è avere un comando RSYNC eseguito una volta completato il backup. Esiste un modo pulito in AppleScript per verificare se il processo di backup è completato? O esiste un buon "gancio" che puoi usare in Bash per verificare se è completato?

È stato utile?

Soluzione

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 nell'elenco dei processi per il processo di backupd-helper, quindi filtra il comando Grep stesso di presentarsi. Se il comando restituisce> 0 risultati, il processo di backupd-helper è ancora attivo. In caso contrario, il processo è terminato e quindi potresti supporre che sia fatto.

Altri suggerimenti

tmutil status è il modo di leone ora che abbiamo un bel strumento per questo tipo di domanda.

Potresti anche iniziare il backup con tmutil startbackup -b. -b Blocca il comando fino al termine del backup.

L'assenza di processi correlati al backup è non certezza che un backup della macchina del tempo è completo

Sul volume in cui la macchina del tempo scrive i suoi backup: accanto al .../Latest/... directory, considera:

  • il ….inProgress/… fascio.

Se esiste quel pacchetto, un backup è incompleto.

tmutil status|grep -c "Running = 1"

Restituisce '1' quando si esegue, '0' quando no.

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

tmutils esiste solo da 10.7 in poi. Prima di allora puoi usare, come detto, /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper Per eseguire manualmente la macchina per il tempo.

Puoi quindi usare wait aspettare fino al termine del processo. Senza argomenti aspetta semplicemente; Se fornisci il PID puoi ottenere il suo valore di restituzione (stato di uscita).

In particolar modo, wait $! Aspetterò l'ultimo processo iniziato in quella shell. Tuttavia, come ha detto Lauri, questa attesa tornerà prima che Time Machine sia terminata perché Backupd-Helper termina prima che il backup sia finito. Non sono stato in grado di trovare alcun nome di processo che indicasse che il backup non era completo.

Guardando il contenuto di /var/logs/system.log (o tramite la console), ho notato che quando il backup è finito, l'ultima cosa che viene fatta è espellere l'immagine del disco della macchina. Abbastanza sicuro ho verificato che (questo è OS X 10.6.8) durante il backup c'è un /Volumes/Time Machine Backups. Quindi puoi semplicemente verificare se esiste la directory. Quando non lo fa più, Time Machine è finito.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a apple.stackexchange
scroll top