Als erstes der fstab-Eintrag für den USB-Stick:
Code: Select all
/dev/usbhd1 /mnt/usb/stick vfat noauto,users,rw,sync 0 0Damit usbhd1 auch wirklich immer der gleiche Stick ist, muss eine udev-Regel her. Bei mir /etc/udev/rules.d/06-usbsticks.rules. Der Eintrag der hier interessiert ist:
Code: Select all
BUS="usb", KERNEL="sd*", SYSFS{serial}=="ef50f40efe5c48", NAME="%k", SYMLINK="usbhd%n", GROUP="disk"danach:
Code: Select all
udevstartJetzt den Stick anstecken, und die Links sollten wie folgt entstehen:
/dev/usbhd -> sda
/dev/usbhd1 -> sda1
...
unison installieren (gtk-useflag setzen für das GUI) und ein Projekt erstellen, welches die Dateien mit /mnt/usb/stick synchronisiert. Bei mir heisst das unison-Projekt 'usb-stick'.
Als nächstes wird ein kleines Script gebraucht, welches den USB-Stick einbindet und unison mit dem Projekt startet:
Code: Select all
#!/bin/sh
/usr/bin/logger "`/bin/su USER -c \" \
/bin/mount /mnt/usb/stick 2>&1 \
&& XAUTHORITY=/home/USER/.Xauthority DISPLAY=:0.0 /usr/bin/unison usb-stick -ui graphic -perms 0 \" `" &
exit 0
-/usr/bin/logger sorgt dafür, dass eventuelle Fehlermeldungen im syslog erscheinen
-da das Script später in einer root-Umgebung läuft werden mit /bin/su alle Befehle mit den eigenen Rechten ausgeführt
-/bin/mount /mnt/usb/stick 2>&1 bindet den USB-Stick ein und lenkt die Fehlerausgabe indirekt auf syslog um
-unison wird nur gestartet, wenn das Einbinden erfolgreich war. Als Projekt wird usb-stick gewählt. Da in vfat nicht alle permissons darstellbar sind, versucht unison diese bei jedem Lauf abzugleichen. Dies wird mit '-perms 0' unterbunden/ignoriert. Um das GUI benutzen zu können, ist die XAUTHORITY und DISPLAY Umgebungsvariable zu setzen.
-das Script unter /etc/udev/scripts/usb-stick-autorun.sh abspeichern und Ausführungsrechte setzen
Das usb-stick-autorun.sh-Script soll beim anstecken des USB-Sticks automatisch ausgeführt werden, dazu die UDEV-Regel um RUN="/etc/udev/scripts/usb-stick-autorun.sh" erweitern. An meinem Beispiel ergibt das die Regel:
Code: Select all
BUS="usb", KERNEL="sd*", SYSFS{serial}=="ef50f40efe5c48", NAME="%k", SYMLINK="usbhd%n", GROUP="disk" RUN="/etc/udev/scripts/usb-stick-autorun.sh"
Sobald der Stick angesteckt wird, werden die device-Links angelegt, der stick eingebunden und das unison-Projekt für die Synchronisation aufgerufen. Sollten zwischen Rechner und Stick Differenzen auftreten, werden diese grafisch angezeigt. Der Benutzer kann die Synchronisation beeinflussen und bestätigen.
Und wer den autorun-Service einmal nicht starten will drückt fleissig die Strg-Taste
