16 votes

Existe-t-il un moyen de monter un disque directement sur un dossier spécifique ?

Utilisation de Mac OS X 10.4

J'ai créé un script il y a un certain temps pour mon Linux afin de récupérer des données archivées sur 300 disquettes de façon automatisée. Je ferais une image de la disquette et copierais les fichiers directement à partir de la disquette. J'ai réussi à installer Xcode sur la machine (pour installer ddrescue)

La chose est que sur un Linux, je montais chaque disquette sur /media/floppy et je la démontais pour faire un ddrescue et la copier directement sur un lecteur USB.

Je tente de porter mon script sur le Mac, et il semble que son comportement par défaut est de monter automatiquement chaque disquette zip sur le dossier /Volumes, ce qui est bien, sauf qu'il utilise le nom du volume comme nom de dossier de point de montage. Donc si le nom du volume d'une disquette est : "Jimmy Bo Bobs" il montera sur /media/Jimmy /Bo /Bobs.

Ma question est donc que je dois obtenir le nom du volume soit cohérent pour un nom, soit adaptable au nom du volume.

Donc ma question initiale est puis-je d'une manière ou d'une autre monter un lecteur sur un dossier spécifique, comme je le ferais normalement sous Linux ?

 #Linux
 mount /dev/sd1 /media/floppy
 #Mac
 diskutil mount /dev/disk1s1 /media/floppy #Ne fonctionne pas

Si ce n'est pas possible, y a-t-il un moyen facile d'extraire le nom du volume afin que je puisse ensuite lier le script de cette manière ?

 Volumename=Jimmy Bo Bobs
 faire des choses sur /Volume/$Volumename

Je suppose que si ce n'est pas possible, je devrai utiliser la commande mount pour le pointeur /dev/ et ensuite analyser cette chaîne ce que je veux éviter car cela nécessiterait encore plus de recherche.

0 votes

Avez-vous vérifié l'option [-point de montage chemin] pour diskutil ?

0 votes

Le fichier d'aide et le manuel n'en parlent pas, je vais regarder sur google...

0 votes

Voici mon homme : "mount [readOnly] [-mountPoint path] device Montez un seul volume. Si readOnly est spécifié, le système de fichiers est monté en lecture seule, même si le système de fichiers sous-jacent, l'appareil et/ou le support du volume prend en charge l'écriture; même le super-utilisateur ne peut pas écrire dessus; c'est la même chose que l'option rdonly pour monter (8). Si un -mountPoint est spécifié, alors ce chemin, plutôt que le chemin standard /Volumes/VolumeName, sera utilisé comme vue dans le contenu du fichier du volume; un répertoire à ce chemin doit déjà exister."

11voto

Trane Francks Points 2305

Oui, vous pouvez monter un lecteur sur un dossier spécifique. La seule condition est que l'utilisateur qui monte le volume doit être le propriétaire du point de montage. Vous n'avez PAS besoin d'être root ou d'utiliser sudo pour monter un disque.

La première chose à faire est d'identifier votre périphérique brut. diskutil list le fera bien.

Par exemple, si j'ai une clé USB FAT32 que je veux monter dans mon répertoire home, je liste mes périphériques et je vois que mon périphérique brut est /dev/disk5s1. En tant qu'utilisateur normal, je peux le monter dans mon répertoire home en utilisant :

mkdir ~/mount
mount -r -t msdos /dev/disk5s1 ~/mount

Si vous faites ensuite cd ~/mount ; ls, vous verrez le contenu de la clé USB.

Dans cet exemple, je l'ai monté en lecture seule, mais vous pouvez monter votre périphérique de la manière qui vous convient.

Lorsque vous avez terminé avec le périphérique, n'oubliez pas de le démonter, par exemple :

diskutil unmount ~/mount

0 votes

SUCCÈS!!! mount -t hfs /dev/disk1s4 ~/mountpoint/

1 votes

Il y a-t-il un moyen pour que cela se fasse automatiquement chaque fois que je connecte le même lecteur?

0 votes

@rmp251, Je ne pense pas qu'il y ait moyen d'automatiser cela. Cependant, vous pourriez peut-être créer un script que vous pourriez exécuter pour monter le lecteur en ne faisant rien de plus qu'un double-clic. En supposant que vous montiez régulièrement un seul lecteur, il devrait obtenir le même nom de périphérique à chaque fois que vous le montez.

5voto

Hobo_warrior Points 911

Cela est décrit dans les commentaires, mais cela devrait être mis dans une réponse. Dans MacOS 10.11.6 (et probablement dans les versions ultérieures), vous pouvez utiliser

diskutil mount -mountPoint ~/mount /dev/disk5s1

Contrairement à l'utilisation de mount, il n'est pas nécessaire de spécifier le type de système de fichiers, du moins pour les disques de type hfs (tous ceux que j'ai essayés).

J'ai constaté que je devais passer en root avec sudo pour faire cela en utilisant soit mount comme dans la réponse de @TraneFranks, soit avec diskutil mount comme ci-dessus, même si je suis propriétaire du répertoire de point de montage. Je ne comprends pas pourquoi sudo est nécessaire. En utilisant diskutil mount sans -mountPoint, le disque est monté dans un emplacement par défaut dans /Volumes et je n'ai pas besoin d'être root. Cependant, je recommande de garder à l'esprit que sudo pourrait être nécessaire, car le message d'erreur sans lui est mystérieux.

1voto

Rich Points 11

Script :

#!/bin/bash

# Ceci est le nom du lecteur tel que vous le verriez dans le Finder
volname=

# Point de montage que vous souhaitez lui attribuer.
mountPoint=/Users//extra

function remount() {
  sudo diskutil unmount "$vol"
  sudo diskutil mount -mountpoint "$mountPoint" "$vol"
  exit 0
}
vol=$(diskutil list | grep "$volname" | awk '{print $7}')
mount | grep "$vol" | grep "/Volumes/$volname" > /dev/null && remount

Ce que je fais, c'est simplement ajouter une tâche cron qui s'exécute toutes les minutes. Il y a très peu de ressources système utilisées lorsque rien n'est à faire, alors exécutez-la toutes les minutes. S'il la trouve, il la remappe à l'emplacement approprié.

* * * * *  > /dev/null 2>&1

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X