27-03-2018, 11:55 PM
(This post was last modified: 28-03-2018, 08:52 AM by Ganekogorta.)
Hola
Como ya lo preguntó JoseDTF y tenía pendiente hacerlo para mi uso. He creado un script en bash que hace copias de seguridad de todas nuestras bases de datos de MySQL/MariaDB.
Para ello uso tres archivos:
Recordad que al archivo listado.txt hay que darle permisos de escritura para que el script pueda escribirle líneas y que al script secundario ademas de permisos de escritura, hay que dárselos también de ejecución.
El script MySQLBackup.sh es el siguiente:
#! /bin/bash
#defino una variable para tener la fecha y hora de creación
fecha=$(date +"%Y%m%d_%H%M")
#defino la ruta base,
ruta="/share/CACHEDEV1_DATA/"
#defino la ruta donde guardaremos las copias de seguridad
ruta1=$ruta"MSSQL/MySQL"
#defino la ruta donde estará el script secundario
ruta2=$ruta"Scripts"
# defino limite de copias a guardar
limite=30
#hago backup de todas las bases de datos con usuario root
/usr/local/mysql/bin/mysqldump -u root -pclavemysql --all-databases > $ruta1/MySQL_$fecha.sql
#listo los archivo de copia con extension .sql y los escribo en el archivo listado.txt
ls -t -1 $ruta1/*.sql > $ruta2/listado.txt
#cuento archivos .sql
fin=$(ls -t -1 $ruta1/*.sql | wc -l)
#creo cabecera de archivo del script secundario
echo "#! /bin/bash" > $ruta2/borrarMySQLold.sh
#añado líneas de archivos a borrar, los mas viejos a partir del número límite
if [ $fin -gt $limite ] ; then
for ((i=$limite+1;i<=$fin;i++)); do
linea0=$(echo -n "rm "'"')
linea1=$(awk "NR==$i{print;exit}" listado.txt)
linea2=$(echo '"')
linea="$linea0$linea1$linea2"
echo $linea >> $ruta2/borrarMySQLold.sh
done
fi
#Ejecuto archivo con comandos de borrado
$ruta2/borrarMySQLold.sh
Este script lo agrego al crontab de forma diaria y en la carpeta, según el ejemplo, obtendré siempre las últimas 30 copias.
Como ya lo preguntó JoseDTF y tenía pendiente hacerlo para mi uso. He creado un script en bash que hace copias de seguridad de todas nuestras bases de datos de MySQL/MariaDB.
Para ello uso tres archivos:
- el script propiamente dicho que hace copia de la base de datos, de nombre MySQLBackup.sh
- un archivo de texto donde tengo el listado de todas las copias anteriores, de nombre listado.txt
- un archivo de script que borra las copias mas antiguas hasta quedar solo las "n" mas recientes, de nombre borrarMySQLold.sh
Recordad que al archivo listado.txt hay que darle permisos de escritura para que el script pueda escribirle líneas y que al script secundario ademas de permisos de escritura, hay que dárselos también de ejecución.
El script MySQLBackup.sh es el siguiente:
#! /bin/bash
#defino una variable para tener la fecha y hora de creación
fecha=$(date +"%Y%m%d_%H%M")
#defino la ruta base,
ruta="/share/CACHEDEV1_DATA/"
#defino la ruta donde guardaremos las copias de seguridad
ruta1=$ruta"MSSQL/MySQL"
#defino la ruta donde estará el script secundario
ruta2=$ruta"Scripts"
# defino limite de copias a guardar
limite=30
#hago backup de todas las bases de datos con usuario root
/usr/local/mysql/bin/mysqldump -u root -pclavemysql --all-databases > $ruta1/MySQL_$fecha.sql
#listo los archivo de copia con extension .sql y los escribo en el archivo listado.txt
ls -t -1 $ruta1/*.sql > $ruta2/listado.txt
#cuento archivos .sql
fin=$(ls -t -1 $ruta1/*.sql | wc -l)
#creo cabecera de archivo del script secundario
echo "#! /bin/bash" > $ruta2/borrarMySQLold.sh
#añado líneas de archivos a borrar, los mas viejos a partir del número límite
if [ $fin -gt $limite ] ; then
for ((i=$limite+1;i<=$fin;i++)); do
linea0=$(echo -n "rm "'"')
linea1=$(awk "NR==$i{print;exit}" listado.txt)
linea2=$(echo '"')
linea="$linea0$linea1$linea2"
echo $linea >> $ruta2/borrarMySQLold.sh
done
fi
#Ejecuto archivo con comandos de borrado
$ruta2/borrarMySQLold.sh
Este script lo agrego al crontab de forma diaria y en la carpeta, según el ejemplo, obtendré siempre las últimas 30 copias.
Un saludo
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η