Nella prima parte di questa guida abbiamo visto come realizzare un sistema per il backup dei dispositivi Android senza permessi di root, utilizzando l’applicazione Termux e una scheda Raspberry Pi. In questa seconda parte vedremo come automatizzare il tutto con Tasker.
Indice
Note iniziali
L’ultima volta ci siamo lasciati con lo script di backup funzionante, ma non esattamente pratico da utilizzare, soprattutto se abbiamo intenzione di effettuare dei backup frequenti. E’ possibile automatizzare i backup in diversi modi: nei miei dispositivi ho scelto di utilizzare Tasker, una delle app più utili per l’automatizzazione totale di Android.
Per fare interagire Tasker e Termux dobbiamo ricorrere all’add-on Termux:Task, un plug-in commerciale (2.09€ sul PlayStore) che rende possibile eseguire gli script di Termux direttamente da Tasker.
In questa guida non esamineremo a fondo l’utilizzo di Tasker: l’utente dovrà saperne utilizzare almeno le basi (profili, task, azioni, plugin, ecc.) per poter continuare. Inoltre faremo riferimento a Tasker in versione inglese: sebbene la traduzione ufficiale italiana sia di buona qualità, trovo più semplice utilizzare il programma nella sua versione originale.
Programmi utilizzati
Principali
- Tasker per Android: inutile presentarlo. Tasker permette di automatizzare qualsiasi aspetto del dispositivo e lo ritengo in assoluto il programma più utile disponibile per Android, sempre che si abbia la voglia di imparare ad usarlo ;).
- Termux:Task: add-on a pagamento (2.09€ nel Playstore) dedicato a Termux. Con questa estensione è possibile richiamare ed eseguire gli script di Termux direttamente da Tasker.
Accertatevi di aver installato entrambi i programmi sul vostro dispositivo Android prima di proseguire.
Oltre i programmi sopra elencati verranno utilizzati ovviamente tutti i software visti precedentemente.
Preparazione di Termux
Avviamo Termux e creiamo le directory necessarie per poter lavorare con il plugin Termux:Task:
mkdir -p ~/.termux/tasker/
Completiamo la preparazione semplicemente spostando lo script testbackup.sh
, che abbiamo visto la volta precedente, all’interno della directory appena creata:
mv ~/tesbackup.sh ~/.termux/tasker/
Tasker e Termux:Task
Creare il progetto Tasker
Avviamo Tasker e creiamo un nuovo Project chiamato Android Backup:

All’interno del progetto, nella tab Tasks, creiamo un nuovo task che chiameremo EseguiBackup:

Aggiungiamo al task appena creato l’action Termux:Task presente nella categoria Plugin:

Configuriamo il plugin selezionando l’icona a forma di matita (o forse è una penna?) posta in alto a destra:

Ora selezioniamo lo script testbackup.sh
che abbiamo visto prima in Termux: digitiamo “t” nell’unico campo di testo presente ed il nome del file apparirà automaticamente nel menù a discesa; a questo punto non resterà che selezionarlo. Se il nome del file non dovesse apparire dobbiamo accertarci di averlo copiato nella directory corretta come specificato all’inizio della guida.

Selezioniamo ora se vogliamo eseguire lo script nella finestra del terminale di Termux (che si aprirà all’esecuzione dello script) oppure in background (non avremo un output a schermo dell’esecuzione dello script). La seconda opzione è preferibile, ma ora per motivi di debug lasciamo che lo script venga eseguito e visualizzato in una finestra di Termux, quindi abilitiamo l’opzione Execute in terminal session:

Salviamo utilizzando l’icona del dischetto in alto a destra oppure torniamo semplicemente indietro fino all’elenco delle azioni del task (la configurazione verrà salvata automaticamente).

E’ giunto il momento di provare il tutto. Avviamo il task con il tasto Play (l’icona a forma di freccia) posto in basso a sinistra: dovrebbe apparire la finestra di Termux con l’output della sincronizzazione appena avvenuta. Se è andato tutto bene, a fine operazione possiamo chiudere la finestra di Termux, tornare in Tasker e modificare la configurazione del plugin deselezionando “Execute in teminal session“.
Aggiungere un output
Come già anticipato, con lo script eseguito in background non avremo purtroppo nessun feedback delle operazioni in corso, quindi non potremo accertarci che il tutto sia stato eseguito correttamente se non controllando i file sincronizzati direttamente nella Raspberry. Anche qui abbiamo a disposizione diversi modi per ottenere informazioni sull’esecuzione dello script: vediamo come fare affinché Tasker ci avvisi della fine del backup e ci consenta di visualizzarne il risultato.
Passo 1 (Termux)
Iniziamo modificando lo script testbackup.sh
in questo modo:
rsync -avz -e ssh ~/storage/downloads/ testuser@192.168.1.160:/media/usbstorage/ > ~/storage/shared/rsync.log 2>&1
am broadcast -a net.dinglish.tasker.updatelog --user 0 > /dev/null
La prima riga dello script non fa altro che eseguire il backup e salvare l’ouput di rsync nella sdcard del nostro Android.
La seconda riga crea un intent (un segnale), chiamato updatelog
, per Tasker in modo quest’ultimo possa sapere quando il backup sarà finito.
Eseguiamo lo script almeno una volta da Termux in modo da accertarci che tutto funzioni perfettamente.
~/.termux/tasker/testbackup.sh
Ora il file di log rsync.log
dovrebbe essere presente nella directory /sdcard di Android.
Passo 2 (Tasker)
- Selezioniamo il nostro progetto “Android Backup“, spostiamoci nella tab Profiles.
- Aggiungiamo un profilo chiamato “Updatelog”
- Scegliamo Event
- Nella categoria degli eventi disponibili selezioniamo System->Intent Received
- Nel campo azione inseriamo
net.dinglish.tasker.updatelog

Questo profilo verrà richiamato ogni volta che riceverà l’intent “updatelog“, lo stesso intent che abbiamo indicato nel nostro script testbackup.sh
in Termux.
Passo 3 (Tasker)
- Nel nuovo menu che si è aperto selezioniamo New Task e chiamiamo il nuovo task “MostraLog”.
- Aggiungiamo una nuova azione e selezioniamo File->Read File
- Facciamo tap sull’icona a forma di lente e selezioniamo il file
rsync.log
che dovrebbe essere presente in/sdcard
(lo abbiamo creato prima, quando abbiamo eseguito per la prima volta la nuova versione dello scripttestbackup.sh
). - Nel campo To Var inseriamo
%log
- Torniamo indietro e aggiungiamo una nuova azione selezionando Alert->HTML Popup
- Nel campo Code inseriamo
<pre>%log</pre>
- Spostiamo il cursore del campo Timeout tutto a destra finché non comparirà la scritta Never. Tutto il resto va lasciato con le opzioni di default.


Se proviamo ora a rilanciare il task EseguiBackup, dovremmo venire informati della fine della sincronizzazione con tanto di popup contenente i log di rsync.

Creare un widget per lanciare il backup
Tasker mette a disposizione un Widget, posizionabile nella Home del nostro Android, tramite il quale possiamo richiamare un qualsiasi task pre-programmato.
Come prima cosa dobbiamo assegnare un’icona al nostro task “EseguiBackup“. Da Tasker->Tasks selezioniamo il task “EseguiBackup” e poi facciamo tap sull’icona quadrata in fondo a destra:

Nel menu che apparirà selezioniamo la voce Built-in Icon e scegliamo un’icona a piacere (nel mio caso ho scelto un’icona personalizzata che potrete scaricare al passo successivo della guida). Vedrete che l’icona comparirà al posto della precedente icona quadrata, in basso a destra.

Questa sarà l’immagine che identificherà il nostro widget quando lo andremo a posizionare nella Home dello smartphone. Prima di proseguire uscite da Tasker premendo ripetutamente il tasto back dello smartphone.
Ora andiamo nella home di Android e richiamiamo la schermata per aggiungere i widget (le modalità per compiere questa azione cambiano secondo il modello o il launcher utilizzato) e scorriamo quelli disponibili finché non troveremo i widget di Tasker. Selezioniamo il widget Task 1 x 1 e spostiamolo in uno spazio disponibile nella home:

Verrà mostrato un menu con tutti i task presenti in Tasker:

Selezioniamo “EseguiBackup“: si aprirà nuovamente Tasker, posizionandosi nell’elenco delle azioni del task appena selezionato. Usciamo ancora da Tasker premendo ripetutamente il tasto Back dello smartphone.
Ora il nostro widget dovrebbe apparire nella schermata Home. A questo punto basterà fare tap sopra il widget per lanciare in maniera trasparente il task che effettuerà il backup del dispositivo.
Ovviamente questa non è che una delle molteplici possibilità che ci offre Tasker per eseguire i suoi progetti o i singoli task. Possiamo infatti rendere completamente automatica la procedura, lanciando il task al verificarsi di un evento (es: quando il dispositivo Android si collega ad una determinata rete WiFi o riceve un determinato messaggio SMS) o anche schedulare il tutto ad una determinata ora del giorno, ecc. ecc. Insomma le possibilità sono molteplici: Tasker rende possibile implementare tutto questo con relativa facilità una volta che se ne è compreso il funzionamento di base.
Progetto Tasker completo (download)
Qui sotto trovate una piccola animazione del semplice progetto Tasker che ho realizzato per illustrare questa guida tramite il quale un utente può lanciare il backup facendo tap su un widget, esattamente come abbiamo visto nella guida. Un (brutta) finestra contenete il log di rsync verrà visualizzata al termine del backup. L’utente potrà scegliere il tipo di log da visualizzare (parziale o completo) oppure semplicemente chiudere la schermata delle informazioni.

Questo è il link per il download del progetto e dei file necessari al suo funzionamento:
Dovrete necessariamente modificare alcune informazioni che dipendono dalla vostra particolare configurazione (IP e nome utente con cui collegarsi alla Raspberry, il percorso della cartella che desiderate sincronizzare, ecc), ma se avete seguito la guida non dovreste trovare difficoltà per realizzare questi piccoli ritocchi. Ovviamente questo progetto Tasker è lungi dall’essere perfetto (es: ci sarebbe bisogno di una gestione degli errori più articolata), ma può fornirvi una base per iniziare.
E con questo è davvero tutto.
Buon divertimento!
1 commento su “Raspberry Pi: usare rsync via SSH per il backup dei dispositivi Android senza permessi di root (II Parte)”