Ok queridos communiters el dia de hoy me levante con ganas de hacer algo nuevo para respaldar la base de datos de la comunidad.
Resulta que he estado haciendo los respaldos y los he estado moviendo al hosting en donde estaba antes el foro , pero ese hosting vence en 2 meses, asi que me puse a investigar acerca de otras partes en donde pudiera almacenar este archivo.
Entonces me dije a mi mismo ! si tengo gmail porque no le saco mas provecho del que ya le estoy sacando
, asi es que he optado por mandar los backups hacia mi cuenta de gmail.
Ahora bien Gmail tiene como maximo tamaño de los attachments 10M , el backup de la comunidad anda rondando los 60 mb en archivo .sql, una vez esta en gzip ocupa un aproximado de 25mb, asi es que tengo que hacer algo al respecto para repartir los archivos en varios pedazos.
Una vez comence la investigación llegue a estos dos documentos que me han sido muy utiles
http://www.sematopia.com/?p=61
Backup en PHP y la envai por correo con el mismo php, requiere unas librerias de PEAR activas.
http://www.oscarm.org/news/phpdevel/543.php
Respaldo de base de datos y envio por correo en BASH , requiere mutt o algun cliente de linea de comandos para enviar correos , yo opte por instalar mutt
Muy bien yo estoy de acuerdo con el autor del segundo documento en donde comenta que cree que para que poner a trabajar el PHP en algo que se puede hacer por consola y se deja de un lado el PHP.
Asi es que tome el script del segundo articulo y lo modifique a mi gusto para que hiciera pedazos de 8M y los enviara por correo , lo cual fue un exito
, aqui se los dejo.
#!/bin/bash
#Backup your MySQL database and have it mailed to you
#requires mutt or another command line email client
if [ -z "$1" ]
then
echo "Database name expected as the first parameter"
exit
fi
if [ -z "$2" ]
then
echo "Recipient expected as second parameter"
exit;
fi
if [ -z "$3" ]
then
echo "Usuario esperado como tercer parametro"
exit;
fi
if [ -z "$4" ]
then
echo "Contrasenia esperada como cuarto parametro"
exit;
fi
# config
tmp="/tmp"
db_user=$3
db_pw=$4
db_name=$1
db_host="localhost"
recp=$2
today=`date +%Y-%m-%d`
mysqldump_opts="--add-drop-table -acQq"
# email settings
subject="DB Backup for $1"
#sql_file=$tmp/$db_name.$today.sql
sql_file=$db_name.$today.sql
#gzip_file=$tmp/$db_name.$today.sql.gz
gzip_file=$db_name.$today.sql.gz
filepiece=dbbackup
# create the backup
mysqldump $mysqldump_opts -u $db_user -h $db_host -p$db_pw $db_name > $sql_file
#create the gzip'd attachment
gzip $sql_file
#split the gzip into 8M size files
split -b 8m $gzip_file $filepiece
#send the mail
#we could also scp it offsite instead (better)
for file in $filepiece*; do
echo "Automated database backup" | mutt -a $file -s "$subject" $recp
done
#delete temp file
rm $gzip_file
#Eliminar las partes
for file in $filepiece*; do
rm $file
done
Espero le sirva a mas de alguno de uds
REcuerden que este script solo sirve en maquinas con linux !!