Подтвердить что ты не робот

Как вставить дату внутри имени файла с помощью logrotate

Мне нужно установить logrotate для вращения файлов журналов из приложения, запущенного на сервере. Мне нужна дата внутри имени файла.

Я устанавливаю dateext, а также dateformat, чтобы добавить a - в дату. Имена файла результата: whatever.csv_2012-03-03

Я хотел бы, чтобы временная метка была частью имени файла, сохраняющего безопасное расширение; Whatever_2012-03-03.csv.

4b9b3361

Ответ 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 намеренно пуст.