Raspberry Pi: usare rsync via SSH per il backup dei dispositivi Android senza permessi di root (II Parte)

By | 16 febbraio 2017

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.

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:

Tasker: creazione progetto "Android Backup"

Tasker: creazione progetto “Android Backup”

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

Tasker: creazione Task "Esegui Backup"

Tasker: creazione Task “Esegui Backup”

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

Tasker: aggiunta action Termux:task

Tasker: aggiunta action Termux:task

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

Tasker: configurazione plugin Termux:Task

Tasker: configurazione plugin Termux:Task

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.

Tasker: configurazione plugin Termux:Task

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:

Tasker: configurazione plugin Termux:Task

Tasker: configurazione plugin Termux:Task

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).

Tasker: il task con l’action del del plugin Termux:Task configurata

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
Tasker: configurazione profilo

Tasker: configurazione profilo

Questo profilo verrà richiamato ogni volta che riceverà l’intentupdatelog“, 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 script testbackup.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.
Tasker: il contenuto del task "MostraLog"

Tasker: il contenuto del task “MostraLog”

Tasker: profilo configurato e collegato al task "MostraLog"

Tasker: profilo configurato e collegato al task “MostraLog”

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

Tasker: HTML Popup con i log di rsync

Tasker: HTML Popup con 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:

Tasker: opzione per assegnare icona ad un task

Tasker: assegnare un’icona ad un task

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.

Tasker: l'icona del task impostata

Tasker: l’icona è stata impostata.

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:

Android: schermata di selezione dei Widget

Android: selezione dei Widget

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

Tasker: schermata di selezione task da assegnare al widget.

Tasker: selezione task da assegnare al widget.

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.

Animazione che mostra l'utilizzo di Tasker e Termux

Tasker & Termux

Questo è il link per il download del progetto e dei file necessari al suo funzionamento:

qrcode download andro-backup.zipandro-backup.zip

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!

One thought on “Raspberry Pi: usare rsync via SSH per il backup dei dispositivi Android senza permessi di root (II Parte)

  1. Pingback: Raspberry Pi: usare rsync via SSH per il backup dei dispositivi Android senza permessi di root (I Parte) - rbnet.it

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *