Как вставить дату внутри имени файла с помощью logrotate
Мне нужно установить logrotate для вращения файлов журналов из приложения, запущенного на сервере.
Мне нужна дата внутри имени файла.
Я устанавливаю dateext, а также dateformat, чтобы добавить a - в дату.
Имена файла результата: whatever.csv_2012-03-03
Я хотел бы, чтобы временная метка была частью имени файла, сохраняющего безопасное расширение; Whatever_2012-03-03.csv.
Ответы
Ответ 1
Чтобы вставить дату в имени файла (а не как расширение) файла под Linux при вращении файла, вы должны правильно использовать:
# Daily rotation
daily
# We keep original file live
copytruncate
# Rotation is 1 so we have always .1 as extension
rotate 1
# If file is missing keep working
missingok
sharedscripts
postrotate
day=$(date +%Y-%m-%d)
mv blabla.csv.1 /var/www/gamelogs/dir/blabla$day.csv
endscript
}
Это просто и прекрасно работает.
Ответ 2
Вы должны удержать расширение отдельно, например. whatever.2012-03-03.csv
, со следующей конфигурацией:
whatever.csv {
dateext
dateformat .%Y-%m-%d
extension .csv
...
}
Обратите внимание, что dateext
намеренно пуст.