3 votes

Format de la date et de l'heure dans la crontab UNIX

J'exécute un cron toutes les 6 heures pour sauvegarder ma base de données. Je veux que le nom du fichier contienne la date et l'heure de sa création dans le format suivant :

mysqlbackup_22/5/2013_15:45.sql.gz

Voici la commande que j'exécute :

date=`date -d`; mysqldump -uusername -ppassword dbname | gzip > /path/to/dir/mysqlbackup_$date.sql.gz

Que dois-je changer ? date -d à ?

12voto

Jürgen Strobel Points 1365

Si vous utilisez un format de date comme date +"%d-%m-%Y_%H:%M" dans votre crontab, il se peut que vous deviez échapper l'élément % avec un backslash, comme ceci : date +"\%d-\%m-\%Y_\%H:\%M" .

De nombreux crons gèrent % spécialement en les remplaçant par newline et en envoyant le texte suivant comme stdin à la commande précédente. Voir man 5 crontab pour les détails.

1voto

msb Points 406

El + opérateur sur date vous donne la possibilité de spécifier la date de la façon/du format que vous voulez, tant qu'il existe une variable pour ce que vous voulez. Dans ce cas, de man date :

   %d     day of month (e.g, 01)
   ...
   %H     hour (00..23)
   ...
   %m     month (01..12)
   %M     minute (00..59)
   ...
   %Y     year

Donc, vous auriez :

date +"%d/%m/%Y_%H:%M"

Ou, s'appliquant à votre commandement :

date=`date +"%d-%m-%Y_%H:%M"`; mysqldump -uusername -ppassword dbname | gzip > /path/to/dir/mysqlbackup_$date.sql.gz

Notez que j'ai changé les barres obliques ( / ) dans les noms de fichiers en tirets ( - ) car les noms de fichiers unix/linux ne peuvent pas comporter de barres obliques.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X