Tmpfslog.sh: Alte Dateien werden immer wieder hergestelt

Hallo,
ich benutze das fertige Image mit vorinstalliertem Homegear und Openhab. Das dort eingesetzte Script tmpfslog.sh lagert das Log-Verzeichnis in eine Ramdisk aus. Vor einem Reboot wird der Inhalt von /var/log auf die SD-Karte gesichert und nach dem Reboot wiederhergestellt.

Problem dabei: Während des laufenden Betriebes werden öfter Dateien aus dem temporären /var/log-Verzeichnis gelöscht. So habe ich beispielsweise den in homegear integrierten Jetty-Webserver so konfiguriert, dass er seine Logs nach 2 Tagen löscht. Dabei entsteht folgendes Beispiel-Szenario:

Neustart am 20.06.16:
/var/log/openhab/2016_06_18.request.log, /var/log/openhab/2016_06_19.request.log, /var/log/openhab/2016_06_20.request.log werden nach /var/log.save verschoben.

Am 24.06.16 befinden sich nur noch die Dateien /var/log/openhab/2016_06_22.request.log, /var/log/openhab/2016_06_23.request.log, /var/log/openhab/2016_06_24.request.log in /var/log, die alten Logs wurden gelöscht. Starte ich nun den Rpi neu, werden diese drei Dateien auch nach /var/log.save kopiert - zusätzlich zu den alten Dateien, die sich schon in /var/log.save befinden. Nach dem Reboot befinden sich nun diese Dateien in /var/log:

/var/log/openhab/2016_06_18.request.log
/var/log/openhab/2016_06_19.request.log
/var/log/openhab/2016_06_20.request.log
/var/log/openhab/2016_06_22.request.log
/var/log/openhab/2016_06_23.request.log
/var/log/openhab/2016_06_24.request.log

Müsste das Script tmpfslog.sh nicht das Verzeichnis /var/log.save erstmal leeren, bevor es den Inhalt von /var/log sichert?

Hallo,

hab das Script /etc/init.d/tmpfslog.sh entsprechend abgeändert:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          tmpfslog
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# X-Start-Before:    $syslog
# X-Stop-After:      $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop logfile saving
### END INIT INFO
#
# varlog        This init.d script is used to start logfile saving and restore.
#

varlogSave=/var/log.save/
[ ! -d $varlogSave ] && mkdir -p $varlogSave

PATH=/sbin:/usr/sbin:/bin:/usr/bin

case $1 in
    start)
        echo "*** Starting tmpfs file restore: varlog."
        if [ -z "$(grep /var/log /proc/mounts)" ]; then
            echo "*** mounting /var/log"
            cp -Rpu /var/log/* $varlogSave
            rm -f /var/log/*
            varlogsize=$(grep /var/log /etc/fstab|awk {'print $4'}|cut -d"=" -f2)
            [ -z "$varlogsize" ] && varlogsize="100M"
            mount -t tmpfs tmpfs /var/log -o defaults,size=$varlogsize
            chmod 755 /var/log
        fi
        cp -Rpu ${varlogSave}* /var/log/
    ;;
    stop)
        echo "*** Stopping tmpfs file saving: varlog."
        rm -f ${varlogSave}*
        cp -Rpu /var/log/* $varlogSave >/dev/null 2>&1
        sync
        umount -f /var/log/
    ;;
  reload)
    echo "*** Stopping tmpfs file saving: varlog."
    	rm -f ${varlogSave}*
        cp -Rpu /var/log/* $varlogSave >/dev/null 2>&1
        sync
  ;;
    *)
        echo "Usage: $0 {start|stop}"
    ;;
esac

exit 0

Viele Grüße

Sathya

Müsste das nicht rm -rf ${varlogSave}* heißen? Sonst bleibt das Problem für die Unterverzeichnisse des /var/log-Ordners bestehen.

Hallo @gowif,

Ja, das müsste es. Ist korrigiert. Danke dir!

Viele Grüße

Sathya