Как добавить уникальный идентификатор к имени файла в cron job?

8

Мой cronjob выглядит так:

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

Как я могу сделать имя файла уникальным каждый раз, когда cronjob пишет mysql_daily.dump?

дружище
источник
2
Пожалуйста, найдите время, чтобы правильно написать название. Это делает поиск намного проще для всех.
Микель
1
Вы написали "Как добавить уникальный идентификатор в файл nime в задании cron".
Микель
Почему вы не используете automysqlbackup?
Stoeff

Ответы:

14

Для bash, может быть:

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

Лично я обычно ставлю только простые команды в моем crontab. Я поместил бы это в маленький сценарий и использовал сценарий в crontab. Это дает преимущество, заключающееся в том, что не требуется %экранирование символов (обычная ошибка crontab).

обновление сделало это ISO 8601 за комментарий @johan

хрон

шухер
источник
1
Вы можете немного изменить синтаксис, и это будет идеальный формат даты ISO 8601. [ГГГГ] [ММ] [ДД] T [чч] [мм] [сс] Z, поскольку вы используете дату -u для UTC, вы можете добавить Z после даты;). en.wikipedia.org/wiki/…
Йохан,
3

Общая практика для этого - использовать временную метку, date +%sчтобы генерировать что-то полезное для маркировки файла (в качестве примера я использовал секунды, но вы можете использовать любой формат даты). На самом деле нет необходимости иметь действительно уникальное имя файла, если имя файла не конфликтует.

5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily_`date +\%s`.dump
Калеб
источник
1

Пытаться

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

который поместит текущую дату в формате ГГГГММДД в ​​имя файла.

Жиль "ТАК - перестань быть злым"
источник