Grazie Google

Come sono riuscito a ripristinare il mio sito da una situazione catastrofica

Altopiano di Asiago 2010

Ho trascorso le ferie di fine agosto in montagna. Tornando, una decina di giorni fà, ho ricevuto una newsletter dal fornitore dell’hosting nella quale veniva fatto riferimento ad alcuni disagi subiti da alcuni utenti a causa del crash del database.

Rimanendo un po’ perplesso, ma giusto per curiosità, ho aperto col browser il mio sito, trascurato per molte settimane. 

Ho sgranato gli occhi leggendo su una pagina semi-bianca il titolo  “jhjhlooddwwd: Solo un altro sito WordPress” !

Orrore e tragedia! Pochi istanti e la conferma dei tecnici dell’Hosting provider
e ho capito che il database del mio sito era uno di quelli sfortunati, cioè si era in pratico “fumato” a causa di un grave errore hardware del server, ma soprattutto che i dati non potevano essere ripristinati!

Chi predica bene razzola male: non avevo impostato backup periodici, e l’ultimo backup che avevo fatto manualmente al DB era purtroppo abbastanza vecchio da non contenere alcuni ultimi post! Accidentaccio… il contenuto di qualche articolo, a mio avviso, era veramente interessante ed era un peccato che fosse stato perso così.

Per fortuna che alcune idee buone vengono al momento giusto: grazie alla cache delle pagine nei motori di ricerca e
grazie anche alla latenza con la quale i crawlers effettuano la scansione dei siti, sono riuscito fortunosamente a recuperare e salvare tutti i contenuti persi.
Se la velocità di scansione fosse stata più elevata, anche per esempio settimanale, avrei recuperato solo parzialmente le informazioni: non tutti i mali vengono per nuocere quindi!

Grazie allora a

 GoogleBingGigablast

non lo conoscevo, ma ho utilizzato anche Gigablast, The “Green” Search Engine, la cui server farm viene alimentata al 90% dall’energia pulita del vento.
Poi, per non affidarmi esclusivamente a backup manuali, ho creato opportuni script per il backup:
Il database non è accedibile direttamente, ma solo via Web da MySqlAdmin e accedendo precedentemente da CPanel:
certamente sono precauzioni legate alla sicurezza, ma impediscono l’implementazione di un automatismo semplice.

Utilizzando Wget in 3 passi, si riesce a scaricare un backup gzippato del DB, simulando le stesse azioni che farebbe un utente reale.

Di seguito riporto il contenuto dello script backup.sh:

-- cpanel url
cpurl=https://cp.tophost.it/
cpusr=user1
cppwd=pass1
-- mysqladmin url
dburl=$cpurl/mysql/
dbusr=database_user
dbpwd=database_pass
-- file location
d=$(dirname $0)
bkfile="backup.sql-$(date +%F).gz"
bkurl="$dburl/export.php?export_type=server&db_select%5B%5D=database_user&what=s
ql&header_comment=&sql_compat=NONE&sql_structure=structure&sql_auto_increment=1&
use_backquotes=1&sql_data=data&showcolumns=yes&extended_ins=yes&max_query_size=5
0000&hexforbinary=yes&sql_type=insert&latex_caption=yes&latex_structure=structur
e&latex_structure_caption=Struttura+della+tabella+__TABLE__&latex_structure_cont
inued_caption=Struttura+della+tabella+__TABLE__+%28continua%29&latex_structure_l
abel=tab%3A__TABLE__-structure&latex_data=data&latex_showcolumns=yes&latex_data_
caption=Contenuto+della+tabella+__TABLE__&latex_data_continued_caption=Contenuto
+della+tabella+__TABLE__+%28continua%29&latex_data_label=tab%3A__TABLE__-data&la
tex_replace_null=%5Ctextit%7BNULL%7D&csv_data=csv_data&export_separator=%3B&encl
osed=%22&escaped=%5C&add_character=%5Cr%5Cn&csv_replace_null=NULL&excel_data=exc
el_data&excel_replace_null=NULL&excel_edition=win&htmlexcel_data=htmlexcel_data&
htmlexcel_replace_null=NULL&htmlword_structure=structure&htmlword_data=data&html
word_replace_null=NULL&pdf_data=pdf_data&pdf_report_title=&xml_data=xml_data&asf
ile=sendit&filename_template=__SERVER__&remember_template=on&compression=gzip" 
/usr/bin/wget  --save-cookies=c --keep-session-cookies --http-user=$cpusr --http
-passwd=$cppwd -O $d/u1 -q $cpurl
/usr/bin/wget  --save-cookies=c1 --load-cookies=c --keep-session-cookies --http-
user=$dbusr --http-passwd=$dbpwd -O $d/u2 -q $dburl
/usr/bin/wget  --save-cookies=c2 --load-cookies=c1 --keep-session-cookies --http
-user=$dbusr --http-passwd=$dbpwd -O $d/$bkfile -q $bkurl

 
Per quanto riguarda la copia del filesystem ho utilizzato Lftp.

echo "open ftp://$login:$password@$desthost" > $tmpfile
echo "mirror -ec / $d/MIRROR/" >> $tmpfile
echo "exit" >> $tmpfile
/usr/bin/lftp -f  $tmpfile

 

Pomeriggio d'agosto sull'Altopiano

In questi giorni sto finendo di ri-caricare i contenuti persi. Ora, con i backup periodici schedulati e funzionanti, mi sento più tranquillo e sereno.

Riferimenti

– lftp: http://lftp.yar.ru/

– Cpanel: http://www.cpanel.net/

– MysqlAdmin: http://sourceforge.net/projects/mysql-admin/

– Altopiano di Asiago: http://www.asiago7comuni.to/it/home.htm

Questa voce è stata pubblicata in MySQL, Software, Web e contrassegnata con , . Contrassegna il permalink.

Lascia un commento

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


*