Copias de la BD mysql automatizadas
Creo que podrías utilizar el comando
find *.tar.bz2 -mtime +numdias -exec rm {} \;
Sólo tienes que incluirle la ruta del directorio donde guardas los archivos y cambiar numdias por el número de días de antigüedad de archivos que quieres mantener.
Ejemplo: si la ruta es /home/pepito y quieres que te borre los archivos anteriores a 1 mes pondrías:
find /home/pepito/*.tar.bz2 -mtime +30 -exec rm {} \;
Creo que era así ...
Saludos
He encontrado este script para "redondearlo" seria modificarlo para que solo guarde las 20 ultimas copias os pongo el código a ver si alguien esta inspirado y me hecha 1 mano que tengo esto muy olvidado x)
#!/bin/bash
# Ruta en la que se guarda el log de la operacion de backup.
logfile="/path/log/"
# Ruta en la que guardar los backups
backup_dir="/path/donde/archivos"
# Usuario
username="usuario"
password="password"
# Creamos un nuevo log del proceso de backup
rm -rf $logfile
touch $logfile
# Mediante esta instruccion, generamos un nombre de fichero con el dia y la hora del proceso de backup.
timeslot=`date +%Y%m%d_%H%M`
cd $backup_dir
# Iteramos a traves de la lista de bases de datos a la que el usuario tiene acceso.
for BBDD in $( mysql -u $username --password=$password -h localhost -Bse 'show databases' ); do
echo "Creando copia de seguridad de $BBDD"
# Volcamos la base de datos en un fichero temporal
mysqldump --user=$username --password=$password $BBDD > datos.sql
# Y lo comprimimos en un tar.bz2 para ocupar lo mínimo. Util en bases de datos grandes.
tar cvjf mysql-$BBDD-$timeslot.tar.bz2 *.sql
# El nombre del fichero resultante contiene el nombre de la base de datos y la fecha de la copia.
# De esta manera, cuando sea necesaria su restauracion sera mas sencillo de localizar.
echo "Backup completo en la base de datos: $BBDD (mysql-$BBDD-$timeslot.tar.bz2)" >> $logfile
# Borramos el fichero temporal
rm datos.sql
done
#-------------------------------------------------
#
# Finalmente podemos enviar un email con el log de acciones para tener controlado el proceso de copia
#
#cat $logfile|mail -s "Proceso Backup $HOSTNAME = MySQL"
salu2 radge
Por la red he encontrado este script
automysqlbackup.sh
http://www.debianhelp.co.uk/mysqlscript.htm
Pero solo consigue que me guarde la ultima copia , si alguien sabe que parametro ponerle para que guarde las 10ultimas por decir algo , seria fantastico , asi haria una copia cada 2h y guardaria las 20 o 30 ultimas y andando.
salu2 radge
He encontrado este script el problema que le veo que en el nombre del archivo no añade la fecha por lo tanto el archivo sempre se sobreescribiria , aparte que no le da una ruta donde guardar los archivos.
#!/bin/bash
USER=user
PASS=password
for db in `echo "show databases" | mysql -u $USER -p $PASS | grep -v ^mysql$ | grep -v ^Database$`;
do
#un archivo por base de datos
mysqldump --add-drop-table --routines -u $USER -p $PASS ${db}> ${db}.sql;
#un unico archivo para todo el servidor de base de datos
#mysqldump --add-drop-table --routines -u $USER -p $PASS ${db}>> ${HOSTNAME}.sql;
done
salu2 radge
Buenas estoy buscando algun script para poner en el cron para que me haga copias "diarias" de mis bases de datos mysql.
He encontrado un script llamado automysqlbackup.sh pero solo consigo que me haga la copia un dia de la semana , sabeis algun otro script ?
O como configurar este para que me haga 2 o 3 veces al dia...
Por cierto mejor crear un archivo .SQL donde este la definición de la BD o copiar a "saco" el directorio /home/mysql/
Después si se tiene que restauras es más facil con fichero sql no ? que me recomendais ?
salu2 radge