Ich habe ein Debian-Sid-System (Wheezy) (und dasselbe für arch), ohne Desktop-Umgebung (und ohne Xorg überhaupt).
Ich kann meine SD-Karten, USB-Sticks und die externe Festplatte /media/
manuell mit mount
/ umount
und den entsprechenden Einträgen in /etc/fstab
oder automatisch beim Booten in ein bestimmtes Verzeichnis einbinden. Dies ist jedoch zwingend, einschränkend und nicht dynamisch genug für meine Anforderungen: Wenn ich möchte, dass sie gemountet werden /media/<LABEL>
, benötigt jedes Gerät mit einem anderen <LABEL>
einen eigenen Eintrag, und jedes <LABEL>
Unterverzeichnis muss auch manuell erstellt / entfernt werden /media/
.
Also, was ist der beste Weg , um sie zu montieren automatisch in /media/<LABEL>
beim Einführen (und sie aus dem Dateisystem so schnell abzuhängen , wie sie vom Netz getrennt sind , egal , wie riskant es für die Daten ist )?
Die ideale Lösung wäre:
- erkennen , wenn ein Wechselmedium wird in gestecktem (dh wenn hinzugefügt ,
/dev/
wiesdax
,sdbx
, ... vonudev
) - Erstellen Sie ein Verzeichnis
/media/
gemäß seiner Bezeichnung (Bezeichnung des Wechseldatenträgers) - mounten Sie es im Verzeichnis
/media/<LABEL>
imRW
Modus (falls das Dateisystem dies unterstützt) mit derflush
Option (für avfat
) - Ermitteln Sie, ob das Medium ausgesteckt wurde
- Wenn dies der Fall ist, hängen Sie es aus dem Dateisystem aus
- entfernen Sie das entsprechende Verzeichnis aus
/media/
(die Geräte sollten oviously im Synchronbetrieb montiert werden, um Datenverluste zu vermeiden , wenn heiß unplugged wegen Cachen edit: sync
ist viel zu viel für vfat
Wechselmedien so flush
als Kompromiss geschaffen wurde , weniger sicher als sync
, aber weniger riskant nach dem Leben -Flash-Speicherzyklen)
Ich fand einige Infos über autofs
, HAL
, udisks
, udisks2
, usbmount
usw., aber es ist unklar , welche veraltet ist oder bevorzugt wird , und trotzdem habe ich nicht herausgefunden, wie sie auf meinem System leicht zu konfigurieren , das zu tun, bis jetzt ...
quelle
sync
kann ein Deamon das Gerät aus dem fs aushängen, wenn er feststellt, dass es ohne Datenverlust ausgesteckt wurde. Das machen alle Desktop-Distributionen. Ich will das im Terminal.halevt
. DE erwartet im Allgemeinen, dass Sie das Gerät aus dem Dateimanager auswerfen , bevor Sie es physisch ausstecken.fdisk -l
und dannmount
- das zwei Befehle ist, aber OK, wenn Sie es automatisierbar, werden Sie das analysieren müssen , umfdisk -l
Ausgang und setzen es dann in diemount
- ich solche Sachen zu tun mithead
,tail
,tr
,cut
, etc., aber die Profis tun es normalerweise mitawk
oder, noch besser, suchen die Daten an der richtigen Stelle. Das Löschen/mnt
geschieht automatisch , zumindest für mich, wenn ich mich an einbinde . Über den Auslöser (wenn Sie einstecken) habe ich keine Ahnung, aber bitte teilen Sie uns mit, wann Sie dieses Problem lösen.Antworten:
Ich glaube, du suchst
pmount
.Wenn Sie beim Einfügen automatisch einbinden möchten, lesen Sie Automounting von USB-Sticks unter Debian .
Wenn Ihr System udisks2 verwendet , ist dies die bevorzugte Methode, um auf das Einlegen eines Wechseldatenträgers zu reagieren. Konfigurationshinweise für Udisks finden Sie im Arch Wiki .
Andernfalls ist das Programm, das auf das Erscheinen eines neuen Geräts reagiert, udev , sodass die automatische Bereitstellung durch eine udev-Regel ausgelöst wird . Das usbmount- Paket enthält udev-Regeln zum automatischen Mounten von USB-Speichergeräten und einigen anderen. Das Aufrufen
mount
von udev-Regeln funktioniert nicht für FUSE-Dateisysteme (wie z. B. ntfs-3g). Verwenden Sie daher udisks, wenn Sie dies benötigen.Sie können die Bereitstellung von Medien nicht automatisch aufheben, wenn sie entfernt werden, da die Kausalität auf diese Weise nicht funktioniert. Das Medium muss vor dem Entfernen ausgehängt werden. Bei schreibgeschützten Datenträgern können Sie nach dem Entfernen die Bereitstellung aufheben, obwohl dies einige Anwendungen verwirren kann, wenn auf dem plötzlich verschwundenen Dateisystem Dateien geöffnet sind. Wenn Sie bei beschreibbaren Medien ein bereitgestelltes Dateisystem entfernen, ist eine Beschädigung der Daten wahrscheinlich.
quelle
flush
speziell fürvfat
diesen Zweck entwickelte Mount-Option diese Probleme: Das Schreiben wird nicht nach jedem Block ausgeführt, sondern sobald das Gerät inaktiv zu sein scheint. Und Flash-Speicher haben ihre Lebenszyklen in Sackgassen erheblich verlängert. Jetzt muss der Benutzer natürlich wissen, dass er keine Geräte vom Computer trennen darf, während Dateien geöffnet werden oder während einer Kopie (oder kurz danach). Aber es ist der gute Kompromiss./media/usb-*
, was nicht meinen bedürfnissen entspricht. Ich möchte in der Lage sein, die Geräte automatisch/media/<DEV_LABEL>
mitflush
Parametern einzuhängen, wenn sie erkannt werden (wenn möglich mit dynamischer Erstellung des Verzeichnisses), und sie abzuhängen und die Verzeichnisse/media/
automatisch zu entfernen, wenn sie nicht mehr erkannt werden. Das Risiko, das ich eingehen muss, liegt bei mir.usbmount
jessie
Hier ist, wie ich es vor kurzem gemacht habe, und ich bin jetzt ziemlich zufrieden mit diesem Ansatz. Dies ist für Ubuntu 12.04 + gentoo, aber ich vermute, dass jede Distribution, die die Installation von udev und autofs erlaubt, funktionieren sollte.
Voraussetzungen: Sie müssen udev + autofs installiert haben.
Schritt 1)
Erstellen Sie die folgende Datei "/etc/udev/rules.d/90-usbsd-auto.rules" (Sie können natürlich einen beliebigen Namen verwenden, solange dieser mit ".rules" endet). :
Vorgehensweise: Es werden zwei Symlinks erstellt, einer für die USB-Speichergerätepartition unter "/ dev / usbdisks / <...>". Es wird entweder die Bezeichnung der USB-Speicherpartition oder der Name des Kernels verwendet, wenn keine Bezeichnung vorhanden ist. Der zweite Symlink führt von "/ media / usb / <...>" zu "/ media / autousb / <...>", um den Automounter zu unterstützen (siehe Schritt 2).
Hinweis: Ich habe die Regeln ursprünglich nicht mit den ID_FS_LABEL_ENC-Variablen verwendet, da dies meiner Meinung nach gefährlich ist. Was passiert, wenn Sie zwei USB-Sticks mit demselben Etikett anschließen?
Das Plakat wollte jedoch ausdrücklich das Etikett der USB-Festplatte verwenden, daher habe ich die Regeln entsprechend geändert.
Um sicherzustellen, dass udev diese Regeln liest, verwenden Sie
Mit dieser udev-Regeldatei wird alles so eingerichtet, dass die USB-Speichergerätepartition automatisch bereitgestellt wird. Beachten Sie jedoch, dass das Gerät derzeit (absichtlich) NICHT automatisch bereitgestellt wird. Es wird automatisch gemountet, sobald Sie es mit verwenden
Schritt 2)
Richten Sie autofs in automount / media / autousb / <...> ein: Ich habe meiner Datei "/etc/auto.master" (für Ubuntu 12.04) die folgende Zeile hinzugefügt:
Dies bedeutet, dass AutoFS das Gerät nach 60 Sekunden Inaktivität ausgehängt hat. Je nach Geschmack möchten Sie möglicherweise weniger oder mehr verwenden.
Für Gentoo muss "/etc/autofs/auto.master" geändert werden, damit die Verwendung sinnvoll ist
Jetzt habe ich "auto.usb" mit folgendem Inhalt erstellt:
Diese auto.usb muss ausführbar sein, damit autofs diese als (bash) Skript verwendet. Also zum Beispiel
Vorgehensweise: Dieses Skript teilt AutoFS (/ usr / sbin / automount) mit, wie die USB-Speichergerätepartition gemountet werden soll.
Das Skript verwendet zuerst "/ sbin / blkid", um herauszufinden, welche Art von Dateisystem sich auf der Partition befindet.
Das Skript bietet dann abhängig von der Gerätepartition die richtigen Einhängeoptionen.
Hinweis: Ich habe Beispielcode für die Dateisysteme "vfat" (wahrscheinlich am häufigsten für USB-Sticks), "ntfs" und "xfs" hinzugefügt. Natürlich ist es ziemlich einfach, dies zu erweitern, um mehr Dateisysteme zu unterstützen.
Schritt 3) Optional ... Um den / die USB-Stick (s) (oder Partitionen auf Ihrem USB-Stick) zu entfernen, erstellen Sie ein Skript unter / sbin / usbeject:
Mit diesem Skript können Sie "sudo usbeject" verwenden, um die Bereitstellung aller bereitgestellten USB-Gerätepartitionen aufzuheben (indem Sie automount anweisen, die Bereitstellung aufzuheben).
Natürlich können Sie einfach sicherstellen, dass die Partition nirgendwo verwendet wird. automounter wird dann die Partition nach dem 60-Sekunden-Timeout aushängen ...
Der eigentliche Trick dabei ist die Verwendung von Symlinks von "/ media / usb" nach "/ media / autousb":
quelle
Ok, es ist lange her, aber ich werde meine Frage immer noch mit der besten Option beantworten, die ich bis jetzt gefunden habe. Um es zusammenzufassen: Erstellen Sie eine
udev
Regel, die mit einigen Skripten verknüpft ist (die Verzeichnisse erstellen / entfernen und Wechseldatenträger entfernen / einbinden) und die an dasudev
Geräteereignis type = angehängt istpartition
.1 - Erstellen von Skripten zum Hinzufügen / Entfernen
Speichern Sie das folgende Skript
storage-automount.sh
in/lib/udev/
und machen Sie es ausführbar (sudo chmod a+x /lib/udev/storage-automount.sh
):Speichern Sie das folgende Skript
storage-autounmount.sh
in/lib/udev/
und machen Sie es ausführbar (sudo chmod a+x /lib/udev/storage-autounmount.sh
):2 - Erstellen der
udev
Regel zum Anhängen dieser Skripte an EreignisseUnd schließlich fügen Sie eine
udev
Regel hinzu/etc/udev/rules.d/
, zum Beispiel85-storage-automount.rules
:und machen Sie es die gleichen Berechtigungen wie die anderen Regeln in diesem Verzeichnis / Ordner
Wenn Sie nun ein Speichergerät anschließen, wird ein Verzeichnis
/media/
gemäß dem Partitionsnamen erstellt (ich erinnere mich nicht, aber ich denke, es funktioniert auch mit einer NTFS-Partition) und Ihre Partition wird darin eingebunden. Es ist R / W für Benutzer, wenn Sie eineplugdev
Gruppe auf Ihrem System haben. Außerdem sind die Geräte im synchronen Modus montiert, um das Risiko eines Datenverlusts bei einem Hot-Unplugging zu begrenzen.Wenn das Gerät entfernt wird, wird die Bereitstellung aufgehoben und das Verzeichnis wird entfernt
/media
Das Tool zum Überwachen der
udev
Ereignisse umfasst außerdemudevadm monitor
Optionen wie--env
oder--property
:Dies ist getestet und funktioniert sowohl auf Debian als auch auf Arch, funktioniert aber wahrscheinlich auf allen Distributionen, die darauf angewiesen sind
udev
.quelle
udev
?Ich denke, es ist ziemlich spät, aber ich werde dies posten, wenn jemand es braucht: (auch meine erste StackExchange-Antwort)
Nachdem ich an vielen Stellen nach der Lösung gesucht hatte, fand ich im Arch Wiki eine einfache Lösung:
Link zum Arch Wiki .
Wir können eine udisks2-Regel hinzufügen, um das Standard-Mount-Verzeichnis von
/run/media/$USER/
auf zu ändern/media/<Label>
.Fügen Sie die folgende Regel
/etc/udev/rules.d/
mit dem Namen hinzu99-udisks2.rules
:ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"
Dann können wir einfach ein einfaches Tool wie Udiskie für automount installieren .
quelle
Bitte besuchen Sie die ArchWiki Udev Seite . Sie sollten nicht
mount
von Udev-Regeln oder von Skripten ausgeführt werden, die von Udev-Regeln ausgeführt werden.Wie im udev-media-automount- Projekt gezeigt, ist dies jedoch recht einfach, indem eine Systemd-Unit aus der Udev-Regel aufgerufen wird, die dann ein Skript aufruft, das das Mounten ausführt. Im Gegensatz zu udisks2 und anderen Lösungen ist udev-media-automount auf den einfachen Fall ausgerichtet, in dem Sie als
root
Benutzer etwas bereitstellen möchten, ohne unbedingt auf die Anwesenheit einer Desktop-Umgebung oder einer "Benutzersitzung" zu warten. Es scheint genau das zu sein, wonach das OP verlangt, und ich fand es funktional und leicht verständlich.quelle
Ich habe einen Weg gefunden, dies zu tun, indem ich die Datei / etc / fstab bearbeitet habe. Ein einfacher Eintrag sieht so aus:
/dev/sdb1 /media/robot/hdd1 ntfs defaults 0 0
<file system> <mount point> <type> <options> <dump> <pass>
quelle
/etc/fstab
werden nur beim Booten automatisch gemountet.