# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Backup de todas las bases de datos MySQL con una sola línea de comandos


Probablemente la mayoría de vosotros trabajéis con bases de datos MySQL y tengáis scripts personalizados para hacer copias de seguridad de las mismas. Por ello, y por si os fuera de utilidad os dejo esta línea de comandos  que hace un dump de todas las bases de datos de un servidor MySQL separadas en ficheros .sql independientes.

for DB in `mysql -e "show databases" -u USUARIO -pPASSWORD | grep -v Database`; do mysqldump -u USUARIO -pPASSWORD $DB > "$DB.sql"; done

Como podéis ver es bastante sencillo, hacemos un bucle con la salida del comando “show databases” que vuelca por pantalla todas las bases de datos del servidor, eliminamos la única línea que no nos interesa (la que contiene Database) y vamos haciendo una a una la copia de seguridad de cada una de las bases de datos con mysqldump. Únicamente tendréis que modificar el usuario y clave con el que conectar al servicio.

Categoría: MySQL | Etiquetas: , , , ,

8 Comentarios

  1. Sidious dice:

    Buenas!

    Perfecto. Yo pondría la contraseña en $HOME/.my.cnf por si acaso y además no haría falta meter usuario y password. Bueno, y por comodidad :-)

    Saludos.

  2. Santi Saez dice:

    Hola Alex,

    Te puedes ahorrar el “grep” si llamas al primer “mysql” con la opción “-B” para trabajar en modo batch:

    for DB in `mysql -Bse ‘SHOW DATABASES’` ; do mysqldump $DB | bzip2 > $DB.sql.bz2 ; done

    Saludos!

  3. [...] This post was mentioned on Twitter by damibo rss, rm-rf.es. rm-rf.es said: Backup de todas las bases de datos MySQL con una sola línea de comandos http://bit.ly/eBChg1 [...]

  4. Matias dice:

    Una pregunta, los dumps que este comando genere, en que directorio se guardarán ?

  5. Alex dice:

    En la ruta en la que ejecutes y se encuentre el script: > “$DB.sql”;

  6. Matias dice:

    Muchas gracias!!! Terrible blog y una respuesta increiblemente rapida!!!

Deja una respuesta