Fins ara estava fent copies de seguretat de les meves BD mysql (la d'aquest blog per exemple) amb un script php que vaig trobar fa temps, i me'ls enviava al correu. Avui me'n he adonat que des de finals d'agost no tenia cap còpia de seguretat i després de mirar-m'ho he vist que es degut a que amb una actualització de PHP per millorar la seguretat fallava l'script a l'hora de muntar les capçaleres del mail.

Com que no acabava d'entendre bé el codi, he decidit fer-me un script propi, per a fer la copia i enviar-m'ho per mail, i he decidit que amb perl em seria més fàcil.
El primer que m'ha fet falta es instal·lar el mòdul MIME::Lite, que es fa fàcil executant amb root la comanda
cpan -i MIME::Lite

Després m'he creat l'script, el codi és el següent

#!/usr/bin/perl use warnings; use MIME::Lite;

\$db_user = '';
\$db_pass = '';
\$db_server = '';
if(\$#ARGV!=0){
print "Error, passar nom de BD com a paràmetre\n";
exit 1;
}
\$db_name = \$ARGV[0];
\$file = \$db_name.'.gz';

\$cmd = 'mysqldump -u ' . \$db_user . ' -h ' . \$db_server . ' --password=' . \$db_pass . ' ' . \$db_name . ' | gzip > ' . \$file .'';
system (\$cmd);

\$msg = MIME::Lite->new(
From => "mail\\@enviament.cat",
To => "destinatari\\@mail.com",
Subject => "Copia de seguretat MySQL del teu servidor - ".\$db_name,
Type => "text/plain",
Data => "Administrador, la teva BD s'ha copiat!");
\$msg->attach(
Type => "application/x-tar",
Path => \$db_name.".gz",
Filename => \$db_name.".gz");
\$msg->send;

Per executar-lo només cal fer perl i ja està, ens envia un correu amb la copia com a fitxer adjunt

Execució Script

Correu copia de seguretat

Amb això he afegit la comanda al crontab per a que s'executi els dies que em convé per les bases de dades que vull tenir copies periòdiques i llestos.

Previous Post Next Post