Tutorial > Come effettuare un backup automatico del server sul cloud via SFTP su Ubuntu 20.04

Come effettuare un backup automatico del server sul cloud via SFTP su Ubuntu 20.04

Pubblicato il: 25 giugno 2020

Backup Storage Ubuntu

Introduzione

Al giorno d'oggi sui nostri computer vengono salvate tutte le informazioni e i file personali, dai meno significativi a quelli più importanti.

Eseguire dei backup per prevenire la perdita dei dati è diventata pertanto un'esigenza imprescindibile, sia per il sysadmin che ha bisogno di mettere al sicuro i dati delle postazioni di lavoro dei colleghi in smart working, sia per il webmaster o lo sviluppatore che ha l'esigenza di disporre di una copia di backup del proprio sito web.

Se sei in possesso di uno spazio di cloud backup, puoi automatizzare il processo di creazione del backup e del suo trasferimento sullo storage esterno a tua disposizione. In questo modo avrai la sicurezza di possedere sempre una copia di backup aggiornata dei file del tuo server.

In questo tutorial imparerai a impostare questo tipo di backup automatico di file e cartelle direttamente sul tuo server e a trasferirlo via SFTP su uno spazio di backup o su un altro server, salvando i dati in remoto in maniera rapida e sicura.

Prerequisiti

Per poter seguire questa guida devi essere in possesso di:

  • Un server o computer locale, con Ubuntu 20.04, in cui sono archiviati i file di cui vuoi effettuare il backup;
  • Uno spazio esterno di Cloud Backup, a cui poterti connettere mediante il protocollo SFTP.

Per iniziare dovrai connetterti al tuo server tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.

Installazione di Zip

Il primo strumento che è necessario installare si chiama Zip e ti permetterà di generare un archivio contenente tutti i dati che intendi salvare.

Qualora non fosse già installato sul tuo server, puoi effettuare l'installazione di Zip mediante il seguente comando:

sudo apt-get update -y && sudo apt install zip -y 

Creazione Script: Inserimento di file e cartelle da salvare

Una volta installato il tool, puoi procedere con la realizzazione dello script tramite il quale generare un archivio .zip. Per prima cosa crea un file chiamato “script.sh”:

sudo nano script.sh 

Si aprirà l'editor di testo all'interno del quale dovrai aggiungere le diverse istruzioni per la creazione del backup. Vediamo passo passo quali sono queste istruzioni.

sudo zip backup_$(date +"%m_%d_%Y").zip file_1 file 2 folder_1 folder_2 .. folder_n

Con questa istruzione ogni giorno in cui viene eseguito lo script, verrà generato un nuovo archivio che non andrà a sovrascrivere quello creato in un giorno precedente.

N.B. Invece di ‘file_1’, ‘file_2, .. ‘file_n’ devi specificare il percorso ed il file singolo che intendi salvare. Stessa cosa vale per le cartelle. Non c’è un limite di file e cartelle che si possano salvare.

Ad esempio, se volessimo salvare i file “file_1.txt” , “file_2.txt”, “index.html” e le cartelle “folder_one” e “folder_two” (tutti presenti nella directory /home), nel file ‘script.sh’ andrebbe inserito il comando così come in figura:

Creazione del backup

Creazione Script: Trasferimento del backup sullo storage esterno

Dopo aver generato il backup, bisognerà inviarlo allo storage esterno. Per trasferire il backup puoi utilizzare il protocollo SFTP. Aggiungi allo script due ulteriori istruzioni:

sudo sftp user@host:/backup_folder <<<$'put backup_'$(date +"%m_%d_%Y")'.zip'  
sudo rm -r /path/backup_$(date +"%m_%d_%Y").zip 

La prima istruzione effettua un invio mediante SFTP allo storage esterno. Naturalmente al posto di user e di host devi inserire nome utente e IP/hostname del tuo spazio o server di backup.

La seconda istruzione elimina invece l’archivio locale in maniera tale che non occupi spazio sul disco.

A questo punto il tuo file ‘script.sh’ avrà una struttura molto simile alla seguente:

Caricamento del backup

Terminato l’inserimento dei comandi all’interno del file “script.sh” bisogna rendere il file stesso un eseguibile. Puoi farlo mediante la seguente istruzione:

 sudo chmod a+x script.sh 

A questo punto puoi avviare lo script, richiamandolo dal terminale:

 ./script.sh 

Esecuzione dello script

Basterà infatti digitare il comando sopra elencato per avviare il processo di copia. Tuttavia al momento ci sono due inconvenienti:

  • In fase di connessione al server viene richiesto l’inserimento della password (si tratta a tutti gli effetti di una connessione SSH);
  • Lo script deve essere avviato manualmente per effettuare il backup e l’invio sullo storage esterno.

Per ovviare a questi due problemi ci vengono incontro due utili strumenti:

  • sshpass
  • cron.

Installazione di SSHPass

Mediante l’installazione di questo strumento, è possibile indicare la password di accesso al Server direttamente nella richiesta definita nello script. Ovviamente questa pratica porta con sé dei rischi: chiunque entri in possesso del tuo script potrebbe effettuare l'accesso al tuo server di backup.

Chiarito quindi il rischio principale di questa pratica, per installare il tool ti basterà digitare sulla tua macchina:

sudo apt-get install sshpass -y 

Terminata l’installazione, bisogna modificare lo script inserendo anche la password per l’accesso. Digita quindi:

sudo nano script.sh 

Recati nel punto in cui è scritto il comando riguardante l’invio mediante SFTP ed effettua la seguente modifica:

sudo sshpass -p 'PASSWORD_SERVER_STORAGE' sftp user@host 

Lo script apparirà molto simile alla figura sottostante.

Script backup con SSHPass

Se esegui ora lo script richiamandolo come fatto in precedenza, non ti verrà chiesta alcuna password e la copia avverrà istantaneamente.

Caricamento Backup con SSHPass

Automatizzazione del backup con Cron

Cron è uno strumento di sistema con il quale poter far eseguire determinati comandi a intervalli temporali specifici. Per accedere a Cron basta digitare nella console:

sudo crontab -e

Nell’editor che viene aperto bisogna specificare il comando e le regole che definiscono ogni quanto quel comando debba essere eseguito. Più precisamente, la sintassi da rispettare è “m h dom mon dow command” dove:

  • m: minuto (0 - 59)
  • h: ora (0 - 23)
  • dom: Giorno del mese (1 - 31)
  • mon: Mese (1 - 12)
  • dow: Giorno della settimana (0 - 7 (0: Domenica - 6: Sabato))

In questo caso ipotizziamo di voler eseguire il backup automatico alle 23.30 di ogni sera. La sintassi in questo caso diventa:

30 23 * * * ./path/script.sh

Esecuzione automatica dello script con crontab

Conclusione

Se hai eseguito tutti i passi di questo tutorial, ogni giorno alle 23.30 il tuo server o computer locale creerà un archivio zip di backup, contenente i file e le cartelle selezionate, lo invierà allo storage esterno via SFTP ed eliminerà l’archivio dal tuo hard disk per non occupare la memoria.

In questo modo ti sarai assicurato che il backup dei tuoi file venga salvato su un spazio di cloud backup, permettendo di proteggerti da eventuali imprevisti o malfunzionamenti del tuo server o computer locale.

In caso di perdita dei dati, potrai infatti recuperare il backup dallo storage esterno e ripristinarlo sulla tua macchina.