Udev und Autofs

Um unter Linux (hier: Ubuntu) wechselnde (USB-) Platten fürs Backup (z.B. mit rsanpshot) automatisch an eine Stelle zu mounten nutze ich eine Kombination von Udev und Autofs.

Udev

Mein System erkennt angeschlossene Backup-Platten anhand ihrer Label (alternativ ist natürlich auch die UUID möglich, aber über die Labels kann ich die Platten schneller selbst zuordnen.)

Über udev-Regeln möchte ich den entsprechenden Platten (bzw deren ext4-Dateisystemen) das Device /dev/backup zuordnen. (Selbstverstädnlich muss ich beim Anstöpseln darauf achten, dass nur jeweils eine der Platten angeschlossen ist.)

Über das CLI erstelle ich zunächst die Regeln

cat <<EOF >/etc/udev/rules.d/99-backup-drive.rules
# Beispiel für mehrere Platten, die alle /dev/backup werden sollen
# Ersetze die UUID- oder LABEL-Werte mit den echten Werten der Platten
#SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", ENV{ID_FS_UUID}=="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", SYMLINK+="backup"
SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", ENV{ID_FS_LABEL}=="Backup_1", SYMLINK+="backup"
SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", ENV{ID_FS_LABEL}=="Backup_2", SYMLINK+="backup"
EOF

Autofs

Mit Autofs (evtl muss das nachinstalliert werden: „apt install autofs“) mounte ich das entsprechende Dateisystem dann nach /var/Backup (das vorher natürlich existieren muss).

cat <<EOF >/etc/auto.master
/- /etc/auto.backup --timeout=60
EOF

cat <<ROF >/etc/auto.backup 
# Format: <MountPoint-Name> <Optionen> <Gerät>
# Da der Symlink immer /dev/backup heißt, referenzieren wir diesen direkt.
/var/Backup -fstype=auto :/dev/backup
EOF

Durch das Timeout wird das Dateisystem 60s nach der letzten Nutzung wieder ausgehängt, und so die Platte auch gefahrlos entfernt werden – ggf. nach einem Blick ins Journal (oder nach einer Mail am Ende des Backupvorganges).

Um jetzt noch in das Journal Nachrichten über das mounten oder unmounten (hier: expire) zu bekommen, kann unter Ubuntu in /etc/default/autofs noch eingestellt werden, dass automount etwas redseeliger ist:

OPTIONS="--verbose"