Est-il possible de déterminer le type d'un point de montage?
-
29-09-2019 - |
Question
J'ai un script bash
qui traite des fichiers sous Mac OS X 10.5 et 10.6. Il doit maintenant déterminer si les fichiers sont sur un volume local ou un volume AFP distant. Tous les points de montage sont /Volumes
sous Mac OS X, mais je ne vois aucune différence entre les volumes locaux et distants, au moins avec ls -al
(sauf pour le volume de démarrage, qui est un lien symbolique vers /
).
Y at-il un moyen de programatically, esp. quelque chose qui peut être facilement appelé à partir d'un script bash
(I vraiment ne veulent pas réécrire cela en C / Obj-C avec OS API spécifiques X, sauf si absolument nécessaire), pour déterminer la source ou le type d'un point de montage? Même ce dispositif un volume des cartes à (en supposant des volumes montés avec mount_afp
, mount_smbfs
, mount_webdav
, etc., ne pointera vers un appareil en /dev
) donc j'ai certains de deviner si façon il est local ou pas?
La solution
Du haut de ma tête, je ne crois pas qu'il y ait une API pour ce qui est commun à travers les plates-formes. Vous pouvez, analyser cependant la sortie de la commande mount
:
~$ mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
/dev/disk1s2 on /Users/nknight (hfs, local, nodev, nosuid, journaled, nobrowse)
mount
sans arguments a à peu près le même effet sur la plupart des systèmes * nix-ish, mais je ne crois pas que le format de sortie est normalisé partout.
Je vous encourage à repenser votre approche, cependant. Le point entier de systèmes de fichiers réseau est que les applications ne sont pas censés prendre soin d'eux. Songez à afficher une autre question expliquant ce que vous essayez d'accomplir en faisant cela. Quelqu'un peut-il offrir une solution probablement supérieure et plus généralisée.
Autres conseils
Est-ce que la plaine
$ mount
commande sans args supplémentaires vous dire ce que vous avez besoin?