Tengo que crear muchas copias de seguridad de bases de datos manualmente usando mysqldump
, por ejemplo, así:
mysqldump -uroot -proot my-db > my-db.sql
Me pregunto si hay una manera fácil de incluir la fecha actual o la marca de tiempo en el nombre del archivo, de modo que el archivo se vea así: my-db-20150917.sql
(u otro formato también está bien, incluso una marca de tiempo).
Respuesta1
¿Cómo puedo poner una marca de fecha en los nombres de mis archivos?
Para incluir la hora/fecha actual en un nombre de archivo, use una combinación de date
y sustitución de comandos:
mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d`.sql
Elman
pagina paradate
explica las otras opciones que puede utilizar; pero en este contexto también te podría interesar incluir el tiempo:
mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d-%H%M`.sql
Espera, ¿qué es esta 'sustitución de comando'?
Citando delWiki de hackers de bash sobre sustitución de comandos:
La sustitución de comandos se expande a la salida de comandos. Estos comandos se ejecutan en un subshell y sus
stdout
datos son a lo que se expande la sintaxis de sustitución.
Básicamente, date -%Y%m%d
salidas 20150917
, y usamos la `
forma de sustitución de comandos con comillas invertidas ( ) para incluir esa salida en el comando que proporcionó para hacer una copia de seguridad de su base de datos. También podríamos haber utilizado:
mysqldump -uroot -proot my-db > my-db-$(date +%Y%m%d).sql
para lograr el mismo resultado.