¿Incluir la marca de tiempo actual en el nombre del archivo?

¿Incluir la marca de tiempo actual en el nombre del archivo?

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 datey sustitución de comandos:

mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d`.sql

Elmanpagina paradateexplica 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 stdoutdatos son a lo que se expande la sintaxis de sustitución.

Básicamente, date -%Y%m%dsalidas 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.

información relacionada