Incluir carimbo de data/hora atual no nome do arquivo?

Incluir carimbo de data/hora atual no nome do arquivo?

Eu tenho que criar muitos backups de banco de dados manualmente usando mysqldump, por exemplo, assim:

mysqldump -uroot -proot my-db > my-db.sql

Estou me perguntando se existe uma maneira fácil de incluir a data ou carimbo de data/hora atual no nome do arquivo, para que o arquivo fique assim: my-db-20150917.sql(ou outro formato também é adequado, até mesmo um carimbo de data/hora).

Responder1

Como posso marcar a data dos nomes dos meus arquivos?

Para incluir a hora/data atual em um nome de arquivo, use uma combinação de datee substituição de comando:

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

Omanpágina paradateexplica as outras opções que você pode usar; mas neste contexto você também pode estar interessado em incluir o tempo:

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

Espere, o que é essa ‘substituição de comando’?

Citando dowiki de bash hackers sobre substituição de comando:

A substituição de comando se expande para a saída de comandos. Esses comandos são executados em um subshell e seus stdoutdados são para os quais a sintaxe de substituição se expande.

Basicamente, date -%Y%m%dproduz 20150917, e usamos a `forma backtick() de substituição de comando para incluir essa saída no comando que você forneceu para fazer backup de seu banco de dados. Poderíamos igualmente ter usado:

mysqldump -uroot -proot my-db > my-db-$(date +%Y%m%d).sql

para obter o mesmo resultado.

informação relacionada