Antes que nada es menester, nobleza bloggera obliga, disculparme porque hace mucho (MUCHO!) que no posteo nada en el blog. Ando con poco tiempo y pocas cosas interesantes para decir. Pero yendo a lo que nos ocupa…
En estos días necesitaba hacer un backup de todas las bases de datos de un servidor MySQL, pero no me servía hacer mysqldump –all-databases, porque necesitaba tenerlo en archivos separados (uno para cada DB). Seguramente es algo que ya debe haber sido hecho mil veces, pero no tenía tampoco muchas ganas de perder mucho tiempo en Google (una búsqueda rápida no me dio resultados útiles), así que hice el siguiente script muuy sencillo que obtiene todas las DB de un server y hace un dump de cada una. Se los dejo por si les sirve, capaz los saque de un apuro en alguna ocasión.
#!/bin/bash
PORT="3306"
USER="root"
PASSWORD="yourpassword"
mysql=/usr/bin/mysql
mysqldump=/usr/bin/mysqldump
TABLES=`$mysql -P $PORT -u $USER --password=$PASSWORD --execute="SHOW DATABASES;" |awk '{print($1)}' |grep -v "Database" |grep -v "information_schema"`
for table in $TABLES; do
echo "Backing up $table..."
file=$table.backup_`date +%Y%m%d`.sql
$mysqldump -P $PORT -u $USER --password=$PASSWORD $table > $file
echo "Compressing backup..."
gzip $file
done
Nota: la definición del puerto es innecesaria, pero yo la tuve que hacer porque en mi caso el servidor no estaba corriendo en el puerto default (3306) sino en otro.



