Comment ajouter un identifiant unique au nom de fichier dans le travail cron?

8

Mon cronjob ressemble à ceci:

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

Comment puis-je rendre le nom de fichier unique à chaque fois que cronjob écrit mysql_daily.dump?

Copain
la source
2
Veuillez prendre le temps d'épeler correctement le titre. Cela rend la recherche beaucoup plus facile pour tout le monde.
Mikel
1
Vous avez écrit "Comment ajouter un identifiant uniqie au fichier nime dans un travail cron".
Mikel
Pourquoi n'utilisez-vous pas automysqlbackup?
stoeff

Réponses:

14

Pour bash, peut-être:

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

Personnellement, je ne mets généralement que des commandes simples dans mon crontab. Je mettrais cela dans un petit script et utiliserais le script dans le crontab. Cela aurait l'avantage de ne pas obliger les %personnages à s'échapper (un piège commun de crontab).

mise à jour en ISO 8601 par commentaire @johan

cron

rien
la source
1
Vous pourriez modifier un peu la syntaxe et ce serait un format de date ISO 8601 parfait. [AAAA] [MM] [JJ] T [hh] [mm] [ss] Z, puisque vous utilisez la date -u pour UTC, vous pouvez ajouter un Z après la date;). en.wikipedia.org/wiki/…
Johan
3

La pratique générale consiste à utiliser un horodatage à l'aide de date +%spour générer quelque chose d'utile pour marquer le fichier (j'ai utilisé les secondes comme exemple mais vous pouvez utiliser n'importe quel format de date). Il n'est vraiment pas nécessaire d'avoir un nom de fichier vraiment unique tant que le nom de fichier n'est pas en conflit.

5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily_`date +\%s`.dump
Caleb
la source
1

Essayer

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

qui mettra la date actuelle au format AAAAMMJJ dans le nom de fichier.

Gilles 'SO- arrête d'être méchant'
la source