Meu cronjob fica assim:
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.dump
Como faço para tornar o nome do arquivo exclusivo sempre que o cronjob grava mysql_daily.dump?
Meu cronjob fica assim:
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.dump
Como faço para tornar o nome do arquivo exclusivo sempre que o cronjob grava mysql_daily.dump?
Respostas:
Para o bash, talvez:
... > /srv/backup/mysql_daily-$(date -u +\%Y\%m\%dT\%H\%M\%S)Z.${RANDOM}.dump
Pessoalmente, eu geralmente apenas coloco comandos simples no meu crontab
. Eu colocaria isso em um pequeno script e usaria o script no crontab
. Isso teria o benefício de não exigir que os %
personagens escapassem (uma armadilha comum do crontab).
atualização tornou ISO 8601 por @johan comentário
cron
A prática geral para isso é usar um carimbo de data / hora date +%s
para gerar algo útil para marcar o arquivo (usei segundos como exemplo, mas você pode usar qualquer formato de data). Realmente não é necessário ter um nome de arquivo verdadeiramente exclusivo, desde que o nome do arquivo não entre em conflito.
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily_`date +\%s`.dump
Tentar
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.$(/bin/date +\%Y\%m\%d).dump
que colocará a data atual no formato AAAAMMDD no nome do arquivo.