#!/bin/sh # .noarch dateien werden geleert und nicht archiviert # .log dateien werden rotiert und die rotierten dateien archiviert # .dontrotate dateien werden nicht angefasst date=`date +"%Y-%m-%d_%H-%M"` # in tmp verzeichnis springen # falls spätere verzeichniswechsel scheitern werden nicht versehentlich Daten gelöscht cd /tmp logdir=/syslog oldlogdir=/syslog/rotate mkdir -p $logdir mkdir -p $oldlogdir ###################################################################################################### # nicht zu archivierende logs leeren ###################################################################################################### echo "leere logs die nicht archiviert werden" cd $logdir for I in `ls *.noarch`; do :> $I; done ###################################################################################################### ## logs packen, archivieren und ausgangsdateien löschen ###################################################################################################### echo "logs rotieren" cd $logdir for I in `ls *.log`; do cp $I $I.rotate; :>$I; done tar -cvzf $date.tar.gz *.log.rotate mv $date.tar.gz $oldlogdir rm *.rotate ###################################################################################################### ## archive älter als 30 Tage löschen ###################################################################################################### echo "alte logs löschen" cd $oldlogdir find . -mtime +30 -exec rm {} \; ###################################################################################################### # rotierte system logs löschen ###################################################################################################### echo "rotierte system logs löschen" for I in `find /var/log/ -name "*.gz"`; do rm $I; done