¿Cómo agregar una identificación única al nombre del archivo en el trabajo cron?

8

Mi cronjob se ve así:

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

¿Cómo puedo hacer que el nombre de archivo sea único cada vez que cronjob escribe mysql_daily.dump?

compañero
fuente
2
Tómese el tiempo para deletrear el título correctamente. Hace que la búsqueda sea mucho más fácil para todos.
Mikel
1
Usted escribió "Cómo agregar uniqie id al archivo nime en el trabajo cron".
Mikel
¿Por qué no usas automysqlbackup?
stoeff

Respuestas:

14

Para bash, tal vez:

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

Personalmente, generalmente solo pongo comandos simples en mi crontab. Pondría esto en un pequeño script y usaría el script en el crontab. Esto tendría el beneficio de no requerir que se escapen los %personajes (un error común de crontab).

la actualización lo hizo ISO 8601 por comentario de @johan

cron

nada
fuente
1
Podría modificar la sintaxis solo un poco y sería un formato de fecha ISO 8601 perfecto. [AAAA] [MM] [DD] T [hh] [mm] [ss] Z, ya que usa la fecha -u para UTC puede agregar una Z después de la fecha;). en.wikipedia.org/wiki/…
Johan
3

La práctica general para esto es usar una marca de tiempo date +%spara generar algo útil para marcar el archivo (utilicé los segundos como ejemplo, pero puede usar cualquier formato de fecha). Realmente no es necesario tener un nombre de archivo verdaderamente único siempre que el nombre del archivo no entre en conflicto.

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

Tratar

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

que pondrá la fecha actual en el formato AAAAMMDD en el nombre del archivo.

Gilles 'SO- deja de ser malvado'
fuente