Alguien me preguntó 'cuánto tiempo deberíamos guardar registros para nuestra aplicación', y mi respuesta fue 'hasta que el disco esté lleno' ya que no hay razón para tirarlos aparte de quedarse sin espacio.
Sin embargo, logrotate estándar quiere que especifiquemos un período específico + número de rotaciones. ¿Hay algo similar que nos permita decir "rotar diariamente y mantener la mayor cantidad de historial que desee hasta que haya solo un 5% de espacio libre"?
La plataforma es Redhat Linux.
Respuestas:
Quizás pueda usar las directivas de primera estación o última estación para llamar a un script de shell que prueba el espacio libre en el disco y luego ejecutar una eliminación en los archivos más antiguos.
Actualizar:
Aquí hay una publicación de Stackoverflow sobre el tipo de script que puede ejecutar:
/programming/7523059/remove-oldest-file-in-repository
fuente
logrotate en sí no tiene tal opción. Puede agregar un script cron que encuentre el registro más antiguo para eliminar cada vez que el espacio libre esté por debajo de sus criterios. También puedes hacer alguna otra validación. Sin embargo, no es una buena idea tener el disco demasiado lleno todo el tiempo porque el sistema no podrá crear archivos temporales grandes y podría causar fallas en la aplicación.
fuente
Solo quería señalar que hay casos en los que no desea que sus registros llenen todo el espacio disponible en el disco. He tratado con varios hosts con directorios / var delgados aprovisionados y fue crucial mantener los registros a un cierto tamaño. Usamos un trabajo de compinches junto con logrorate para mantener el tamaño bajo. Algo similar podría usarse en su entorno, aunque un servidor de registro central como splunk o syslog-ng probablemente sería una mejor opción.
fuente
Como sugirió @cjc, puede usar la primera estación Ver este ejemplo:
En este ejemplo, eliminó los archivos de más de 1 GB de la partición / mnt / user si el espacio utilizado es superior al 50% .
fuente