Я настраиваю Cronjob, который будет резервировать базу данных MySQL, которая есть на моем сервере, но я не хочу, чтобы она продолжала перезаписывать один и тот же файл снова и снова. Вместо этого я хочу иметь массив резервных копий на выбор, сделанный автоматически. Например:
## 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
И так далее.
Можно ли использовать системную дату и / или время в качестве некоторой переменной в моем Cronjob? Если нет, что вы предлагаете сделать то же самое?
date
Нужно быть осторожным с внутренним файлом: некоторые кроны (все?) Считаются%
концом команды. (так$()
что проблема не была). Вы должны избежать всех знаков процента:... touch "/tmp/$(date +\%Y-\%m-\%d)"
(лучше использовать формат даты, который сортирует лексикографически)DATE=$( date -I )
и последующее использование${DATE}
приводит к использованию литерала$( date -I )
в командной строке задания.%
необходимо и в OpenSuse 42.Вы должны быть в состоянии использовать
date
.Введите
info date
илиman date
для деталей.Вам может подойти что-то вроде следующего (измените формат даты в соответствии с вашими потребностями)
источник
%
символов внутри cron.Смотрите: http://www.ducea.com/2008/11/12/using-the-character-in-crontab-entries/
источник
Вот скрипт bash, который я использовал:
Файлы выглядят так:
Направьте работу cron на это, чтобы бегать по ночам или как угодно.
источник
Напишите небольшой скрипт-обертку, который использует
date
команду и вызывает вашу команду резервного копирования.источник