Das Programm „udev“ stellt verschiedene Regeln dar, welche den Umgang mit Devices betreffen. Eine sinnvolle Anwendung von udev kann zum Beispiel das Überspielen von Dateien auf eine bestimmte Festplatte zu sein. Auf diese Art und Weise kann man schnell ein Backup erstellen, was automatisch beim Anschluss einer bestimmten Festplatte erstellt und auf diese überspielt wird.
Dazu geht man am Besten wie folgt vor:
- Erstellen eines spezifischen device-Eintrages für die Festplatte
- Ausführen eines bestimmten Skripts beim Anschluss
Ein spezifisches Device für die Festplatte ist eigentlich nie verkehrt. Durch das von udev erstellte Device (also neben bspw. /dev/sdc1 einen symlink mit /dev/backupHDD) kann man besser mit dem neuen device in dem gestarteten Skript umgehen und außerdem hätte man beispielsweise die Möglichkeit auf das Erstellen des Devices selbst Events anzuknüpfen (beispielsweise mit Hilfe von „automount“). Das Ausühren eines Skripts beim Anschluss kann dann beispielsweise ein Backup per tar-Befehl erstellen, die angeschlossene Festplatte mounten (wenn dies nicht schon durch „automount“ passiert ist) und anschließend das Archiv auf die Festplatte kopieren. Ebenso kann man beim Abschluss der Festplatte einen unmount-Befehl ausführen lassen.
Alles was man dazu tun muss, ist eine Regel in dem Ordner „/etc/udev/rules.d“ erstellen. Als Beispiel hier ein paar Regeln, welche auf meinem Server das Backup vornehmen:
####################
# Generate symlink for /dev/backupHDD for backup-disc
BUS==“usb“, KERNEL==“sd?1″, ATTRS{manufacturer}==“Western Digital“, ATTRS{serial}==“5743415A4131383035303335″, SYMLINK+=“backupHDD“
# Run backup-script when backup-disc is connected
ACTION==“add“, BUS==“usb“, KERNEL==“sd?1″, ATTRS{manufacturer}==“Western Digital“, ATTRS{serial}==“5743415A4131383035303335″, RUN+=“/media/Backup/scripts/udev-mount.sh %k“
# Run unmount backup-script when backup-disc is disconnected
ACTION==“remove“, BUS==“usb“, KERNEL==“sd?1″, ATTRS{manufacturer}==“Western Digital“, ATTRS{serial}==“5743415A4131383035303335″, RUN+=“/media/Backup/scripts/udev-unmount.sh %k“
Die Attribute, welche hier in den Regeln verwendet wurden (also bspw. ATTRS{manufacturer}), kann man sich mit Hilfe des udev Tools „udevadm“ anzeigen lassen:
udevadm info --query all --path /sys/block/sdc/sdc1/ --attribute-walk
Es muss beim ausgeführten Script darauf geachtet werden, dass es nicht zu lange läuft.
UDev sorgt nämlich dafür, dass das Script nach ein paar Sekunden automatisch „gekilled“ wird, da es dann von einem Fehler ausgeht.
Will man länger laufende Scripts (Stichwort Backup) ausführen, dann sollte man per udev ein systemd script starten.
Ein Systemd-Skript kann dabei etwa so aussehen (hier mein Backup-Skript /etc/systemd/system/backup@service):
Systemd hat hier auch den Vorteil, dass man per „service backup@sdd1 status“ (bzw. auch start oder stop) sehen kann, ob das Backup gerade läuft