logrotate + 7zip — update
По умолчанию в FreeBSD утилита logrotate и 7zip не установлены, установить их можно из пакетов:
pkg install logrotate 7-zip
Настраивается logrotate через файл /usr/local/etc/logrotate.conf
Пример настроек:
"/tmp/ngx_access.log"
"/tmp/ngx_error.log"
{
compresscmd /usr/local/bin/7z
compressoptions a -an -mx=9 -md=128m -ms=on -t7z -sdel
compressext .7z
su root www
olddir /var/log/archive/
createolddir
nodelaycompress
notifempty
missingok
noolddir
postrotate
/bin/kill -s USR1 `cat /var/run/nginx.pid`
mv /tmp/*.log*.7z /var/log/archive/
endscript
prerotate
endscript
rotate 100
size 0
start 0
sharedscripts
}
Хотя пример выше и работает, в logrotate есть масса подводных камней:
Перемещение логов работает только в пределах одной точки монтирования.
Сжатие работает некорректно с некоторыми версиями 7z.
Эти и другие моменты привели нас к тому, что устанавливать
дополнительный софт (logrotate) не всегда нужно.
Вместо этого задачу можно решить
простым скриптом