/var/log in TMPFS

Um die Schreibvorgänge auf meiner SSD etwas zu verringern wollte ich gerne das die Logfiles in ein tmpfs geschrieben werden und ab und zu auf die Platte gesichert werden.
Dazu habe ich in der /etc/fstab ein tmpfs auf /var/log gemountet

/etc/fstab
tmpfs   /var/log   tmpfs   defaults,noatime,mode=0755   0 0

Click to display ⇲

Click to hide ⇱

In einem LXC-Container funktioniert das mit der /etc/fstab nicht, deshalb trage ich folgendes in die Container Config ein

lxc.mount.entry: tmpfs var/log tmpfs defaults,size=100M,mode=0755 0 0

Beim Herunterfahren/Reboot des Rechners wird das Logverzeichnis /var/log in ein Verzeichnis auf der Festplatte gesichert.
Beim Boot wird dann das gesicherte Verzeichnis wieder nach /var/log zurückgeschrieben.

/usr/local/bin/save_logs.sh
#!/bin/bash
LOG_PATH="/var/log"
BACKUP_PATH="/mnt/log_backup"
 
rsync -au --delete $LOG_PATH/ $BACKUP_PATH
 
# Erfolg oder Fehler melden in eine separate Log-Datei
if [ $? -eq 0 ]; then
    echo "$(date): Backup zu $BACKUP_PATH erfolgreich." >> $BACKUP_PATH/rsync_activity.log
else
    echo "$(date): Backup zu $BACKUP_PATH fehlgeschlagen!" >> $BACKUP_PATH/rsync_activity.log
fi
/usr/local/bin/restore_logs.sh
#!/bin/bash
LOG_PATH="/var/log"
BACKUP_PATH="/mnt/log_backup"
 
rsync -au --delete $BACKUP_PATH $LOGPATH/
 
# Erfolg oder Misserfolg melden
if [ $? -eq 0 ]; then
    echo "$(date): Wiederherstellung nach $LOG_PATH erfolgreich." >> $LOG_PATH/rsync_activity.log
else
    echo "$(date): Wiederherstellung nach $LOG_PATH fehlgeschlagen!" >> $LOG_PATH/rsync_activity.log
fi
/etc/systemd/system/log_save.service
[Unit]
Description=Save logs from RAM-Disk to HDD
DefaultDependencies=no
Before=shutdown.target
 
[Service]
Type=oneshot
ExecStart=/usr/local/bin/save_logs.sh
RemainAfterExit=true
 
[Install]
WantedBy=halt.target reboot.target shutdown.target
/etc/systemd/system/log_restore.service
[Unit]
Description=Restore logs to RAM-Disk from HDD
DefaultDependencies=no
After=local-fs.target
 
[Service]
Type=oneshot
ExecStart=/usr/local/bin/restore_logs.sh
RemainAfterExit=true
 
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable log_save.service
systemctl enable log_restore.service

Und in der Cron Config vom eis einen cronjob angelegt, damit die Logs immer wieder mal auf die HDD/SSD geschrieben werden.

CRON_5_NAME='Sync Logs'
CRON_5_ACTIVE='yes'
CRON_5_TIMES='3 18 * * *'
CRON_5_USER='root'
CRON_5_COMMAND='/usr/local/bin/save_logs.sh'