Creare backup di un file su Linux e caricarlo via FTP

Backup dei contenuti di un server Linux e upload via FTP del file compresso e crittografato con GPG.

Quando si lavora su server Linux è utile creare frequentemente i backup delle configurazioni sulle quali si sta lavorando. Si può ad esempio creare un archivio di backup compresso, anche crittografato, con l’utilità tar quindi caricarlo periodicamente su un server FTP.

Si supponga di voler creare un backup del contenuto di una serie di cartelle locali oppure di esportare e salvare altrove un dump di uno o più database in formato MySQL o MariaDB.

Com’è possibile fare? Come creare uno script Linux che effettui il backup dei dati quindi li carichi su un server FTP remoto?

Backup dei dati su Linux e upload via FTP

Proponiamo di seguito un semplice script che, a titolo esemplificativo, effettua il dump del contenuto di un database MySQL, lo memorizza in locale quindi ne comprime il contenuto e ne crea una versione crittografata con l’utilità gpp (GNU Privacy Guard):
#!/bin/sh
today=`date '+%Y%m%d_%H%M%S'`;
filename="Dump$today.sql"
mysqldump -uroot -p'PASSWORD_MYSQL' NOME_DATABASE > $filename
tar -cvzf - $filename | gpg --passphrase 'PASSWORD_CIFRATURA' --batch --quiet --yes -c -o $filename.tar.gz.gpg
curl -T $filename.tar.gz.gpg ftp://SERVER_FTP --user USERNAME:'PASSWORD'
rm $filename.tar.gz.gpg
rm $filename

La prima riga dello script estrae la data e l’ora di sistema corrente nel formato YYYYMMDD_hms. Tale informazione viene aggiunta al contenuto della variabile $filename.

Il comando mysqldump crea un file dump con estensione .sql che contiene quanto presente all’interno del database NOME_DATABASE. Al posto di PASSWORD_MYSQL si dovrà in questo caso sostituire la password dell’utente root o di un altro account.

Il comando gpg viene utilizzato per crittografare il contenuto del file di backup in formato compresso (creato usando l’utilità tar). La password di codifica e decodifica è quella specificata in corrispondenza di PASSWORD_CIFRATURA.

Il successivo comando curl viene utilizzato per effettuare l’upload del file via FTP usando le credenziali specificate (operare le opportune sostituzioni in termini di indirizzo del server FTP, username e password).

Le ultime due righe dello script vengono utilizzate per eliminare la copia locale dei due file creati.

Per creare lo script, basta digitare il comando seguente quindi incollarvi le righe presentate in precedenza cliccando con il tasto destro del mouse:

nano backup.sh

Premendo le combinazioni di tasti CTRL+O e CTRL+X si potrà salvare il file.

Da ultimo, si dovrà rendere eseguibile lo script digitando quanto segue:

chmod a+x ./backup.sh

Per programmare l’esecuzione periodica dello script è sufficiente usare cron digitando crontab -e.

Nell’esempio in figura, l’esecuzione dello script viene richiesta in automatico ogni giorno alle ore 6 del mattino:

00 06 * * * /root/backup.sh

Anche in questo caso bisognerà premere CTRL+O e CTRL+X per memorizzare le modifiche.

Il comando readlink -f seguito dal nome dello script, consente di ottenere il percorso completo da passare a cron.

Se si saranno seguiti con attenzione tutti i passaggi illustrati, all’orario specificato il file di backup del database MySQL/MariaDB verrà automaticamente caricato sul server FTP indicato in forma crittografata.
Lo stesso approccio è ovviamente utilizzabile per creare un backup di qualunque altro contenuto presente sul server.

Le password sono memorizzate in chiaro nello script. La soluzione è quindi applicabile in sicurezza solo su quei server sui quali si ha il pieno controllo e che non fossero condivisi con altri utenti.

Ti consigliamo anche

Link copiato negli appunti