Täglich Shaarli

Alle Links eines Tag auf einer Seite.

July 1, 2023

Backup mit externer Festplatte einrichten

Mein Homeserver soll ein Backup auf eine externe Festplatte erhalten. Eine Festplatte liegt noch herum und dazu eine schaltbare Steckdose. Wird die Steckdose eingeschaltet und die Festplatte gemountet, soll das Backup-Script automatisch gestartet werden. Nach Backup-Fertigstellung muss die Festplatte wieder abgemeldet und ausgeschaltet werden. Das geht mit einer manuell schaltbaren Steckdose oder vollautomatisch, wenn man eine Hue-Bridge mit passender Steckdose hat.

Das Festplattenbackup

Als erstes muss die Festplatte nach dem Anstecken gemountet werden. Für den Ubuntu-Desktop funktioniert so etwas Out-of-the-Box aber ohne Desktop und angemeldeten Benutzer muss man etwas tun. Damit man sich nicht lange mit Udev-Rules herumärgern muss, gibt es das sehr komfortable Tool udev-media-automount das jedes Laufwerk, das keinen Eintrag in der fstab vorzuweisen hat, kurzerhand nach /media mountet.

Damit nach dem Mounten ein Backup-Script ausgeführt wird, bauen wir uns ein Script, dass auf das Mounten der Backup-Festplatte wartet.

vim /home/user/bin/my_backup_watchdog.sh

und der neue Backup-Watchdog wie folgt angelegt.

#!/bin/bash -v

# Pfad zum Mount-Punkt
MOUNT_POINT="/media/Your_Media_Label"

# Pfad zum Backup-Skript
BACKUP_SCRIPT="/home/user/bin/my_backup.sh"

# Endlosschleife, um den Mount-Zustand zu überwachen
while true; do
    if mountpoint -q "$MOUNT_POINT"; then
        echo "Das Gerät ist gemountet, rufe das Backup-Skript $BACKUP_SCRIPT auf"
        $BACKUP_SCRIPT
        # Warte, bis das Gerät nicht mehr gemountet ist
        until ! mountpoint -q "$MOUNT_POINT"; do
            sleep 1
        done
        echo "Das Gerät ist nicht länger gemountet."
        rmdir $MOUNT_POINT
    fi
    sleep 5
done

Das neue Backup-Watchdog-Script bei einschalten der Festplatte zu starten, lässt sich elegant mit einem systemd-Service bewerkstelligen. Zu erst also einen passenden Service anlegen.

vim /etc/systemd/system/my_backup_watchdog.service

und den neuen Backup-Service wie folgt konfigurieren.

[Unit]
Description=My device trigger Script
After=network.target

[Service]
User=root
WorkingDirectory=/home/guru/bin
ExecStart=/home/user/bin/my_backup_watchdog.sh
Type=idle

[Install]
WantedBy=multi-user.target

Zuletzt noch den systemd-Service aktivieren.

sudo systemctl enable my_backup_watchdog.service

und starten

sudo systemctl start my_backup_watchdog.service

Und nach dem ersten Aus- und wieder Einschalten der Backup-Festplatte prüfen, ob das Backup-Script gelaufen ist.

sudo journalctl -xef -u my_backup_watchdog.service

Das Backup-Script my_backup.sh enthält in meinem Fall nur ein rsync-Aufruf, der alle Docker-Volumes sichert, die auf _data, _config oder _backup enden.

#!/bin/bash -v
rsync -avL --delete --include='*_data/***' --include='*_config/***' --include='*_backup/***' --exclude='*' "$SOURCE_DIR" "$DESTINATION_DIR"
umount "$DESTINATION_DIR"
Automatisches Einschalten der Backup-Festplatte

Über die Hue-Smartphone-App lässt lassen sich Timer einstellen. Einfach unter "Automatisierung" den Timer für die Steckdose stellen. Jedes Mal, wenn die Steckdose per Timer eingeschaltet wird, wird die Festplatte eingehängt und das Backup gestartet.

Automatisches Abschalten der Backup-Festplatte

Das händische Ausschalten der Backup-Festplatte nach Beendigung des Backups ist in diesem Setup noch der dumme Teil. Wer eine Hue-Bridge hat, kann das automatisch erledigen, in dem man der Hue-Bridge das Signal zum Ausschalten der Steckdose übermittelt.

Als erstes muss man einen authorisierten Username auf der Hue-Bridge generieren. Dafür den Schalter der Hue-Bridge drücken und folgendes Curl-Statement absetzen.

curl -X POST https://<bridge ip address>/api -H "Content-Type: application/json" -d '{"devicetype":"my_hue_script#homeserver peter"}' --insecure

Man erhält nun den Username zurück, mit dem man im weiteren Verlauf alle Geräte abrufen und auch schalten kann. Das folgende Curl-Statement fragt die schaltbaren Geräte ab. Das sind neben den Leuchten eben auch Steckdosen.

curl -X GET https://<bridge ip address>/api/<username>/lights --insecure

Die Rückgabe enthält alle Geräte. Das oberste Element ist jeweils eine Ziffer, mit der sich das Gerät ansteuern lässt. Hat die Steckdose zum Beispiel die Nummer 16, lässt diese sich schalten, in dem man dem Key on den Wert true oder false zuordnet. Also die Steckdose ein, oder ausschaltet. Die folgende Zeile dann einfach nach dem Unmounten der Festplatte ausführen und die Festplatte wird abgeschaltet.

curl -X PUT https://<bridge ip address>/api/<username>/lights/16/state  -H "Content-Type: application/json" -d '{"on":false}' --insecure
Links

Get Started with Hue-Rest
Philips Hue: Timer für Lampen einstellen