postgres_db_dump_20091016.gz.1.1.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021
postgres_db_dump_20091017.gz.1.1.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021
postgres_db_dump_20091018.gz.1.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021
postgres_db_dump_20091019.gz.1.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021
postgres_db_dump_20091020.gz.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021
postgres_db_dump_20091021.gz.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021
Это пример вывода (имена файлов), когда я принудительно запускаю logrotate. Как-то не распознает старые файлы.
Пример вывода отладки:
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /var/backup/postgres/postgres_db_dump_20091019.gz.1.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021 to /var/backup/postgres/postgres_db_dump_20091019.gz.1.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021
rotating log /var/backup/postgres/postgres_db_dump_20091020.gz.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021, log->rotateCount is 4
dateext suffix '-20091021'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /var/backup/postgres/postgres_db_dump_20091020.gz.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021 to /var/backup/postgres/postgres_db_dump_20091020.gz.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021
rotating log /var/backup/postgres/postgres_db_dump_20091021.gz.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021, log->rotateCount is 4
dateext suffix '-20091021'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /var/backup/postgres/postgres_db_dump_20091021.gz.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021 to /var/backup/postgres/postgres_db_dump_20091021.gz.1.1.1.1.1.1.1.1.1-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021-20091021
И файл конфигурации:
daily
rotate 4
create 666 root root
maxage 30
dateext
compress
missingok
notifempty
noolddir
# system-specific logs may be also be configured here.
/var/log/* {
size=10M
postrotate
/usr/bin/killall -HUP syslog-ng
endscript
}
/var/backup/postgres/postgres* {
nocompress
nocreate
}
/var/log/* {
size=10M
postrotate
/usr/bin/killall -HUP syslog-ng
endscript
}
В /var/log/*
это твоя проблема. Это соответствует всем файлам в / var / log, включая уже сжатые файлы. Вам нужно будет уточнить этот шаблон соответствия глобуса, чтобы он соответствовал только несжатым файлам.
На странице руководства для logrotate говорится:
Please use wildcards with caution. If you specify *, logrotate will rotate all files,
including previously rotated ones. A way around this is to use the olddir directive or
a more exact wildcard (such as *.log).
Остальные ответы здесь верны, вам нужно изменить, какие файлы соответствуют вашей конфигурации. Та же проблема может возникнуть с файлами в / var / log, но комбинация сжатия и ограничения размера 10M не позволяет этому случиться.
Есть еще одна проблема, с которой вы столкнетесь, и я хотел бы указать на нее. Logrotate основан на использовании согласованного имени файла журнала для ротации старых файлов. Когда он обрабатывает файл журнала, он использует его в качестве базового имени, чтобы найти все его старые версии путем поиска определенного расширения, которое было бы у старых версий. Это то, что ищет глобус в вашем журнале отладки. Поскольку ваше имя файла меняется каждый раз из-за даты, он никогда не вернется и не посмотрит на те старые, потому что имя файла, с которым он работает сейчас, не совпадает.
Вы можете сделать две вещи. Первый вариант - настроить postgres или любой другой сценарий, создающий этот файл дампа, чтобы не использовать дату. Сохранение единообразия имени файла позволит logrotate сделать это и удалить старые. В качестве альтернативы вы можете полностью пропустить logrotate и поместить что-то вроде этого в свой crontab:
0 4 * * * find /var/backup/postgres/postgres_db_dump_*.gz -mtime +10 -delete
Это будет запускаться каждую ночь и удалять файлы дампа старше 10 дней.