J'ai un système Sid Debian (Wheezy) (et même pour arch), sans environnement de bureau (et pas Xorg du tout).
Je peux monter mes cartes SD, clés USB, disque dur externe par étiquette dans un répertoire spécifié /media/
manuellement avec mount
/ umount
et les entrées appropriées dans /etc/fstab
, ou automatiquement au démarrage, mais cela est convaincant, trop restrictif et pas assez dynamique pour mes besoins: si je veux qu'ils soient montés /media/<LABEL>
, chaque appareil avec un autre a <LABEL>
besoin de sa propre entrée, et chaque <LABEL>
sous-répertoire doit être créé / supprimé manuellement /media/
également).
Alors, quelle est la meilleure façon de les monter automatiquement dans /media/<LABEL>
lors de l' insertion (et de les démonter du système de fichiers dès qu'ils sont débranchés , peu importe la façon dont il est risqué pour les données )?
La solution idéale serait:
- détecter le moment où est branchée (ie lorsqu'il est ajouté dans un support amovible
/dev/
commesdax
,sdbx
... parudev
) - créer un répertoire en
/media/
fonction de son étiquette (étiquette du support amovible) - le monter dans le répertoire
/media/<LABEL>
enRW
mode (si son système de fichiers le supporte) avec l'flush
option (pour avfat
) - détecter si le média a été débranché
- si alors, démontez-le du système de fichiers
- supprimer le répertoire correspondant de
/media/
(les appareils doivent être montés en mode synchrone de façon ovale, pour éviter toute perte de données lorsqu'ils sont débranchés à chaud en raison de la mise en cache : sync
c'est beaucoup trop pour les vfat
supports amovibles, donc flush
a été créé comme un compromis , moins sécurisé que sync
, mais moins risqué selon la durée de vie -des cycles de mémoires flash)
J'ai trouvé quelques informations sur autofs
, HAL
, udisks
, udisks2
, usbmount
etc., mais on ne sait pas que l' on est dépréciée ou préféré, et de toute façon, je n'ai pas compris comment les configurer facilement sur mon système pour le faire, jusqu'à maintenant ...
la source
sync
, un démon peut démonter l'appareil du fs s'il détecte qu'il a été débranché sans perte de données. Toutes les distributions de bureau font cela. Je veux ça dans le terminal.halevt
. À propos du démontage, DE attend généralement que vous éjectiez le périphérique du gestionnaire de fichiers avant de le débrancher physiquement.fdisk -l
puismount
- qui est deux commandes, mais OK, si vous le voulez automatisé, vous devrez analyser lafdisk -l
sortie, puis le mettre dans lemount
- je fais une telle substance avechead
,tail
,tr
,cut
, etc., mais les professionnels le font généralement avecawk
ou, mieux encore, recherchent les données au bon endroit. À propos de la suppression, du moins pour moi lorsque je monte sur/mnt
, cela se fait automatiquement. À propos du déclencheur (lorsque vous vous connectez), je n'ai aucune idée, mais dites-nous quand vous le résolvez.Réponses:
Je pense que vous cherchez
pmount
.Si vous souhaitez un montage automatique lors de l'insertion, voir Montage automatique de clés USB sur Debian .
Si votre système utilise udisks2 , c'est la façon préférée de réagir à l'insertion d'un périphérique de stockage amovible. Voir le wiki Arch pour des conseils de configuration pour les Udisks.
Sinon, le programme qui réagit lorsqu'un nouveau périphérique apparaît est udev , donc le montage automatique est déclenché par une règle udev . Le package usbmount fournit des règles udev pour monter automatiquement des périphériques de stockage USB et quelques autres. L'appel à
mount
partir des règles udev ne fonctionne pas pour les systèmes de fichiers FUSE (tels que ntfs-3g), utilisez donc les udisks si vous en avez besoin.Vous ne pouvez pas démonter automatiquement les médias lorsqu'ils sont supprimés car la causalité ne fonctionne pas de cette façon. Le support doit être démonté avant d' être retiré. Pour les supports en lecture seule, vous pouvez éviter le démontage après la suppression, bien que cela puisse confondre certaines applications si des fichiers sont ouverts sur le système de fichiers soudainement disparu. Pour les supports inscriptibles, si vous débranchez un système de fichiers monté, une corruption des données est probable.
la source
flush
option de montage conçue spécialement pourvfat
éviter ces problèmes: l'écriture n'est pas effectuée après chaque bloc, mais dès que le périphérique semble inactif. Et les mémoires flash ont également considérablement augmenté leurs cycles de vie sans issue. Maintenant, évidemment, l'utilisateur doit être conscient de ne pas débrancher les appareils lorsque les fichiers sont ouverts ou pendant une copie (ou peu de temps après). Mais c'est le bon compromis./media/usb-*
, ce qui ne correspond pas à mes besoins. Je veux pouvoir monter automatiquement les périphériques/media/<DEV_LABEL>
avec unflush
paramètre lorsqu'ils sont détectés (si possible avec la création dynamique du répertoire), les démonter et supprimer les répertoires de/media/
automatiquement s'ils ne sont plus détectés. Le risque que je prends dépend de moi.usbmount
ne supporte plus NTFS depuisjessie
: bugs.debian.org/774149Voici comment je l'ai fait récemment, et je suis assez satisfait de cette approche maintenant. C'est pour Ubuntu 12.04 + gentoo, mais je suppose que toute distribution, qui permet d'installer udev et autofs devrait fonctionner.
Prérequis: Vous devez avoir installé udev + autofs.
Étape 1)
Créez le fichier "/etc/udev/rules.d/90-usbsd-auto.rules" suivant (vous pouvez bien sûr utiliser n'importe quel nom tant qu'il se termine par ".rules"). :
Qu'est-ce que cela fait: Il crée deux liens symboliques, un pour la partition du périphérique de stockage USB sous "/ dev / usbdisks / <...>". Il utilisera soit l'étiquette de la partition de stockage USB, soit le nom du noyau, s'il n'y a pas d'étiquette. Le deuxième lien symbolique reliera de "/ media / usb / <...>" à "/ media / autousb / <...>" ceci est fait pour la prise en charge des montages automatiques (voir l'étape 2).
Remarque: à l'origine, je n'ai pas utilisé les règles avec les variables ID_FS_LABEL_ENC, car cela est dangereux à mon avis. Que se passe-t-il si vous branchez deux clés USB qui utilisent la même étiquette?
Mais l'affiche voulait spécifiquement utiliser l'étiquette du disque USB, j'ai donc modifié les règles en conséquence.
Pour vous assurer que udev lit ces règles, utilisez
Avec ce fichier de règles udev, tout est configuré pour monter automatiquement la partition du périphérique de stockage USB. Notez cependant que pour le moment, l'appareil ne sera PAS monté automatiquement (intentionnellement). Il sera monté automatiquement une fois que vous l'utiliserez avec
Étape 2)
Configurer autofs pour monter automatiquement / media / autousb / <...>: J'ai ajouté la ligne suivante à mon fichier "/etc/auto.master" (pour Ubuntu 12.04):
Cela signifie qu'AutoFS démontera l'appareil après 60 secondes d'inactivité. Vous voudrez peut-être en utiliser moins ou plus, selon votre goût.
Pour Gentoo, vous devez modifier "/etc/autofs/auto.master" afin qu'il soit logique d'utiliser
Maintenant, j'ai créé "auto.usb" avec le contenu suivant:
Ce fichier auto.usb doit être exécutable, afin que autofs l'utilise comme un script (bash). Donc par exemple
Qu'est-ce que cela fait: ce script indiquera à AutoFS (/ usr / sbin / automount) comment monter la partition du périphérique de stockage USB.
Le script utilisera d'abord "/ sbin / blkid" pour savoir quel type de système de fichiers se trouve sur la partition.
Le script fournira alors les bonnes options de montage en fonction de la partition du périphérique.
Remarque: J'ai inclus un exemple de code pour "vfat" (probablement le plus courant pour les clés USB), "ntfs" et "xfs". Bien sûr, il est assez facile de l'étendre pour prendre en charge davantage de systèmes de fichiers.
Étape 3) Facultatif ... Pour "éjecter" == démonter votre clé USB (ou vos partitions sur votre clé USB), créez un script sous / sbin / usbeject:
Avec ce script, vous pouvez utiliser "sudo usbeject" pour démonter toutes les partitions de périphérique USB montées (en disant à automount de les démonter).
Bien sûr, vous pouvez simplement vous assurer que la partition n'est utilisée nulle part; automounter démontera ensuite la partition après l'expiration du délai de 60 secondes ...
Le vrai truc ici est d'utiliser des liens symboliques de "/ media / usb" vers "/ media / autousb":
la source
D'accord, cela fait longtemps, mais je vais quand même répondre à ma question avec la meilleure option que j'ai trouvée à partir de maintenant. Pour résumer: créez une
udev
règle, associée à certains scripts (qui va créer / supprimer des répertoires et démonter / monter des périphériques amovibles), et attachée auudev
type d'événement de périphérique =partition
.1 - Création de scripts d'ajout / suppression
Enregistrez le script suivant
storage-automount.sh
dans/lib/udev/
et rendez-le exécutable (sudo chmod a+x /lib/udev/storage-automount.sh
):Enregistrez le script suivant
storage-autounmount.sh
dans/lib/udev/
et rendez-le exécutable (sudo chmod a+x /lib/udev/storage-autounmount.sh
):2 - Création de la
udev
règle pour attacher ces scripts aux événementsEt enfin, ajoutez une
udev
règle/etc/udev/rules.d/
, par exemple85-storage-automount.rules
:et lui faire avoir les mêmes autorisations que les autres règles dans ce dossier dir /
Maintenant, lorsque vous branchez un périphérique de stockage, un répertoire sera créé en
/media/
fonction du nom de la partition (je ne me souviens pas, mais je pense que cela fonctionne également avec la partition NTFS) et votre partition y sera montée. C'est R / W pour les utilisateurs si vous avez unplugdev
groupe sur votre système. De plus, les appareils sont montés en mode synchrone afin de limiter les risques de perte de données en cas de débranchement à chaud.Lorsque le périphérique est supprimé, il est démonté et le répertoire est supprimé de
/media
De plus, l'outil pour surveiller les
udev
événements estudevadm monitor
, avec des options comme--env
ou--property
:Ceci est testé et fonctionne très bien sur Debian et Arch, mais fonctionne probablement sur toutes les distributions qui en dépendent
udev
.la source
udev
?Je pense que c'est assez tard mais je posterai ceci si quelqu'un en a besoin: (aussi ma première réponse StackExchange)
Après avoir vérifié la solution dans de nombreux endroits, j'ai trouvé une solution simple dans Arch Wiki:
Lien vers Arch Wiki .
Nous pouvons ajouter une règle udisks2 pour changer le répertoire de montage par défaut de
/run/media/$USER/
à/media/<Label>
.Ajoutez la règle suivante
/etc/udev/rules.d/
avec un nom comme99-udisks2.rules
:ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"
Ensuite, nous pouvons simplement installer un outil simple comme Udiskie pour le montage automatique .
la source
Veuillez consulter la page ArchWiki Udev . Vous n'êtes pas censé exécuter
mount
partir de règles Udev ou à partir de scripts exécutés par des règles Udev.Cependant, comme le montre le projet udev-media-automount , il est assez simple de le faire en appelant une unité Systemd à partir de la règle Udev, qui appelle ensuite un script qui fait le montage. Contrairement à udisks2 et à d'autres solutions, udev-media-automount est conçu pour le cas simple où vous souhaitez monter quelque chose en tant
root
qu'utilisateur sans nécessairement attendre qu'un environnement de bureau ou une "session utilisateur" soit présent. Cela semble être exactement ce que le PO demande, et je l'ai trouvé fonctionnel et facile à comprendre.la source
J'ai trouvé un moyen de le faire en éditant le fichier / etc / fstab. Une entrée simple ressemble à:
/dev/sdb1 /media/robot/hdd1 ntfs defaults 0 0
<file system> <mount point> <type> <options> <dump> <pass>
la source
/etc/fstab
ne sont montés automatiquement qu'au démarrage.