Backup remoto dati VPS Linux

E’ giunta l’ora di imparare ad eseguire il Backup remoto dati VPS.

Per chi, come me, ha deciso di pubblicare i sui sitini utilizzando un VPS (Virtual private server), si presenterà l’esigenza di eseguire dei backup (magari pianificati) dei propri dati.

Se il servizio utilizzato offre già la possibilità di eseguire i backup della propria macchina, il gioco è semplice. Basterà configurare il backup nel pannello di controllo per la gestione del servizio ed il problema sarà superato.

Al contrario, sei il proprio servizio non include la possibilità del backup, l’unica strada percorribile è quella della gestione autonoma di tale attività.

Io, ad esempio, utilizzo un servizio VPS di OVH, che non prevede il backup.

Nel mio VPS ho installato Linux Ubuntu 18.04 Server e la sua attività è quella di ospitare alcuni miei siti (WordPress).

L’obiettivo è quello di fare in modo che, tutti i giorni, venga lanciato un processo che: 

  • faccia il backup dei database MySql e li salvi in un determinato percorso locale
  • realizzi un archivio in cui inserisce i backup dei database, le configurazioni Apache e Ftp ed i files dei siti (compresi gli upload eseguiti).
  • carichi l’archivio di backup in un percorso remoto via ftp
  • cancelli dalla macchina locale l’archivio (per risparmiare lo spazio locale)

Per salvare il mio backup, inizialmente ho utilizzato lo spazio messo a disposizione dall’Hosting di Aruba, ma visto che le condizioni di utilizzo, in realtà, non consentono di salvare dei files esterni, ho sottoscritto un account con CloudTB, che con 2 dollari al mese, in pacchetti da 3 mesi, offre 100Gb (tanti!) dove poter scaricare in modo autorizzato i propri dati!

Per eseguire le operazioni di backup è sufficiente creare lo script .sh analogo a quello riportato sotto e basterà lanciarlo per seguire i necessari backup della nostra macchina. 
Una cosa importantissima da fare è informare esplicitamente il server FTP che si sta caricando un file binario, atrimenti il file scaricato sarebbe corrotto e non utilizzabile.
Per schedulare le operazioni (ad esempio giornalmente) basta definire un job Cron (ne parlerò in futuro).

My_Backup.sh

echo “Inizio Attività’——————————-
# Identifico il momento in cui sto facendo il backup
day=$(date +%Y%m%d%H%M%S)
# Per prima cosa imposto il percorso base in cui fare il backup
basePath=”/var/xXxXxXx” 
echo “Cancello eventuali files già presenti…
rm -r $basePath/*
# Identifico nuova directory in cui salvare i files
dailyPath=$day”_backup”
#     Creo la nuova directory giornaliera
echo “Ho creato la directory “$basePath/$dailyPath
mkdir $basePath/$dailyPath

#————BACKUP DEI DATABASES————————————————————————— INIZIO
USER_DB=’miaUserDB’                         
PASSWORD_DB=’miaPasswordDB’
echo “Faccio il backup del db WPWebln ——————————————-
mysqldump –user=$USER_DB –password=$PASSWORD_DB -h localhost WPWebln > $basePath/$dailyPath/db_WPWebln.sql 

echo “Faccio il backup del db WP_XXXXX ——————————-
mysqldump —user=$USER_DB —password=$PASSWORD_DB -h localhost WP_EdilPittureCorti > $basePath/$dailyPath/db_WP_XXXXX.sql 
#————BACKUP DEI DATABASES————————————————————————— FINE

echo “Eseguo i BackUp ———————————————————–
backup_files=”/var/www/ /etc/apache2/ /etc/proftpd/ $basePath/$dailyPath/”

# Where to backup to.
dest=$basePath/$dailyPath
archive_file=”$day-MyServer.tgz”

echo “Produco l’archivio ——————————————————–
# Backup the files using tar.
tar czf $basePath/$archive_file $backup_files
echo “Rimuomo directory ponte —————————————————
rm -r $basePath/$dailyPath/*
rmdir $basePath/$dailyPath

echo “Trasferisco FTP ———————————————————–
HOST=ftp.mioFTP.ext                      
USER=myUserFTP                         
PASSWORD=myPasswordFTP
ftp -inv $HOST lcd $basePath/
user $USER $PASSWORD
lcd $basePath/
cd /mioPercorso/
binary
put $archive_file $archive_file 
bye                                           
EOF

echo “Cancelo il file appena trasfertito
rm -r $basePath/*
echo “—Fine operazioni—