Archives for posts with tag: Linux

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)

Ich gebe zu, ich habe meinen Heimserver – läuft unter Debian – ziemlich lange vernachlässigt. Er ging ja. Jetzt hab ich mal Updates gezogen – es kamen über 1 GB.

Ziel war eigentlich, ein Dokuwiki zu installieren, bei dem mir noch ein php-Paket fehlte. Nebendran ist auch noch ein Mediawiki installiert, in dem ich angefangen habe Projekte, Basteleien und Möbelbau zu planen und zu dokumentieren. Das hab ich mal vor einer halben Ewigkeit installiert, immer mal befüllt, aber den Unterbau nicht wirklich upgedatet. Bis jetzt.

Auch diesmal hat mich Debian wieder hinterrücks angeschossen: php 5.x war weg und dafür php 7 am laufen. Nix Wiki – weder das Media- noch das Dokuwiki. Klar stand das sicher irgendwo in der Liste von Aptitude, dass er das vorhat. Nervig ist das trotzdem, ganz zu schweigen von nutzerfreundlich. Also erstmal alle zurückfummeln und nicht mit der eigentlichen Aufgabe beschäftigen…

Das war der Grund, warum auf dem Desktop jetzt Ubuntu läuft. Da die aber auch anfangen, solche Sperenzchen zu machen, versuch ich es auf dem nächsten Desktop mit Arch Linux. Beim Server mit all seinen laufenden Diensten bin ich einfach zu träge und will dafür gerade keine Zeit aufwenden – und die Schmerzgrenze ist auch noch nicht überschritten.

(swg)

Ich kenne Ihn länger als Maria und er hat mich nie im Stich gelassen: mein kleiner eeePC. Er funktionierte bis jetzt problemlos, nun leider ist er verstummt: kein Sound kommt mehr aus seinen Lautsprecherchen, der Rest läuft immer noch, selbst der Akku ist topfit und hält 5 Stunden durch. Was soll man da machen? Nun gut, es ist nur ein Ding, schade. Zehn Jahre ist er alt, fast schon ein Fossil in Technikjahren gezählt. Auch wenn er seine Aufgaben immer noch erledigen kann, man könnte ihn doch mal ersetzen.

Kann! man! nicht!
“Der Markt” ist nicht in der Lage, adäquaten Ersatz zur Verfügung zu stellen! Ich wäre ja gerne mit der Zeit gegangen. Tablet-artig wäre schön gewesen, Ubuntu hat auch eine passende Oberfläche bereit. Eine Tastatur hätte ich gern per Bluetooth drangehängt, wenn ich tatsächlich wirklich ernsthaft schreiben oder programmieren möchte, sonst ist die Ballast. Wifi, USB-Host-Port, lange Akkulaufzeit – alles erfüllbar. Aber! UMTS- oder LTE-Modem! Das ist die Fußangel meiner Wünsche. Stick draußen dran? Kommt ja gar nicht in Frage!. Niemand hat es – es sei denn ich kauf mir ein M$ Surface oder lege tausende Taler für etwas von Sony hin, dass dann aber rundherum an einer Glaskante endet, die mir einfach nicht robust genug für meinen Umgang erscheint (Sony Vaio Duo, falls jemand gefragt hat). Ich hatte groß Hoffnung in UbuntuTab gesetzt, wurde aber auch hier enttäuscht, als es endlich präsentiert wurde: kein Mobilfunk drin.

Zeitreise
In meiner Verzweiflung bin ich in die Vergangenheit gereist. Die Zeitmaschine heißt ebay-kleinanzeigen. Jetzt steht hier wieder ein eeePC 901 go, diesmal in schwarz. Dafür hat der Vorbesitzer den RAM schon auf 2 GB aufgerüstet und die SSD gegen eine 30 GB-Version getauscht. Bluetooth ist an Board, das fehlte beim weißen, den ich damals als Schnäppchen für 270,-€ aus dem Internet bekam. Heute waren’s für den schwarzen noch 70,-€

Das Windows 7, das sich wirklich passabel auf der alten Hardware anfühlt – sogar Aero ist an – musste weichen. Debian kommt aber nicht wieder drauf, der Testing-Zweig ist mir zu veraltet und oft frickelig. Derzeit birgt jedes Update eine neue Überraschung, was ich diesmal wieder gerade biegen darf. Manchmal bootet die Kiste dann auch nicht, was zu echten Klimmzügen führt. Ubuntu sollte es diesmal sein: Ubuntu-Mate? Lubuntu, Xubuntu?

Mit Mate hab ich schonmal geliebäugelt und diesmal die Chance genutzt. Leider muss ich feststellen, dass der Komfort sehr zu wünschen übrig lässt: Wenn ich den Desktop nach meinen wünschen konfigurieren will, fehlen tausend Dialoge. Gefühlt ist Mate auf dem Stand von XFCE von vor 6-7 Jahren. Damals hab ich mir die Zeit genommen, weil ich mit XFCE einen schlanken Desktop kriegen konnte (150 MB RAM nach dem Booten und kaum Systemlast). Heute will ich nicht mehr frickeln und bekomme mit XFCE immer noch den schlanken Desktop, kann mir den Desktop aber zusammenklicken, ohne in die config-Hölle tauchen zu müssen. Dazu kommt, das Mate im Leerlauf schon ~8 % CPU frisst. So dicke ist der Akku vom eeePC nun auch nicht. Ich hab dazu wenig Ambitionen, die Ursache zu finden – so viel Zeit hab ich nicht übrig. Zum Vergleich: Mit XFCE dümpelt er zwischen 2 und 3 %. Drei Abende später steht fest: Ubuntu-Mate muss wieder weichen, es wird Xubuntu. XFCE mag ich, kenn’ ich und Ubuntu hat die Software aktuell, die ich brauch (FreeCad zum Beispiel). Damit ist dann auch gleich der Hauptrechner fällig. Adieu Debian.

(swg)

Eigentlich hat mein kleiner eeePC 901Go eingebautes UMTS. Derzeit sind aber alle Simkarten in anderen Mobilgeräten verbaut. Und jedes Mal die Karten herauspopeln macht auch keinen Spaß. KAnn man Telefone nicht zum Internet-teilen bringen? Nicht per Wifi! Strom ist hier gerade knapp im Womo, aber USB?

Guck an, so leicht geht das: Mein ZTE Open C-Telefon kann USB-Tethering. Das ist aber nur die Hälfte. Angesteckt an meinen eeePC meldet sich tatsächlich ein neues Netzwerkgerät: ifconfig -a spuckt unter anderem

Cosmos2251:/home/swg# ifconfig -a
enx020431316266: flags=4098  mtu 1500
        ether 02:04:31:31:62:66  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Guck an, und jetzt? dhclient -1 enx020431316266 und schon sieht das nächste ifconfig so aus:

Cosmos2251:/home/swg# ifconfig -a
enx020431316266: flags=4163  mtu 1500
        inet 192.168.0.10  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::4:31ff:fe31:6266  prefixlen 64  scopeid 0x20
        ether 02:04:31:31:62:66  txqueuelen 1000  (Ethernet)
        RX packets 9  bytes 950 (950.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 42  bytes 8926 (8.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Ein Ping auf Heise.de liefert Pakete! Ich freue mich und verfasse diesen kurzen Beitrag :)

(swg)