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 date
e substituição de comando:
mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d`.sql
Oman
página paradate
explica 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
stdout
dados são para os quais a sintaxe de substituição se expande.
Basicamente, date -%Y%m%d
produz 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.