Come faccio a sapere se è in esecuzione un backup della macchina del tempo?

4

A causa di APFS ha una mente propria e riempiendo il disco rigido di indesiderati istantanee, ho creato un cron per eseguire tmutil deletelocalsnapshots xxx . Più tardi ho scoperto che l'esecuzione di questo comando mentre è in corso un backup interromperà il backup. Come posso sapere se è in corso un backup della macchina del tempo per evitare di eseguire il comando? La pagina man per tmutil non elenca alcun comando di stato.

In questo momento sto facendo quanto segue nello script, poiché ora i backup vengono montati su /Volumes/Time Machine Backups/ :

ls -d /Volumes/Time* 2>/dev/null|grep Machin >/dev/null

if [[ $? != 0 ]]; then
     # run here tmutil snapshot deletion commands
fi

Tuttavia, questo non sembra essere molto preciso. Il volume può essere montato alcuni minuti dopo l'avvio di un backup e anche l'interruzione di un backup lascia il volume montato per un po '. Infine, il nome del volume montato potrebbe cambiare in futuro, rendendo inutile il controllo.

    
posta Grzegorz Adam Hankiewicz 24.02.2018 - 19:20
fonte

3 risposte

5

Il modo canonico per controllare lo stato della macchina del tempo è usare l'utilità e controllare lo stato:

 tmutil status

Ora devi elaborare il testo poiché segnala l'uscita 0 durante l'esecuzione e quando non è in esecuzione poiché lo stato è stato restituito, non che lo stato sia corretto.

Vorrei usare:

tmutil status | grep "Running = 0;"

Restituisce 0 se il sistema non è attualmente in esecuzione e 1 se si sta eseguendo il backup. Tuttavia, il backup su High Sierra implica un evento non istantaneo. Le istantanee sono letteralmente a dischi esterni che letteralmente non sono APFS. Solo l'SSD interno ottiene il trattamento APFS e le istantanee locali non sono qualcosa che "scorrono" tanto quanto "esistono solo" e "in esecuzione" se qualcosa è il processo di diluizione - non il processo di backup.

Il processo di dimagrimento chiama backupd-helper che non ha uno strumento da riga di comando per verificare quando è terminato, ma puoi cronometrare l'esecuzione eseguendo una chiamata di blocco come:

 tmutil thinlocalsnapshots / 1000000000

Sopra ha abbastanza zeri per diluire un byte giga - aggiungi due zeri per chiedere di restituire 100 GB.

Voglio correggere (o almeno sfidare leggermente) il concetto di troppe istantanee. APFS è una copia sul filesystem di scrittura e gli unici esempi di ciò che è cattivo sembrano configurazioni altamente inventate o non predefinite. I file che sono in giro sono già scritti sul disco. Il sistema è semplicemente "pigro" per pulirli e non impiega più tempo di elaborazione finché non sa che a) il sistema è relativamente inattivo b) lo spazio di archiviazione è relativamente inattivo e non si sta ancora esaurendo lo spazio disponibile.

Apple è chiaramente ancora in movimento con il numero di istantanee da tenere montate, come impostare le soglie di pulizia, quanti intervalli tenere in situazioni in cui l'unità esterna non è connessa e le istantanee locali esistono.

Puoi approfondire con:

tmutil listlocalsnapshots /
tmutil thinlocalsnapshots / 1
tmutil deletelocalsnapshots YYYY-MM-DD-HHMMSS

Ancora una volta, devo ancora vedere un punto in cui ho bisogno di ridurre o eliminare gli snapshot dal processo automatico sui volumi locali. L'eliminazione può essere utile quando si desidera eliminare un backup di grandi dimensioni da un'unità esterna. La vera leva che usavamo era usare le esclusioni di Time Machine per omettere il backup di file di grandi dimensioni con piccole modifiche. Resta da vedere come APFS reagisce a questi file - suppongo che tu possa essere in grado di placare il tipo di file su un diverso volume APFS e assottigliarlo in modo aggressivo e periodico o continuare a guardare le esclusioni del backup per vedere se ti salva lo spazio allocato senza rallentare la copia delle prestazioni di scrittura e di archiviazione.

    
risposta data 25.02.2018 - 15:16
fonte
3

Cerca backupd

Se il processo backupd è in esecuzione, Time Machine esegue attivamente il backup.

Vedi la domanda StackOverflow, Verifica se il programma è in esecuzione con uno script di shell bash? per metodi efficaci di verifica di un processo in esecuzione.

Non documentato tmutil status

C'è un non documentato, e quindi soggetto a modifiche, tmutil status . Questa chiamata restituisce la risposta:

Backup session status:
{
    ClientID = "com.apple.backupd";
    Running = 0;
}

Sarà necessario analizzare la parte JSON della risposta per sapere se Time Machine è in esecuzione.

    
risposta data 24.02.2018 - 21:05
fonte
-1

Time Machine ha una barra dei menu che puoi usare. Devi solo abilitare la voce della barra dei menu.

All'interno del pannello delle preferenze di Time Machine, è presente una selezione di caselle di controllo per l'elemento della barra dei menu. La barra dei menu consente di eseguire manualmente un backup, se sta eseguendo un backup e quanto è lungo.

EDIT: questo però non ti permetterà di impostare un cron per sapere quando viene presa una snapshot locale, dovresti farlo manualmente.

Modifica 2: giù votato o meno, chi cerca la domanda dal titolo troverà la mia risposta come utile. Non lo cancellerò.

    
risposta data 25.02.2018 - 14:24
fonte

Leggi altre domande sui tag