2016-04-05 2 views
1

Использование cron для резервного копирования mysql в папку каждый день. Поэтому попытался запланировать cron с кодом ниже на сервере linux. related postCron filename с датой пропускает Y_m_d не актуальную дату

0 0 * * * <username> mysqldump -u<mysql username> -p<mysql password> <database name> > /home/<username>/Db_BackUp/expense_$(date +"\℅Y_\℅m_\℅d").sql 

выше хрон работает, но сгенерированное имя файла, как

expense_\.Y_\.m_\.d.sql 

мне нужно хрон, чтобы создать имя файла как expense_2016_04_05.sql

, как сделать это в хрон?

related answer from SO Post

дополнение информация о хронах рестарте SO Post

ответ

1

Поскольку хроны не оболочка, она не выполняет элементы в ($) обертки в хронах линии в пути оболочка делает. Однако некоторая crons как Vixie Cron позволит определить переменные перед вашей командой:

YMD=/bin/date +%Y_%m_%d 
0 0 * * * /path/to/command > /home/username/Db_BackUp/expense_$($YMD).sql 

Если это не сработает, то, возможно, придется написать вспомогательный сценарий и запустить его через хроны вместо этого. Например:

mysqldump_helper.sh

#!/bin/bash 
YMD=`/bin/date +%Y_%m_%d` 
/path/to/command > /home/username/Db_BackUp/expense_$YMD.sql 

кронтаб

* * * * * /path/to/mysqldump_helper.sh 
+0

, но я использую '' crontab' из RHEL7'. вы думаете, что это сработает? –

+0

Вам просто нужно попробовать. RHEL7 может использовать «cronie», что может позволить одно и то же присваивание переменных, которое показывает первое решение выше. В любом случае, однако, второе решение будет работать с любой программой cron. –

+0

Спасибо! @David White, так или иначе, я написал сценарий оболочки и отлично работал –