¿Cómo configuro logrotate para no eliminar mis archivos de registro después de la rotación?

24

Hay una manera de hacer esto?

Guilherme
fuente
¿Puedes decirnos por qué quieres hacer esto? Tal vez hay otras opciones ...
Chmeee
En mi caso, sería bueno descargar grandes registros antiguos en el almacenamiento externo y mantener nuevos en el servidor. Entonces necesito un divisor de registro simple.
sekrett
2
Mi caso de uso para esta configuración es: quiero mantener mi registro para siempre, ya que puede que lo necesite para fines de auditoría, PERO quiero que se roten mis archivos para que el registro actual no crezca demasiado y los rotados puedan ser comprimido: de lo contrario, la copia de seguridad de los registros en un servidor externo es demasiado difícil y la inspección de los archivos también es demasiado lenta.
Rudolf Mayer

Respuestas:

32

En su logrotate.conf (o el archivo logrotate.d equitativo), cambie la línea que dice "

rotate 10

(su número puede ser diferente) a un número mayor. Eso le dirá que mantenga tantos días de registros. Puedes hacerlo 36500, que te duraría 100 años.

jedberg
fuente
66
Cuando hice esto en una frambuesa pi (raspian), se congeló todas las noches. Una vez que pude ejecutar procesos y abrir archivos usando la consola serie y descubrí que intenta cambiar el nombre de 100000 de los archivos que no existen. Así que ten cuidado con eso. Lamentablemente no tengo información más detallada
Christian
0

He estado buscando esto para hacer la rotación de las copias de seguridad de mi base de datos diariamente, semanalmente y mensualmente; así que giro el archivo diariamente pero mantengo el archivo para hacer la rotación semanal, y lo mismo para la rotación anual.

Utiliza la opción de copiar. Del manual:

copy

copiar Haga una copia del archivo de registro, pero no cambie el original en absoluto. Esta opción se puede usar, por ejemplo, para hacer una instantánea del archivo de registro actual, o cuando alguna otra utilidad necesita truncar o analizar el archivo. Cuando se utiliza esta opción, la opción de creación no tendrá ningún efecto, ya que el archivo de registro anterior permanece en su lugar.

Feida Kila
fuente
Esto es lo mismo que el comentario a continuación ( serverfault.com/a/50186/275485 ), y no proporciona una respuesta correcta; copiar no significa que sus archivos antiguos que se rotaron no se eliminan ..
Rudolf Mayer
-3

Dejando a un lado el punto de que la rotación implica la eliminación ... ;-)

Parece que simplemente puede agregar la palabra 'copiar' al archivo apropiado (probablemente en /etc/logrotate.d). Por ejemplo, un script de apache2 logrotate se vería así:

/var/log/apache2/*.log {
    semanal
    missingok
    rotar 52
    comprimir
    delaycompress
    notifempty
    dupdo
    guiones compartidos
    postrotar
        if [-f "`. / etc / apache2 / envvars; echo $ {APACHE_PID_FILE: - / var / run / apache2.pid} `"]; luego
            /etc/init.d/apache2 reload> / dev / null
        fi
    escritura final
}

Pruebe eso y vea si hace lo que quiere.

Justin Ellison
fuente
2
Asumiendo que él quiere que los archivos sean "rotados" pero que nunca elimine los archivos antiguos, esto no lo hará. Agregar "copia" a la sección de configuración significa que el archivo original seguirá creciendo para siempre, pero eventualmente se eliminarán las copias más antiguas del archivo. Según tengo entendido, "copiar" es principalmente útil cuando espera que algún otro proceso trunque / elimine el original.
Insyte
Exactamente, que es lo que pensé que estaba pidiendo. Pidió específicamente una forma de "no eliminar mis archivos de registro", no una forma de "no eliminar archivos antiguos de mis archivos de registro". Creo que debería ser más cuidadoso de las preguntas que implican sólo un tema y hay cuerpo ;-)
Justin Ellison
2
La frase "después de la rotación" proporciona una pista.
Pausado hasta nuevo aviso.
44
"Dejando a un lado el punto de que la rotación implica la eliminación ..." No necesariamente. La rotación puede implicar simplemente comprimir los registros antiguos y mantenerlos, que es lo que parece que la pregunta pide.
reflexiv