Tücken der Synchronisierung

Ein Gerät mit einem Ordner zu synchronisieren, ist nicht so einfach wie man vielleicht meint – vor allem dann nicht, wenn man Dateien sowohl auf dem MP3-Player als auch auf dem Computer löschen kann. Im folgenden gehen wir davon aus, dass der Podcast-Ordner des Players zu Beginn leer ist und dass es keine andere Möglichkeit gibt, eine MP3-Datei auf das Device zu übertragen als über die Synchronisierung mit dem Computer.

Der Prozess besteht aus drei Schritten. Der erste synchronisiert den Podcast-Ordner /pfad/zu/mp3player/podcasts/ auf dem MP3-Player mit dem Ordner ~/podmirror auf dem Computer. Dabei werden alle Dateien in ~/podmirror gelöscht, die sich nicht auf dem Player befinden, in der Annahme, dass die Dateien als unerwünscht vom Player entfernt wurden. Wenn andererseits eine Datei auf dem Player existiert, in ~/podmirror aber nicht, ignoriert das Programm die Datei und legt keine neue Kopie ~/podmirror an.

Schritt zwei umfasst die einfache Übertragung der neuen MP3s von ~/podin nach ~/podmirror. Dieser Transfer kann erst dann stattfinden, wenn die Synchronisierung abgeschlossen ist, anderenfalls würden auch neue Dateien gelöscht, weil sie sich nicht auf dem MP3-Player befinden.

Im dritten Schritt synchronisiert man ~/podmirror mit /pfad/zu/mp3player/podcasts/. Dabei löscht die Software alle Dateien in /pfad/zu/mp3player/podcasts/, die sich nicht in ~/podmirror befinden. Dann erstellt sie auf dem MP3-Player eine neue Kopie von jeder Datei in ~/podmirror, die sich noch nicht auf dem Gerät befindet: Das sind die neuen Dateien, die Sie von ~/podin übertragen haben.

Stellen Sie sicher, dass Sie diese Prozesse verstehen und – und um ganz sicher zu gehen – sichern Sie die Daten auf dem Player, bevor Sie die erste Synchronisierung versuchen. Ein Fehler könnte, nachdem Sie versehentlich alle Dateien vom Player gelöscht haben, den Inhalt von ~/podmirror komplett löschen.

Um den Player zu synchronisieren, benutzen Sie am besten das Befehlszeilentool rsync. Bei den meisten Distributionen sollte eine Version an Bord sein; alternativ laden Sie den Quellcode von [10] herunter und kompilieren das Tool selbst.

Wie bereits beschrieben, werden im ersten Schritt alle Dateien aus podmirror/ gelöscht, die Sie bereits vom Player entfernt haben:

rsync -r --progress --delete ↩
--existing --size-only ↩
/pfad/zu/mp3player/podcasts/ ↩
/pfad/zu/podmirror/

Die meisten Geräte auf Flash-Basis nutzen das FAT32-Dateisystem, das keine Unix-Zeitstempel kennt. Die Option --size-only gibt Ihnen die Möglichkeit, die Aktualisierung von Dateien zu überspringen, die zwar identisch sind, aber deren Zeitstempel sich scheinbar geändert haben. Die Option -existing hält rsync davon ab, Dateien neu zu installieren, die sich nicht mehr in ~/podmirror befinden. Die Option -progress dokumentiert den Fortschritt der Synchronisation. Der zweite Schritt, der die neuen Podcasts aus ~/podin nach ~/podmirror kopiert, gestaltet sich einfach:

mv /pfad/zu/podin/* ↩
/pfad/zu/podmirror/

In Schritt drei kommt wieder rsync zum Einsatz, aber in umgekehrter Richtung und ohne die Option --existing, weil neue Dateien auf den Player wandern sollen:

rsync -r --progress ↩
--delete --size-only ↩
/pfad/zu/podmirror/ ↩
/pfad/zu/mp3player/podcasts

Denken Sie daran, den Player zu unmounten, bevor Sie ihn abklemmen. Geben Sie dazu eject /pfad/zu/mp3player ein. Dann könnnen Sie das Gerät einpacken und unterwegs Podcasts hören.

Alles zusammen

Das das fertige Skript speichern Sie nun unter syncplayer (Listing 1). Das Skript gibt eine Fehlermeldung aus, wenn der MP3-Player nicht gemountet ist oder der Zielordner nicht existiert. Passen Sie /pfad/zu/ in Zeilen 3 bis 5 Ihrem eigenen Setup an.

Listing 1

syncplayer

#!/bin/bash
# syncplayer
# Pfad zu den Ordnern. Passen Sie den Pfad Ihrem persönlichen Setup entsprechend an.
mp3player=/pfad/zu/mp3player # der Mountpoint für Ihren Player
podin=/pfad/zu/podin
podmirror=/pfad/zu/podmirror
# Testplayer ist gemountet und der Ordner podcasts existiert
[ ! -d $mp3player/ ] && echo "mp3 player not mounted" && exit 1
[ ! -d $mp3player/podcasts ] && echo "Device folder podcasts not present" && exit 1
# Synchronisierung durchführen
rsync -r --progress --delete --existing --size-only $mp3player/podcasts/ $podmirror/
mv $podin/* $podmirror/
rsync -r --progress --delete --size-only $podmirror/ $mp3player/podcasts

Um dieses Skript automatisch auszuführen, wenn neue Podcasts eintreffen, stellen Sie iPodder so ein, dass es das Skript aufruft. Dazu geben Sie syncplayer unter File | Preferences | Advanced als Option für die Ausführung von Skripts beim Download an. Wenn Sie BashPodder verwenden, müssen Sie eine Zeile am Ende von bashpodder.shell einfügen. Dazu editieren Sie die Datei oder tippen einfach echo "/pfad/zu/syncplayer" >> bashpodder.shell (achten Sie dabei darauf, dass Sie >> und nicht > tippen, um die Datei zu ergänzen, statt sie zu überschreiben).

Um die Synchronisation automatisch beim Anschließen eines MP3-Geräts zu starten, hängen sie das Skript in das Hotplug-Subsystem ein. Tipps dazu finden Sie im Kasten "Automatisieren". Sollten die eigenartigen Dateinamen gewisser Podcasts Ihnen Schwierigkeiten machen, finden im Kasten "Kurze Dateinamen" einen Ausweg.

Automatisieren

Wenn Sie das Synchronisationsskript automatisch ausführen lassen wollen, sobald Sie Ihren Player anschließen, können Sie den Vorgang über Hotplug auslösen. Suchen Sie die Hersteller(Vendor)- und Produkt-IDs für das Gerät, indem Sie es anschließen und die Ausgabe von cat /proc/bus/usb/devices nach den relevanten Details für den MP3-Player durchsuchen. Für ein PowerMusic-Gerät beispielsweise ist der folgende Abschnitt von Interesse:

P:  Vendor=0d7d ProdID=0153 ↩
Rev= 1.00
S:  Product=PowerMusic

Jetzt legen Sie /etc/hotplug/usb/powermusic.usermap an, um ein Skript auszuführen, das on_plug_powermusic heißen soll. Das Skript wird ausgeführt, sobald Sie den Player anschließen:

# /etc/hotplug/usb↩
/powermusic.usermap
# powermusic mp3 player
on_plug_powermusic ↩
0x0003 0x 0d7d 0x 0153 0x0 0x0 ↩
0x0 0x0 0x0 0x0 0x0 0x0 0x0

Das erste Feld gibt an, welche Optionen einander zugeordnet werden. Hier bleibt der Wert 0x0003 stehen. Das zweite und dritte Feld enthalten die Hersteller- und Produkt-IDs, die aus /proc/usb/devices stammen. Die anderen Felder sind hier nicht von Interesse und dürfen den Wert 0x0 behalten. Nun fehlt noch die Datei on_plug_powermusic in /etc/hotplug/usb/:

# /etc/hotplug/usb/↩
on_plug_powermusic
# on_plug_powermusic
until ↩
[ -e /pfad/zu/mp3player ];↩
 do sleep 1; done
su user -c /pfad/zu/syncplayer ↩
>& /var/log/messages
exit 0

Ändern Sie user in Zeile 3 auf den eigenen Usernamen und tragen Sie die Details für /pfad/zu/ ein. Machen Sie die Datei ausführbar und starten Sie Hotplug neu:

chmod +x ↩
on_plug_powermusic ↩
&& /etc/init.d/boot.hotplug ↩
restart

Wenn Sie den Player jetzt mit dem Computer verbinden, startet das Skript syncplayer und überträgt etwaige neue Podcasts auf Ihren MP3-Player. Denken Sie aber daran, den Player wieder zu unmounten, wenn die Übertragung abgeschlossen ist.

Kurze Dateinamen

Viele MP3-Player haben winzige Displays, die längere Dateinamen nur schlecht darstellen. Vielleicht wollen Sie daher die Dateinamen mithilfe von sed kürzen.

Die Podcasts von IT Conversations besitzen sehr lange Dateinamen. Um diese Namen auf den Namen des wichtigsten Redners zu reduzieren, führen Sie folgendes im Verzeichnis ~/podin aus:

for i in ITC.*; do
        mv $i $(basename $i | sed -e "s/ITC\.[^-]*-\([^-]*\)[\.-].*/\1.mp3/g");
        done

So wird beispielsweise ITC.AC2004-RichardMarks-2004.11.07.mp3 in RichardMarks.mp3 konvertiert.

Infos

[1] IT Conversations: http://www.itconversations.com/

[2] Deutschsprachiger Podcasts: http://www.podster.de

[3] RSS Payloads: http://www.thetwowayweb.com/payloadsforrss

[4] Marcel Hilzinger, MP3-Player im Test, LinuxUser 06/05, S. 29

[5] iPodder: http://ipodder.sourceforge.net/index.php

[6] jPodder: http://jpodder.com/

[7] Azureus: http://azureus.sourceforge.net/

[8] BashPodder: http://linc.homeunix.org:8080/scripts/bashpodder/

[9] BFConf: http://www.leonscape.co.uk/linux/bpconf/

[10] Rsync-Homepage: http://freshmeat.net/projects/rsync/

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...