[GUIDA] Backup del Raspberry su Google Drive

Guide e manuali

Moderatori: Moderatore, RaffoxBS

Rispondi
Avatar utente
Daniel
Direttivo Meteopassione
Messaggi: 650
Iscritto il: sab 19 ott, 2019 18:02
Località: Carpenedolo (BS)
Contatta:

[GUIDA] Backup del Raspberry su Google Drive

Messaggio da Daniel »

[03-08-2021 21:50] TheFrogger mi ha fatto notare che sono cambiate molte cose nella pagina di generazione delle API di Google Drive, ho cercato quindi di aggiungere qualche parola riguardo le modifiche che sono state fatte, nulla di trascendentale comunque, solo qualche passaggio in più e qualche videata spostata... le novità sono mostrate in questo colore nel corso della guida...

[16-04-2020 19:44] Ho modificato la guida in modo che contemplasse due casistiche: la configurazione automatica se si può lavorare con l'interfaccia grafica del Raspberry oppure la configurazione manuale se si lavora tutto da terminale.

Eccoci oggi con una nuova guida per il Raspberry! Si possono distinguere (scherzosamente) gli utilizzatori consapevoli dei sistemi informatici da quelli sprovveduti (tipo me fino a pochi mesi fa, RaffoxBS testimone) per una importante qualità: fare il backup dei propri dati importanti!
Vediamo allora oggi come impostare il nostro fidato Raspberry per effettuare in tutta autonomia il backup dei dati importanti (nel caso più comune la cartella di Cumulus, nel mio caso anche il database MySQL e la cartella di Apache) nel cloud drive più utilizzato da anni ormai: Google Drive!

Le strade che si possono prendere sono due: se potete connettervi all'interfaccia grafica del Raspberry (tramite monitor collegato alla porta HDMI oppure tramite VNC o simili) è possibile saltare il PASSAGGIO 1, altrimenti se lavorate tramite SSH non è possibile fare l'auto-configurazione del software che andremo ad installare perciò sarà necessario fare una configurazione manuale. In questo caso, come vedrete, i passaggi sono molto semplici ma non sono pochi perché è necessario prima di tutto abilitare le API di Google Drive per permettere al nostro Raspberry di accedervi, poi lo configureremo per effettuare il backup dei dati. A grandi linee serviranno circa 40/50 minuti (oppure 30 se fate l'auto-configurazione) per eseguire tutte le operazioni (compresi i tempi di attesa) quindi prendetevi del tempo e vedrete che poi non ve ne pentirete!

Quindi se puoi usare l'interfaccia grafica del Raspberry passa subito al PASSAGGIO 2, altrimenti segui tutta la guida...

PASSAGGIO 1

Iniziamo subito con Google Drive: dal proprio browser colleghiamoci con il nostro account Google a https://console.developers.google.com/
Accettiamo le condizioni e clicchiamo su Seleziona un progetto, poi su NUOVO PROGETTO, nella finestra che ci si apre mettiamo come nome my-rclone-access e clicchiamo su SALVA.

Immagine

Attendiamo che il progetto venga creato, poi clicchiamo in alto su Abilità API e servizi, cerchiamo drive e selezioniamo Google Drive API, nella pagina che comparirà cliccheremo su Abilita.
Torniamo indietro cliccando sull’immagine di Google APIs (ora "Google Cloud Platform") in alto a sinistra e andiamo nella sezione Schermata consenso OAuth (ora "API e Servizi" poi "Schermata di consenso OAuth"), selezioniamo Esterno e facciamo clic su CREA.

Compiliamo il campo nome applicazione con my rclone [/b][/i] (ora oltre al nome va inserita la propria mail nella casella "Email per assistenza utenti" e "Informazioni di contatto dello Sviluppatore", clicchiamo poi su "Salva e Continua". Ora nella videata successiva clicchiamo su "Aggiungi Ambito") e più in basso nella parte Ambiti per API di Google clicchiamo su Aggiungi ambito

Immagine

Clicchiamo ora sulla spunta vicino a ../auth/drive e poi su AGGIUNGI. (qui è cambiato abbastanza, sfruttando la casella di ricerca andiamo a trovare drive e spuntiamo "Google Drive API", poi clicchiamo su "Aggiorna" e poi su "Salva e Continua". Nella videata successiva cliccare su "Add Users" e inserire di nuovo la propria mail, concludere con "Salva e Continua". Finito, far scorrere il riepilogo e cliccare "Torna alla Dashboard".)

Immagine

Scorriamo fino in fondo alla pagina e salviamo.
A questo punto ci siamo quasi, dobbiamo solo creare le credenziali di accesso, clicchiamo quindi su Credenziali a sinistra, poi su CREA CREDENZIALI e infine su ID Client OAuth. Come tipo di applicazione scegliamo Applicazione desktop e come nome my rclone client, cliccando su CREA vengono generate le credenziali: ID client e secret client che salviamo in un documento di testo per utilizzarle successivamente.

Immagine

PASSAGGIO 2

Ora passiamo al Raspberry! Apriamo il terminale e iniziamo con un aggiornamento (se necessario), perciò

Codice: Seleziona tutto

sudo apt update
sudo apt upgrade

Ora installiamo il client che si occuperà di connettersi a Google Drive: rclone

Codice: Seleziona tutto

sudo apt-get install rclone

Terminata l’installazione andiamo a configurare rclone per accedere a Google Drive. Una piccola precisazione: rclone genera un file di configurazione per ogni utente, quindi dobbiamo decidere se vogliamo configurare rclone per funzionare con l’utente “pi” oppure con “root”. Siccome dovremo poi effettuare delle operazioni pianificate tramite la crontab è molto meglio impostare rclone con l’utente root, quindi lanciamo

Codice: Seleziona tutto

sudo rclone config

Se tutto è andato a buon fine uscirà questo:

Codice: Seleziona tutto

NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q>

Scegliamo n e diamo invio…
Al passaggio successivo indichiamo come nome gdrive, nel dare invio ci verrà fuori questa videata:

Codice: Seleziona tutto

                                    
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / A stackable unification remote, which can appear to merge the contents of several remotes
   \ "union"
 2 / Alias for a existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio)
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Dropbox
   \ "dropbox"
 9 / Encrypt/Decrypt a remote
   \ "crypt"
10 / FTP Connection
   \ "ftp"
11 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
12 / Google Drive
   \ "drive"
13 / Hubic
   \ "hubic"
14 / JottaCloud
   \ "jottacloud"
15 / Local Disk
   \ "local"
16 / Microsoft Azure Blob Storage
   \ "azureblob"
17 / Microsoft OneDrive
   \ "onedrive"
18 / OpenDrive
   \ "opendrive"
19 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
20 / Pcloud
   \ "pcloud"
21 / SSH/SFTP Connection
   \ "sftp"
22 / Webdav
   \ "webdav"
23 / Yandex Disk
   \ "yandex"
24 / http Connection
   \ "http"
Storage>

Digitiamo ora il numero relativo a Google Drive (nel mio caso è 12) e diamo invio
Ora le strade si dividono: se hai fatto il PASSAGGIO 1 dovrai inserire a questo punto il client id e il client secret che avevamo salvato precedentemente, andiamo di copia e incolla e poi facciamo invio, se non hai fatto il PASSAGGIO 1 premi semplicemente invio sia alla richiesta del client id che a quella del client secret. Dando invio verrà mostrato questo:

Codice: Seleziona tutto

Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope>

Scegliamo 1 per avere l’accesso completo, si potrà perciò sia scrivere che leggere i file presenti sul nostro Drive, quindi avremo un collegamento bidirezionale!
I due passaggi successivi (root_folder_id e service_account_file) lasciamoli vuoti, perciò clicchiamo subito su invio senza digitare nulla. A questo punto verranno fatte poi due richieste dove è necessario rispondere positivamente o negativamente, rispondiamo alla prima con n, alla seconda con n se abbiamo inserito il client id e il client secret, altrimenti inseriamo y

Codice: Seleziona tutto

                              
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
                                        
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n>                                         

Se si ha risposto positivamente alla auto config verrà mostrato questo:

Codice: Seleziona tutto

If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code

Connettiamoci alla pagina mostrata tramite il browser del Raspberry e inseriamo la nostra mail e password di Google, confermiamo l'autorizzazione all'accesso da parte di rclone al nostro Drive e verrà mostrata questa pagina:

Immagine

Immagine

Altrimenti se si sono inseriti client id e client secret ora va consentito l’accesso all'applicazione tramite browser, verrà mostrato un link che inizia con “https://accounts.google.com/o/oauth2/ ...”, copiamo questo link nel nostro browser e seguiamo le istruzioni che ci vengono date (Novità: premere su "Continua" al messaggio di sicurezza che ci viene presentato, poi spunta su "Visualizzare, Modificare..." e poi "Continua")(sarà necessario consentire l’accesso da parte di rclone al nostro Drive), rispondiamo positivamente e alla fine verrà rilasciato un codice di verifica, lo copiamo e lo incolliamo a terminale.

Ora sia con la configurazione manuale che con quella automatica saremo arrivati a questo punto:

Codice: Seleziona tutto

Configure this as a team drive?
y) Yes
n) No
y/n> n

Scegliamo n. Hai ufficialmente finito la configurazione! Verrà mostrato ora una videata di recap tipo questa:

Codice: Seleziona tutto

--------------------
[gdrive]
type = drive
client_id = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
scope = drive
token = {"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxx","token_type":"Bearer","refresh_token":"xxxxxxxxxxxxxxxxx",
"expiry":"2020-01-23T16:21:03.502362868-07:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d>

Confermiamo la creazione del nostro collegamento remoto e alla pagina successiva possiamo uscire dalla configurazione con q.

Ora possiamo provare che tutto sia andato a buon fine digitando

Codice: Seleziona tutto

sudo rclone ls --max-depth 1 gdrive:

Dovrebbe uscirci a video il contenuto della root del nostro Drive.

Ora possiamo impostare il file di backup, nella nostra home creiamo un nuovo file con

Codice: Seleziona tutto

sudo touch auto_backup.sh

Diamo i privilegi massimi con

Codice: Seleziona tutto

sudo chmod 777 auto_backup.sh

E apriamo il nostro file con

Codice: Seleziona tutto

sudo nano auto_backup.sh

Andiamo ora ad aggiungere questo nel file:

Codice: Seleziona tutto

#!/bin/bash
Sudo rclone copy /home/pi/CumulusMX/ gdrive:/backup_raspberry/CumulusMX/
echo "backup completato con successo!"
date

Questo file possiamo modificarlo a piacimento inserendo anche il backup di altre cartelle e, con un po' di lavoro in più anche di database MySQL e altro (se vi serve fatemi sapere che aggiungo sotto anche questa parte). Salviamo con CTRL+O e usciamo con CRTL+X
Ora andiamo a provare che tutto funzioni, lanciamo quindi

Codice: Seleziona tutto

sudo ./auto_backup.sh

Lasciamo lavorare il Raspberry e dopo poco dovrebbe uscire a video solo la stringa backup completato con successo! e la data e ora attuale

Immagine

se ci sono degli errori probabilmente bisogna variare la cartella sul proprio Raspberry con quella corretta, facendo attenzione che se si vuole copiare la cartella è necessario mettere nei due percorsi sopra alla fine anche la “/”, se si vuole copiare un solo file no. Verifichiamo che sul nostro Google Drive sia stata creata la cartella backup_raspberry e che al suo interno ci sia il nostro backup.

Immagine

Se tutto è andato a buon fine ora è il momento di automatizzare l’operazione per dimenticarsene e dormire sereni. Digitiamo ora

Codice: Seleziona tutto

sudo crontab -e

Scegliamo nano come editor (se non è stato già fatto) e aggiungiamo questa riga:

Codice: Seleziona tutto

0 0 * * * sudo /home/pi/auto_backup.sh > /home/pi/auto_backup.log


Immagine

Così facendo se ci saranno degli errori verranno salvati in un file di log nella nostra home. Salviamo con CRTL+O e usciamo con CRTL+X e ogni giorno a mezzanotte verrà fatto il backup su Google Drive del nostro Raspberry! Comodo, no?

Grazie ad Anubis che mi ha permesso di approfondire i suoi problemi con rclone e creare questa guida!
In realtà rclone, come avrete intuito nella configurazione, è in grado di connettersi con molti altri servizi. Io, ad esempio, ho configurato anche il backup sul mio NAS Synology così ho sia un backup in cloud che uno a casa, se serve anche a voi posso integrare anche con questo!
Ultima modifica di Daniel il mar 03 ago, 2021 21:52, modificato 1 volta in totale.
Avatar utente
RaffoxBS
Direttivo Meteopassione
Messaggi: 14313
Iscritto il: sab 01 mar, 2008 16:15
Località: Azzano Mella (BS)
Contatta:

Re: [GUIDA] Backup del Raspberry su Google Drive

Messaggio da RaffoxBS »

Grazie Daniel!
Soluzione molto importante per avere i dati di CumulusMX sempre sotto backup e facilmente raggiungibili anche da altri pc attraverso i quali si possono creare tabelle Excel, ecc


Inviato dal mio iPhone utilizzando Tapatalk
Avatar utente
Snowflake
Socio sostenitore
Messaggi: 6311
Iscritto il: lun 17 mar, 2008 20:37
Località: Brescia loc. Fornaci
Contatta:

Re: [GUIDA] Backup del Raspberry su Google Drive

Messaggio da Snowflake »

Ottimo lavoro bravo! [emoji122]
Snowflake
Rispondi