Есть способ сделать это?
В вашем logrotate.conf (или эквивалентном файле logrotate.d) измените строку с надписью "
rotate 10
(ваш номер может быть другим) на большее число. Это скажет ему хранить журналы столько дней. Вы можете сделать 36500, чего хватит на 100 лет.
Я искал это, чтобы производить ротацию резервных копий моей базы данных ежедневно, еженедельно и ежемесячно; поэтому я чередую файл ежедневно, но сохраняю файл для еженедельной ротации, и то же самое для ежегодной ротации.
Воспользуйтесь опцией копирования. Из руководства:
copy
копировать Сделайте копию файла журнала, но ни в коем случае не меняйте оригинал. Эту опцию можно использовать, например, для создания моментального снимка текущего файла журнала или когда какой-либо другой утилите необходимо обрезать или проанализировать файл. Когда используется этот параметр, параметр создания не действует, поскольку старый файл журнала остается на месте.
Не говоря уже о том, что вращение подразумевает удаление ... ;-)
Похоже, вы можете просто добавить слово «копировать» в соответствующий файл (вероятно, в /etc/logrotate.d). Например, сценарий apache2 logrotate будет выглядеть так:
/var/log/apache2/*.log { weekly missingok rotate 52 compress delaycompress notifempty copy sharedscripts postrotate if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then /etc/init.d/apache2 reload > /dev/null fi endscript }
Попробуйте это и посмотрите, сделает ли он то, что вы хотите.