2013-05-22 2 views
1

Я запускаю cron каждые 6 часов для резервного копирования моей базы данных. Я хочу, чтобы имя файла содержит время даты & он был создан в следующем формате:Формат даты в UNIX crontab

mysqlbackup_22/5/2013_15:45.sql.gz 

Это команда я бегу:

date=`date -d`; mysqldump -uusername -ppassword dbname | gzip > /path/to/dir/mysqlbackup_$date.sql.gz 

Что мне нужно изменить, чтобы date -d?

+1

Используйте это: 'date '+% Y_% H:% M" ' – fedorqui

+0

Должна ли дата = \' date +% Y_% H:% M \ '? – bikey77

+0

Да, но с кавычками. Также 'date = $ (date" +% Y_% H:% M ")'. Учитывайте, что точка с запятой не очень дружественна UNIX для имен. – fedorqui

ответ

1

Оператор + на date дает вам возможность указать дату любым способом/форматом, если существует переменная для того, что вы хотите. В этом случае из man date:

%d  day of month (e.g, 01) 
    ... 
    %H  hour (00..23) 
    ... 
    %m  month (01..12) 
    %M  minute (00..59) 
    ... 
    %Y  year 

Итак, вы бы:

date +"%d/%m/%Y_%H:%M" 

Или, применяя к вашей команде:

date=`date +"%d-%m-%Y_%H:%M"`; mysqldump -uusername -ppassword dbname | gzip > /path/to/dir/mysqlbackup_$date.sql.gz 

Следует заметить, что я изменил слеш (/) в именах файлов для тире (-), поскольку вы не можете иметь косые черты в именах файлов unix/linux.

+0

Использование/в имени прекрасно, пока все эти каталоги уже существуют. Вы можете создать их, запустив '$ (mkdir -p $ (dirname $ date))' – nos

+0

Я считаю, что косые черты были частью имени файла, а не части пути. Только OP может подтвердить .....: -/ – msb

3

Если вы используете формат даты, такой как дата + "% d-% m-% Y_% H:% M" в вашем кронтабе, вам может понадобиться избежать символа% с обратным слэшем, например: date + "\ % d - \% м - \% Y _ \% Н: \% м».

Многие клоны обрабатывают% специально, заменяя их символом новой строки и отправляя следующий текст в виде команды stdin перед командой, см. Man 5 crontab для получения дополнительной информации.

+0

Спасибо! Я пытался многое, но не заметил этого. Я перешел от более старой версии CentOS к более новой версии, и я предполагаю, что для более новой версии требуются escape-последовательности на символах%. Благодаря! –

Смежные вопросы