pi n00b
![n00b n00b](/images/ranks/rank_rect_0.gif)
Joined: 01 Nov 2002 Posts: 63 Location: Jena - Thüringen - Deutschland
|
Posted: Sat Mar 18, 2006 7:57 pm Post subject: usbstick mit udev und unison aktuell halten |
|
|
Das schöne an USB-Sticks ist, das sie den Schlüsselanhänger ersetzen und es einem ermöglichen allerlei Daten parat zu haben. Nur muss jetzt der USB-Stick mit der eigenen Festplatte synchronisiert werden....
Als erstes der fstab-Eintrag für den USB-Stick:
Code: | /dev/usbhd1 /mnt/usb/stick vfat noauto,users,rw,sync 0 0 |
-der Stick wird auf /mnt/usb/stick eingehangen und als device /dev/usbhd1 benutzt
Damit 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: | BUS="usb", KERNEL="sd*", SYSFS{serial}=="ef50f40efe5c48", NAME="%k", SYMLINK="usbhd%n", GROUP="disk" |
-SYSFS{serial}=="ef50f40efe5c48" auf den eigenen Stick so anzupassen, dass es den Stick eindeutig beschreibt! Siehe udev-howto
danach:
ausführen um die Regel einzulesen.
Jetzt 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: |
#!/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
|
-USER mit dem eigenen Benutzernamen ersetzen
-/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: |
BUS="usb", KERNEL="sd*", SYSFS{serial}=="ef50f40efe5c48", NAME="%k", SYMLINK="usbhd%n", GROUP="disk" RUN="/etc/udev/scripts/usb-stick-autorun.sh"
|
-udevstart ausführen um die Änderung wirksam werden zu lassen
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 ![Wink :wink:](images/smiles/icon_wink.gif) |
|