6 Private Links
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