Мой cronjob выглядит так:
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.dump
Как я могу сделать имя файла уникальным каждый раз, когда cronjob пишет mysql_daily.dump?
Мой cronjob выглядит так:
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.dump
Как я могу сделать имя файла уникальным каждый раз, когда cronjob пишет mysql_daily.dump?
Ответы:
Для bash, может быть:
... > /srv/backup/mysql_daily-$(date -u +\%Y\%m\%dT\%H\%M\%S)Z.${RANDOM}.dump
Лично я обычно ставлю только простые команды в моем crontab
. Я поместил бы это в маленький сценарий и использовал сценарий в crontab
. Это дает преимущество, заключающееся в том, что не требуется %
экранирование символов (обычная ошибка crontab).
обновление сделало это ISO 8601 за комментарий @johan
хрон
Общая практика для этого - использовать временную метку, date +%s
чтобы генерировать что-то полезное для маркировки файла (в качестве примера я использовал секунды, но вы можете использовать любой формат даты). На самом деле нет необходимости иметь действительно уникальное имя файла, если имя файла не конфликтует.
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily_`date +\%s`.dump
Пытаться
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.$(/bin/date +\%Y\%m\%d).dump
который поместит текущую дату в формате ГГГГММДД в имя файла.