Como adicionar um ID exclusivo ao nome do arquivo no trabalho cron?

8

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?

camarada
fonte
2
Reserve um tempo para escrever o título corretamente. Torna a pesquisa muito mais fácil para todos.
26611 Mikel
1
Você escreveu "Como adicionar um ID uniqie ao arquivo nime no cron job".
26611 Mikel
Por que você não usa automysqlbackup?
stoeff

Respostas:

14

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

nix
fonte
1
Você pode modificar um pouco a sintaxe e seria o formato de data ISO 8601 perfeito. [AAAA] [MM] [DD] T [hh] [mm] [ss] Z, desde que você use a data -u no UTC, você poderá adicionar um Z após a data;). en.wikipedia.org/wiki/…
Johan
3

A prática geral para isso é usar um carimbo de data / hora date +%spara 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
Caleb
fonte
1

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.

Gilles 'SO- parar de ser mau'
fonte