Estoy configurando un Cronjob que respaldará una base de datos MySQL que tengo en mi servidor, pero no quiero que siga sobrescribiendo el mismo archivo una y otra vez. En cambio, quiero tener una variedad de copias de seguridad para elegir, hechas automáticamente. Por ejemplo:
## Cronjob, run May 21st, 2011:
mysqldump -u username -ppasword database > /path/to/file/21-03-2011.sql
## SAME Conjob, run May 28th, 2011:
mysqldump -u username -ppasword database > /path/to/file/28-03-2011.sql
Y así.
¿Hay alguna manera de que pueda usar la fecha y / o hora del sistema como algún tipo de variable en mi Cronjob? Si no, ¿cuáles son sus sugerencias para lograr lo mismo?
date
Hay que tener cuidado con dentro de un cronfile: algunos crons (¿todos?) Se tratan%
como el final del comando. (Así que$()
no era el problema). Debe escapar de todos los signos de porcentaje:... touch "/tmp/$(date +\%Y-\%m-\%d)"
(es mejor usar un formato de fecha que se clasifique lexicográficamente)DATE=$( date -I )
y luego usarlo${DATE}
más tarde resulta en usar un literal$( date -I )
en la línea de comando del trabajo.%
es necesario escapar de OpenSuse 42.Deberías poder usar
date
.Escriba
info date
oman date
para más detalles.Algo como lo siguiente podría ser adecuado para usted (cambie el formato de fecha según sus necesidades)
fuente
%
caracteres dentro de cron.Ver: http://www.ducea.com/2008/11/12/using-the-character-in-crontab-entries/
fuente
Aquí está el script bash que utilicé:
Los archivos se ven así:
Apunte el trabajo cron a esto para que se ejecute todas las noches o lo que prefiera.
fuente
Escriba un pequeño script de contenedor que utilice el
date
comando y llame a su comando de copia de seguridad.fuente