Konfiguruję Cronjob, który utworzy kopię zapasową bazy danych MySQL, którą mam na serwerze, ale nie chcę, aby ciągle nadpisywał ten sam plik. Zamiast tego chcę mieć szereg kopii zapasowych do wyboru, wykonywanych automatycznie. Na przykład:
## 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
I tak dalej.
Czy jest jakiś sposób na użycie daty i / lub godziny systemowej jako zmiennej w moim Cronjob? Jeśli nie, jakie są Twoje sugestie, aby osiągnąć to samo?
date
na plik cron: niektóre crony (wszystkie?) Traktują%
jako koniec polecenia. (więc$()
to nie był problem). Musisz uciec od wszystkich znaków procentu:... touch "/tmp/$(date +\%Y-\%m-\%d)"
(ładniej jest użyć formatu daty, który sortuje leksykograficznie)DATE=$( date -I )
a następnie użycie${DATE}
skutkuje użyciem literału$( date -I )
w wierszu polecenia zadania.%
jest również konieczna w OpenSuse 42.Powinieneś być w stanie używać
date
.Rodzaj
info date
lub,man date
aby uzyskać szczegółowe informacje.Może ci się podobać coś takiego (zmień format daty na swoje potrzeby)
źródło
%
znaków w cronie.Zobacz: http://www.ducea.com/2008/11/12/using-the-character-in-crontab-entries/
źródło
Oto skrypt bash, którego użyłem:
Pliki wyglądają następująco:
Wskaż na to zadanie crona, aby uruchamiało się co noc lub cokolwiek wolisz.
źródło
Napisz mały skrypt opakowujący, który korzysta z
date
polecenia i wywołuje polecenie tworzenia kopii zapasowej.źródło