Archives for category: frickelig

Ich hatte schon befürchtet, dass ich die Fahrräder nicht mit in den Urlaub bekomme. Dem alten Träger traue ich mich kaum noch ein Fahrrad aufzuschnallen, ein Rohr ist im Gelenk eingerissen.

Ein bekannter Campingausrüster hat mir letzten Dienstag das riesige Paket mit dem Fiamma Carry Bike Pro geliefert. Samstag stand ich dann mit Werkzeug bewaffnet auf dem Parkplatz. ‘Erstmal alles auspacken, ehe Du hier irgendeine Schraube löst’, dachte ich. Gut so. Im Paket lag der Carry Bike Pro C, dessen Haltebügel lediglich 40 – 50 cm hoch ist. Am Duc ist aber der Pro mit 80 – 150 cm montiert – neue Löcher mach ich auf gar keinen Fall in die Rückwand. Zumal ich ja nicht weiß, wo Verstärkungen drin sind. Fetzt. Alles wieder eingepackt, angerufen, Ersatzlieferung vereinbart. Ob das rechtzeitig klappt? Samstag soll’s in den Urlaub gehen. Wareneingangskontrolle sollte man halt nie vernachlässigen…

Respekt, das Paket ist heute am Dienstag da und meine arme, alte Nachbarin hat’s wieder abgekriegt. Danke. Und nu aber ruff off’n Parkplatz. Nach knapp zwei Stunden gewissenhaften Bohrens und Schraubens ist es vollbracht.

Viel ist vom alten Träger nicht übrig. Zwei der alten Schienen hab ich auf den neuen Träger verpflanzt.

Und es war höchste Eisenbahn, ich hab den alten Träger richtig eingeschätzt.Das hätte zu einer Verkehrsmeldung auf der nächsten Fahrt gereicht.

(swg)

Scheint durchzuscheinen.die Konstruktion ist überraschend stabil und auch leicht. Fühlt sich gut an, ich denke, mit Jachtlack ist das dann hinreichend wasserfest und schmutzabweisend.Der Knick ist schon etwas überschliffen, lackiert wird es nicht so sehr auffallen.

Trotzdem werde ich die Spanten bei der nächsten Klappe aus dickerem Multiplex sägen. Lässt sich dann wahrscheinlich besser verkleben.

(swg)

Demnächst wird im Womo groß umelektrifiziert. Damit der Elektroblock (ELB) einen neuen würdigen Platz über der Tür bekommt, baue ich dafür einen Schrank. Leichtbau ist angesagt.Und ich will mal versuchen, Sperrholz zu biegen. Die Frontklappe des Schranks soll rund werden.Die Kreissäge hat bis auf die letzte Lage des 4-mm-Pappelsperrholz geschlitzt. Mit sanfter Gewalt kommt es in Form.Leider hab ich an der Baumarktsäge nicht aufgepasst und so läuft die Maserung quer statt längs zur Rundung. Die Quittung krieg ich jetzt.Ganz so schlimm isses nicht. Als ersten Versuch lass ich es gelten.

(swg)

Langsam wird mein Elektrozoo mit sinnvollen Aufgaben betraut. Der Rasperry Pi im Küchenschrank kümmert sich nicht mehr nur ums Radio (MPD). Kürzlich hatte ich dort die Nextcloud installiert. Marias und mein Handy synchronisieren da hin, so haben wir immer alle Termine im Blick. Die Daten der Cloud habe ich inzwischen auf einer kleinen Festplatte gelagert, da hab ich jetzt ordentlich Platz.

Was mir noch fehlte, ist, dass das Küchenradio auch die Musiksammlung unter der Fuchtel hat und ich außerdem per Cloud drauf zugreifen kann. Besagte Sammlung lungert aber auf der ganz großen Datenschleuder, meinem Debian-Server mirny. Kann man doch gleich den Küchen-Raspi als Backup mit Mehrwert verwenden!

Damit die Musiksammlung auch immer aktuell ist, braucht es ein Sync-Script. Hier müssen gleich ein paar Aufgaben gelöst werden:

Sync
Als erstes muss das Musik-Verzeichnis synchronisiert werden, es reicht, wenn das Verzeichnis kopiert wird und es eine Sperre gegen versehentliches Löschen gibt. Dafür nehme ich rsync:
/usr/bin/rsync -xltbr –delete –backup-dir=/nextcloud-data/gelöscht –rsh=’ssh’ \
–exclude-from=/opt/nextcloud/rsync-exclude swg@mirny:/Musikverzeichnis/ /nextcloud-data/Musik

Ein paar Erklärungen zu den Optionen seien hier noch gegeben

  • -l copy symlinks as symlinks
  • -t preserve modification times
  • -x berücksichtigt nur Objekte, die sich im gleichen Dateisystem befinden
  • –rsh wählt die remote shell aus, die meisten werden SSH nutzen. Also -e ssh
  • –delete vergleicht Quellverzeichnisse und Zielverzeichnisse und sorgt dafür, dass Dateien, die im Quellverzeichnis nicht (mehr) vorhanden sind, im Zielverzeichnis gelöscht werden. Dies kann dazu führen, dass man ungewollt Dateien löscht, die man aber noch in der Sicherung behalten möchte.
  • -b sorgt dafür, dass durch die Option –delete gelöschte sowie alle veränderten Objekte gesichert werden (siehe dazu folgende Option –backup-dir=)
  • –backup-dir=Verzeichnis gibt ein Verzeichnis für die gelöschten und geänderten Objekte an, siehe Option -b
  • -r –recursive
  • –exclude-from=Datei die Datei enthält eine Liste auszuschließender Muster

rsync kopiert immer alles aus dem Musik-Verzeichnis von mirny. Wenn eine Datei auf mirny nicht mehr da ist, wird sie auf dem Küchen-Raspi in ein Verzeichnis für gelöschte Dateien verschoben. So hab ich noch eine Kontrolle über das, was so verschwindet. Wogegen es nicht hilft, ist ein schleichender Defekt der Platte, kaputte Dateien werden auch im Backup kaputt sein.

Der Inhalt der exclude-Datei sieht bei mir so aus:
– .*
– upload

Es sind alle versteckten Dateien und Verzeichnisse ausgeschlossen, und was upload heißt.

Aufwachen!
Aus Gründen läuft mirny nicht durch. Die eeeBox ist eher schlecht entwärmt, woran die ION-Grafik die Hauptschuld trägt. Außerdem will ich die große Platte schonen, die soll nicht dauerlaufen. Naja und letzten Endes muss ich den Strom ja auch bezahlen. Mirny hat einen Mechanismus, der ihn ohne äußeren Zugriff nach ca. 20 min in den Suspend schickt. Wenn das Backup laufen soll, muss mirny also geweckt werden: etherwake hilft. Ob mirny läuft, teste ich mit nc auf einen aktiven ssh. Fünf Versuche in einer Schleife sollten fürs Wecken reichen:
MIRNY_AWAKE=0
wakeup_mirny()
{
_RETRY=5
while (( RETRY > 0 ))
do
# Test, ob mirny per ssh erreichbar ist
/bin/nc -z -w1 mirny > /dev/null
if [ $? -eq 0 ]
then # ja fertig!
RETRY=0
MIRNY_AWAKE=1
else # nein: mirny wecken
/usr/sbin/etherwake -i eth0 aa:bb:cc:dd:ee:ff
/bin/sleep 5
((RETRY–))
fi
done
}

Das ganze als bash-Funktion mit einem Rückgabewert MIRNY_AWAKE, obs geklappt hat.

Berechtigung & Index
Damit die Nextcloud wirklich auf die Musik zugreifen kann, müssen die Dateien für den www-data Benutzer zugreifbar sein. Nach dem rsync ist also die Besitzübernahme mit chown -R fällig.
chown -R www-data:www-data /nextcloud-data/Musik

Das die Daten im richtigen Verzeichnis liegen, ist nur die halbe Miete. Im Webinterface sieht man sie erst, wenn sie auch in der Datenbank indiziert stehen. Dafür muss im Installationsverzeichnis der nextcloud manuell gesorgt werden:
/usr/bin/php occ files:scan –all

Script
Als ganzes Script ergibt sich dieses schöne Bild:

#!/bin/bash
MIRNY_AWAKE=0
LOGGER=”/usr/bin/logger”
#
wakeup_mirny()
{
RETRY=5
while (( RETRY > 0 ))
do
$LOGGER “music backup: check mirny!”
# Test, ob mirny per ssh erreichbar ist
/bin/nc -z -w1 mirny > /dev/null
if [ $? -eq 0 ]
then # ja fertig!
$LOGGER “music backup: mirny is awake!”
RETRY=0
MIRNY_AWAKE=1
else # nein: mirny wecken
$LOGGER “music backup: waking mirny…”
/usr/sbin/etherwake -i eth0 aa:bb:cc:dd:ee:ff
/bin/sleep 5
((RETRY–))
fi
done
}
#
$LOGGER “music backup: Starting backup…”
wakeup_mirny
if [ $MIRNY_AWAKE -eq 0 ]
then
$LOGGER “music backup: Failed to wake mirny! Backup failed!”
exit 1
fi
/usr/bin/rsync -xltbr –delete –backup-dir=/nextcloud-data/gelöscht –rsh=’ssh’ \
–exclude-from=/opt/nextcloud/rsync-exclude \
swg@mirny:/Musikverzeichnis/ /nextcloud-data/Musik
if [ $? -eq 0 ]
then
$LOGGER “music backup: rsync successfully done!”
/bin/chown -R www-data:www-data /nextcloud-data/Musik
cd /var/www/nextcloud
# Das folgende muss als www-data laufen, sonst ist das nicht erlaubt!
$LOGGER “music backup: updating nextcloud index…”
/usr/bin/sudo -u www-data /usr/bin/php occ files:scan –all
$LOGGER “music backup: successfully done!”
else
$LOGGER “music backup: rsync error! Backup failed!”
fi
exit 0;

Das Script lasse ich per cron mit dem Nutzer root einmal die Woche laufen. Mit dem Logger ist dafür gesorgt, dass ein paar nachvollziehbare Meldungen im syslog landen.

Jetzt muss ich den MPD noch mit dem Musik-Verzeichnis bekannt machen, dann hab ich meine Musik nicht nur immer im Zugriff, sondern kann sie auch in der Wohnung direkt hören.

Wenn ihr das Script nutzen wollt, passt bitte bei etherwake Netzwerkinterface und MAC an, und ihr müsst natürlich alle Verzeichnisse, aus und zu denen ihr kopieren wollt, korrigieren. Wenn in Eurem Netzwerk Namen nicht in IPs aufgelöst werden, setzt einfach die (fest vergebenen) IPs ein.

(swg)