In un articolo precedente vi abbiamo parlato di rsync, uno strumento da riga di comando che permette di eseguire il backup dei dati da una sorgente a una destinazione, che sia questa un’altra cartella presente all’interno del Mac (magari la cartella locale di Dropbox) oppure un disco esterno.
In questa che possiamo definire una seconda puntata sull’argomento vi parliamo invece di cron, un altro strumento di sistema che permette di eseguire script o comandi (come appunto rsync) a intervalli di tempo precisi.
Nel gergo tecnico viene chiamato infatti task scheduler, ovvero un pianificatore di attività che troviamo già integrato nel Mac e in tutti i sistemi operativi Unix-like come appunto macOS e Linux.
Perché cron
Chi mastica un po’ queste cose potrebbe domandarsi perché abbiamo deciso di parlarvi di cron anziché spiegarvi come automatizzare l’esecuzione di un rsync combinando Automator e Calendario, oppure di fare affidamento ad un altro sistema di gestione dei processi come launchd che, oltre ad essere specifico per macOS, è anche molto più potente.
Launchd infatti non si basa soltanto su orari o intervalli ma può anche avviare un processo in risposta a un evento di sistema, come ad esempio il montaggio di un disco esterno. Perciò, nel caso specifico dei backup, si potrebbe utilizzare per avviare automaticamente un dato rsync al collegamento di una specifica chiavetta, senza neppur dover aprire il Terminale.
Per questa specifica esigenza cron infatti non è lo strumento migliore, ma è tuttavia quello che risulta più facile da configurare specialmente per chi non è avvezzo a queste cose, che poi è il principale destinatario di questa guida.
Non solo: è soprattutto utile in tutte quelle situazioni in cui si desidera eseguire automaticamente un comando rsync, non al collegamento di una chiavetta, bensì in un determinato momento della giornata.
Lo abbiamo infine scelto perché, come per rsync, si tratta di uno strumento che esiste da tantissimo tempo (pensate: a Maggio compie 50 anni, datosi che la prima versione risale al 1975) e questo è sinonimo di garanzia che possa durare ancora a lungo nel tempo nonostante i progressi delle tecnologie che vi ruotano intorno.

Come funziona cron
Quello che dobbiamo fare è sostanzialmente incollare il comando rsync che desideriamo automatizzare all’interno di un file chiamato crontab (contrazione di “cron table”) specificando gli orari e giorni di esecuzione.
All’interno del crontab, ogni riga rappresenta un comando che verrà eseguito a un determinato orario.
La sintassi di una riga di crontab è la seguente:
* * * * * COMANDOrsync
Esempio 1
Facciamo un esempio. Se volessimo eseguire un comando rsync ogni lunedì alle 3:00 del mattino, dovremo digitare la seguente riga:
0 3 * * 1 COMANDOrsync
Seguendo la tabella sopra riportata:
- il primo 0 indicano i minuti mentre il 3 rappresenta l’ora, quindi con
0 3stiamo dicendo al cron di eseguire il comando rsync alle 03:00 del mattino. - Lasciando l’asterisco sul terzo slot, che rappresenta il giorno del mese, stiamo dicendo al cron di eseguire il comando ogni giorno.
- Attraverso l’asterisco al quarto slot, quello dedicato al mese, stiamo invece configurando il cron affinché esegua il comando tutti i mesi.
- Il numero 1 alla fine invece dice al cron di eseguire il comando soltanto di lunedì.

Qualche altro esempio
Se invece decidiamo di eseguire un rsync ogni giorno alle 9:30 di mattina, ad esempio per assicurarci un backup giornaliero di alcuni dati, basta sostituire il numero 1 dell’esempio precedente con un asterisco e modificare le prime due cifre in questo modo: 30 9 * * * COMANDOrsync.
E se volessimo eseguire lo stesso comando rsync sia al mattino che al pomeriggio, magari perché generalmente lavoriamo al Mac dalle 8:00 alle 14:00 oppure dalle 14:00 alle 20:00 ma senza una alternanza precisa? In questo caso bisognerà compilare il crontab incollando lo stesso comando due volte e adattando le opzioni agli orari di lavoro. Nell’esempio qui indicato potremmo configurarlo così:
30 9 * * * COMANDOrsync
30 15 * * * COMANDOrsync
Cosa succede se il Mac è spento
Ci siamo tenuti larghi scegliendo le 9:30 e le 15:30 perché così ci assicuriamo l’esecuzione dell’rsync anche nel caso in cui si dovesse ritardare l’accensione del Mac, ma si potrebbe anche decidere di impostare un orario vicino al suo spegnimento così da comprendere nel backup gli ultimi dati.
Questo perché se il Mac è spento (o se si tratta di un Macbook, se il coperchio è chiuso) il crontab salta. Perciò configurandolo nel modo sopradescritto ci si assicurerà che lo stesso backup verrà eseguito almeno una volta al giorno datosi che, secondo le abitudini di esempio, si accende la macchina almeno una volta al giorno e ben prima dell’orario indicato.
Come configurare il crontab
Come sappiamo sul Mac troviamo il Terminale preinstallato e insieme ad esso sono presenti anche alcuni editor di testo come vi e nano che si basano appunto sulla modifica dei file tramite riga di comando.
Dopo aver avviato il Terminale, non bisogna far altro che digitare il comando:
crontab -e
per aprire il file. In genere se non si è modificato nulla, l’editor predefinito è vi, ma se si volesse forzare l’apertura con vi o nano allora basta specificarlo nel comando di apertura del crontab scrivendo EDITOR=vi crontab -e per forzare l’apertura con vi oppure EDITOR=nano crontab -e per aprirlo con l’editor nano.
La scelta di uno o dell’altro è indifferente in termini di configurazione mentre cambia invece l’aspetto dell’editor (nano presenta un’interfaccia leggermente più complessa) e i comandi di salvataggio del crontab e di chiusura dell’editor.
Datosi che vi è quello predefinito (a meno di non averlo cambiato in precedenza) proseguiremo indicandovi la strada da seguire per configurare il crontab attraverso questo editor di testo da linea di comando.
Dopo aver aperto il file, la schermata nel Terminale apparirà vuota, questo perché non abbiamo ancora configurato alcun crontab. Digitiamo quindi le opzioni di gestione secondo lo schema spiegato in precedenza seguito dal comando rsync. Seguendo uno dei nostri esempi scriveremmo quindi:
30 9 * * * rsync -xaEv --progress --info=progress2 --delete "/percorso/sorgente/A" "/percorso/destinazione/B
In questo modo stiamo automatizzando l’esecuzione di un rsync che copia la cartella A e tutto il suo contenuto all’interno della cartella B tutti i giorni alle 9:30 del mattino.
Se vogliamo aggiungere altri comandi basta dare Invio e scriverli nella riga successiva. L’importante è scrivere un comando per riga.
Come salvare il crontab
Quando avete compilato il crontab secondo le vostre esigenze, salvate il file così:
- premere
Escper uscire dalla modalità di inserimento (in cui si può digitare il testo) e tornare alla modalità normale (nella quale si può navigare nel testo, eseguire comandi, e così via); - digitare
:wqper dire al programma di voler salvare le modifiche e uscire dall’editor (con:si entra in modalità comando,wsta per write,qsta per quit); - premere
Invioper confermare il comando.
Come visualizzare il crontab
Se tutto è andato nel verso giusto, dovreste aver compilato il crontab. Potete verificarlo digitando questo comando:
crontab -l
Il Terminale vi restituirà tutto il contenuto del file senza aprirlo (onde evitare modifiche accidentali).

Come aggiungere un file di log
Il modo più semplice per tenere traccia dell’esecuzione dei comandi configurati nel crontab è quello di aggiungere un redirect dell’output in un file di log.
La sintassi è la seguente:
0 3 * * 1 COMANDOrsync > /percorso/del/logfile.log 2>&1
In questo modo l’rsync che viene eseguito tutti i lunedì alle 3:00 del mattino genera anche un file chiamato logfile.log all’interno del quale sono riportate tutte le righe che il Terminale restituisce quando si esegue manualmente un rsync.
Tenete presente che ogni esecuzione del cron sovrascriverà il log. Se invece desiderate costruire uno storico di tutte le esecuzioni del cron nel corso del tempo vi basta aggiungere un secondo > nel comando. Seguendo lo stesso esempio la sintassi sarà questa:
0 3 * * 1 COMANDOrsync >> /percorso/del/logfile.log 2>&1
Sappiate però che in questo modo alla lunga il file di log potrebbe diventare pesante, perciò per evitare di appesantire il Mac sarà bene ricordarsi di cancellarlo periodicamente.
Come esportare una copia del crontab
Se tutto funziona come previsto, allora potrebbe essere una buona idea esportare una copia del crontab in un file .txt che vi sarà utile sia per ripristinarlo in futuro senza doverlo compilare nuovamente a mano, sia per poter apportare modifiche senza usare l’editor vi ma passando direttamente per il TextEdit preinstallato sul Mac.
Se ad esempio decidiamo di salvare il contenuto del crontab in un file chiamato backup_crontab.txt sul Desktop non dobbiamo far altro che aprire il Terminale e digitare:
crontab -l > ~/Desktop/backup_crontab.txt
Come ripristinare il crontab da copia di backup
Sempre seguendo l’esempio precedente, nel momento in cui intendiamo ripristinare il crontab partendo da quel file (che nel frattempo potremmo anche aver modificato aggiungendo o rimuovendo delle righe di comando) basta accertarsi che il file di backup si trovi ancora sul Desktop, quindi aprire il Terminale e digitare:
crontab ~/Desktop/backup_crontab.txt
Accertatevi comunque che il ripristino e le eventuali modifiche siano state effettivamente caricate nel crontab utilizzando il comando crontab -l per visualizzare il contenuto dal Terminale.
Come cancellare il file di cron
Se avete deciso di annullare l’esecuzione dei vari cron, vi basta svuotare il file crontab. Potete farlo sempre tramite vi in questo modo:
- aprite il Terminale
- digitate
crontab -e - premete
Esc - digitate
:%d(%significa seleziona tutte le righe,dsta per elimina quelle righe) - premete
Invio - premete nuovamente
Esc - digitate
:wq -
- premete
Invio
- premete
Tornati nel Terminale, lanciate un crontab -l per verificare che il file sia effettivamente vuoto.
Un esempio d’uso
Se avete letto la precedente guida dedicata a rsync, allora molto probabilmente avete già capito per quale motivo abbiamo iniziato ad usare cron. Alcuni dei nostri backup infatti non fanno altro che fotocopiare alcuni file nella cartella locale di Dropbox così da renderli accessibili anche dagli altri nostri dispositivi che condividono lo stesso account cloud.
Così, configurando cron per eseguire automaticamente questi backup in determinati giorni e orari, ci assicuriamo che i vari file e cartelle dislocati sul Mac che intendiamo condividere siano sempre aggiornati all’ultima versione anche nei duplicati presenti su Dropbox e senza doverci ricordare di eseguire manualmente gli rsync.
Altre guide…
Lo sapevate che su Macitynet trovate centinaia di altri tutorial su iPhone, iPad, ma anche su Mac e Apple Watch? Vi basta cliccare sul nome del dispositivo che vi interessa per sfogliarli tutti selezionando poi quelli che desiderate leggere.
Tutti i tutorial per iOS 17 e iOS 18 sono nelle sezioni dedicate ai rispettivi sistemi operativi e loro aggiornamenti.











