Back In Time: Wenn "Fertig" droht eventuell Datenverlust

Wer „Back In Time“ als Datensicherungswerkzeug nutzt, sollte wissen, dass es sich dabei lediglich um eine GUI (Benutzeroberfläche) für das Terminal - Tool rsync handelt. Linux-Neulinge haben mir von unvollständigen oder fehlerhaften Backups berichtet, nachdem das Programm die Datensicherung angeblich abgeschlossen hatte.

Das ist ein bekanntes und durchaus gefährliches Verhalten, das man anhand der trügerischen Fertig Meldung , so richtig auf die Schnauze fallen kann, wenn man jetzt die Festplatte einfach mal so eben ausstöpselt.

Der Grund dafür liegt im sogenannten Schreibcache (Write Cache) des Linux-Betriebssystems.

Warum rsync weiterläuft, obwohl Back In Time "Fertig" meldet

Wenn rsync im Hintergrund die Daten z.B. auf deine USB-SSD kopiert, schreibt das Betriebssystem diese nicht sofort auf das Laufwerk. Um das System reaktionsschnell zu halten, werden die Daten zunächst in den Arbeitsspeicher (RAM) geladen.

Sobald rsync alle Daten in den Arbeitsspeicher geschaufelt hat, meldet der Prozess "habe fertig" . Back In Time registriert das und blendet das im oberen Bild sichtbare "Fertig" ein. Tatsächlich ist der Kernel iim Hintergrund aber noch massiv damit beschäftigt, diese zwischengespeicherten Daten physisch auf die SSD zu schreiben. Dies benötigt seine Zeit, auch bei der schnellsten Nvme - SSD.  Wer in dieser Zeit das externe Speichermedium vom System trennt und nicht wartet, bis alle Prozesse abgerabeitet sind, gehen all die Daten verloren welche sich noch im RAM befanden.

Nun gut. Doch woher soll man wissen ob rsync mit seiner Arbeit fertig ist, ohne zuvor im Terminal so dinger wie  top oder den xfce4-taskmanager und ähnliches bemühen zu müssen.

Um dieses Problem zu lösen, habe ich ein Back In Time Start - Skript (auf zenity basis) zusammengeklöppelt....

.... welches Back In Time startet und gleichzeitig auch den rsync prozess zuverlässig im Hintergrund überwacht. Dazu noch den Cache manuell leert und dem unbedarften Benutzer zusätzlich noch eine visuelle und verlässliche Habe Fertig Bestätigung ausgibt.

Weiter unten findet ihr den Source - Code zum downloaden oder gleich mittels copy direkt in euren lieblingseditor hinein pasten.

Ich übernehme KEINE HAFTUNG oder sonstiges falls auf eurem System etwas in die Binsen gehen sollte. 

Quelltext : backintime_start.sh

#!/bin/bash

# 1. Back In Time GUI im Hintergrund starten
backintime-qt &
BIT_PID=$!

# 2. Warten, bis rsync anspringt
while true; do
    if pgrep -x rsync > /dev/null; then
        break
    fi
    
    # Falls du Back In Time schließt, ohne ein Backup zu starten, beendet sich das Skript sauber
    if ! kill -0 $BIT_PID 2>/dev/null; then
        exit 0
    fi
    sleep 2
done

# 3. Rsync läuft: Zeige pulsierenden Ladebalken mit Textwarnung in Großbuchstaben
(
    while pgrep -x rsync > /dev/null; do
        # Pango-Tags funktionieren hier nicht, daher nutzen wir GROSSBUCHSTABEN und Sterne
        echo "# *** ACHTUNG: Rsync ist aktiv! Festplatte NICHT vom PC trennen! ***"
        sleep 2
    done
    
    # 4. Sobald rsync fertig ist, zwingend den Schreibcache der SSD leeren
    echo "# RSYNC IST DURCH! Cache wird auf die SSD geschrieben... Bitte warten!"
    sync
    
    # 100% schließt das Zenity-Fenster automatisch
    echo "100"
) | zenity --progress --title="Backup Überwachung" --text="Initialisiere Backup..." --pulsate --auto-close --width=600 --no-cancel

# 5. Abschlussmeldung, wenn wirklich alles auf der Platte liegt
zenity --info --title="Backup Komplett" --text="<span size=\"large\" weight=\"bold\">Alle Aufgaben sind erledigt!</span>\n\nDas Backup ist abgeschlossen und der Datencache wurde vollständig auf die SSD geschrieben.\n\nDu kannst den Rechner jetzt sicher ausschalten oder das Laufwerk abziehen." --width=450

Nicht vergessen !!! Das skript nach dem speichern ausführbar machen : 

chmod +x backintime_start.sh

Das fertige Skript zum downloaden backintime_start.sh

Der übliche Weg !!

Ohne dieses Skript !!! Nachdem Back In Time "Fertig" anzeigt, öffnet man zuerst einen Dateimanager oder geht über das Panel auf das Symbol der betreffenden USB - Festplatte und klickt dort auf Aushängen oder Laufwerk sicher entfernen und liest aufmerksam die System Nachricht, welche auf dem Desktop in grossen Lettern aufpoppt.

Anstatt einfach blindlinks das USB-Kabel abzuziehen.



Der Linux Kernel blockiert diesen trennen Vorgang automatisch so lange, bis der Schreibcache zu 100 % auf die Festplatte geschrieben wurde. Die Benachrichtigung, dass das Laufwerk entfernt werden kann, erscheint erst, wenn rsync seine Arbeit abgeschlossen hat.

_