Неправильно работает ограничение logrotate по размеру

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модератор: SLEDopit

vkapas
Сообщения: 190
ОС: Ubuntu 14.04, 16.04

Неправильно работает ограничение logrotate по размеру

Сообщение vkapas »

На Ubuntu Server 14.04 есть скрипт rsync, запускаемый ежедневно по крону, который пишет лог в /var/log/rsync/yandex.disk.log (--log-file=/var/log/rsync/yandex.disk.log).

Есть файл /etc/logrotate.d/rsync с содержимым

Код: Выделить всё

/var/log/rsync/yandex.disk.log {
       size 1m
       rotate 30
       delaycompress
       compress
       notifempty
       missingok
}

который, по идее, должен паковать лог yandex.disk.log в архив по достижении размера в 1Мб.

Одна сейчас директория с логами выглядит вот так:

Код: Выделить всё

ls -lh /var/log/rsync/
итого 47M
-rw-r--r-- 1 root root  44M апр.  12 04:35 yandex.disk.log
-rw-r--r-- 1 root root 2,6M янв.  27 01:23 yandex.disk.log.1
-rw-r--r-- 1 root root 9,1K янв.  22 21:37 yandex.disk.log.2.gz
-rw-r--r-- 1 root root  93K янв.  21 21:02 yandex.disk.log.3.gz
-rw-r--r-- 1 root root 194K янв.  18 23:26 yandex.disk.log.4.gz

Есть рядом другой лог с davfs2, правила такие же, ситуация та же — архивы не создаются, несколько месяцев всё копится в 1 файл.

При этом создавал на этом же сервере другие logrotate-правила с ежедневной ротацией логов, — там всё работает как часы.


Как правильно настроить ротацию по размеру, и где я допустил ошибку?
Спасибо сказали:

Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: Неправильно работает ограничение logrotate по размеру

Сообщение yars »

Этот конфиг задает 30-разовый цикл ротации, но у вас неверно указан размер получаемого архива: попробуйте заменить m на M и задать явно периодичность. В помощь man logrotate.
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:

vkapas
Сообщения: 190
ОС: Ubuntu 14.04, 16.04

Re: Неправильно работает ограничение logrotate по размеру

Сообщение vkapas »

Спасибо, попробую. Только в man по этому поводу написано, что нет разницы между m и M
size size
Log files are rotated only if they grow bigger then size bytes. If size is followed by k, the size is assumed to be in kilobytes. If the M is used, the size is in megabytes, and if G is used,
the size is in gigabytes. So size 100, size 100k, size 100M and size 100G are all valid.

UPD. Хотя нет, явно не написано, это уже я додумал. Тогда странно, конечно, что килобайты в нижнем регистре, а мегабайты с гигабайтами — в верхнем.
UPD2. M (заглавная) сработала.

И не совсем понял, что имеете ввиду под «явно задать периодичность». Опция rotate 30 это и делает, разве нет? Я при этих настройках рассчитывал на хранение 30-и 1-мегабайтовых архивов.
Спасибо сказали:

Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: Неправильно работает ограничение logrotate по размеру

Сообщение yars »

Я имел в виду ежедневную/еженедельную/ежемесячную периодичность и, похоже, вас недопонял. Если вам нужно именно создание 30 шт. архивов каждый по мегабайту размером, то все правильно. А разница в регистре в обозначении килобайтов и мегабайтов появляется от применения международной системы единиц, в которой как раз кратные 1000 и обозначаются маленькой буквой (кило, к, 10^3), а кратные 1000000 (10^6, мега, М) -- заглавной.
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:

Аватара пользователя
stannum
Сообщения: 322
Статус: Свободолюбитель
ОС: Debian GNU/Linux unstable

Re: Неправильно работает ограничение logrotate по размеру

Сообщение stannum »

logrotate не является демоном, который непрерывно смотрит на размеры файлов, указанные в конфигах. Скрипт logrotate выполняется один раз в сутки через /etc/cron.daily, а настройки в конфиге являются сигналами к тому, что нужно выполнить ротацию, если условие ротации удовлетворятся, например, размер файла превысил указанное в конфиге значение.
Поэтому не стоит расчитывать, что ротация будет происходить как только файл достигнет размера в 1М, поскольку файл может превысить значение многократно между задачами cron
Спасибо сказали: