Esegui un lavoro di avvio dopo il backup di Time Machine

4

Molto semplicemente, ho un processo che è attivato da launchd ma attualmente viene eseguito una volta all'ora, tuttavia in realtà quello che vorrei fosse eseguito una volta completato il backup di Time Machine.

Inizialmente pensavo di poter impostare il backup di Time Machine (/Volumes/Foo/Backups.backupdb/Haravikk's Mac) come percorso di controllo per launchd, tuttavia questo sembra innescare troppo presto. Sembra che si riavvii verso la fine, quindi attualmente sto usando un ritardo e poi controllo dell'esistenza di un backup .inprogress, ma non è davvero una soluzione ideale, e qualche volta la fase di pulizia di Time Machine attiverà il processo più volte .

C'è un percorso più specifico che potrei vedere che attiverà il mio processo solo quando Time Machine ha terminato un backup?

Capisco che dovrei comunque eseguire i miei controlli per essere sicuro, ma attualmente il mio processo si sta attivando diverse volte per ogni backup, che non è quello che voglio.

    
posta Haravikk 04.11.2013 - 12:31
fonte

2 risposte

3

Ok, quindi, dopo aver configurato un launch agent per registrare le informazioni per un po ', ho trovato una soluzione combinata.

Semplicemente ho creato un launch-agent che guarda il file com.apple.TimeMachine.plist per aggiornamenti come-così:

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
    <key>Label</key>
    <string>org.example.backupd</string>
    <key>ProgramArguments</key>
    <array>
        <string>do something</string>
    </array>
    <key>WatchPaths</key>
    <array>
         <string>/Library/Preferences/com.apple.TimeMachine.plist</string>
     </array>
 </dict>
 </plist>

Questo file viene aggiornato ogni volta che Time Machine esegue un backup e corre verso la fine (credo che durante la fase di pulizia / finitura). Con questo in mente è possibile invocare uno script con il percorso di controllo sopra che verifica se backupd è ancora in esecuzione; se lo script è inattivo per un minuto, controlla nuovamente, ripetendo fino al completamento di backupd , prima di procedere con qualsiasi operazione.

Questo consente ora di attivare azioni post-backup come eseguire backup secondari (nel mio caso tramite rsync su un NAS), controllando la dimensione dell'ultimo backup e altre cose utili.

Ad ogni modo, questa soluzione sembra essere il modo migliore per farlo, dato che non sono riuscito a trovare alcun percorso per controllare che i trigger si attivino in modo affidabile dopo il completamento di un backup, ma dovrebbe essere abbastanza vicino alla fine di un backup utile.

    
risposta data 11.11.2013 - 19:29
fonte
3

Una soluzione semplice consiste nell'utilizzare il comando tmutil per attivare manualmente il backup e seguirlo con il processo (come parte di uno script di shell che esegue entrambi questi passaggi).

  • In primo luogo, disattiva i backup automatici da Preferenze di Sistema > Time Machine o utilizzando il comando tmutil disable
  • Utilizza tmutil startbackup --auto --block per attivare un backup una volta ogni ora (l'opzione --block è necessaria per far attendere l'esecuzione fino al termine del backup)
  • Segui questo con l'avvio del processo

Vedi man tmutil per ulteriori informazioni su utilizzando Time Machine dalla riga di comando.

    
risposta data 04.11.2013 - 13:30
fonte

Leggi altre domande sui tag