Como adicionar id único ao nome do arquivo no cron job?

8

Meu cronjob é assim:

5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.dump

Como posso criar um nome de arquivo exclusivo para cada vez que o cronjob escreve mysql_daily.dump?

    
por Buddy 25.04.2011 / 23:40

3 respostas

14

Para o bash, talvez:

... > /srv/backup/mysql_daily-$(date -u +\%Y\%m\%dT\%H\%M\%S)Z.${RANDOM}.dump

Pessoalmente, geralmente só 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 caracteres % fossem escapados (uma armadilha comum de crontab).

atualização tornou ISO 8601 por @johan comment

cron

    
por 25.04.2011 / 23:43
3

A prática geral para isso é usar um timestamp usando date +%s para gerar algo útil para marcar o arquivo (usei segundos como exemplo, mas você pode usar qualquer formato de data). Não é realmente 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
    
por 25.04.2011 / 23:53
1

Tente

5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.$(/bin/date +\%Y\%m\%d).dump

que colocará a data atual no formato YYYYMMDD no nome do arquivo.

    
por 25.04.2011 / 23:44