2010-11-29 14 views
1

J'ai un script bash qui traite des fichiers sous Mac OS X 10.5 & 10.6. Il doit maintenant déterminer si les fichiers se trouvent sur un volume local ou un volume AFP distant. Tous les points de montage sont dans /Volumes sur Mac OS X, mais je ne vois pas de différence entre les volumes distants locaux &, au moins avec ls -al (à l'exception du volume de démarrage, qui est un lien symbolique vers /).Est-il possible de déterminer le type d'un point de montage?

Existe-t-il un moyen de programmer, esp. quelque chose qui peut être facilement appelé à partir d'un bash script (I vraiment ne veulent pas réécrire cela dans C/Obj-C avec des API spécifiques à OS X, sauf si absolument nécessaire), pour déterminer le source ou le type d'un point de montage? Même avec quel périphérique un volume est mappé (en supposant que les volumes montés avec mount_afp, mount_smbfs, mount_webdav, etc., ne pointera pas sur un périphérique dans /dev), donc j'ai certains de deviner s'il est local ou non?

+0

Qu'est-ce que vous obtenez avec 'fichier/Volumes/*'? – chrisaycock

+0

Il n'y a rien de spécial à propos d'un point de montage lui-même, mais je suppose que vous voulez savoir quelque chose sur la chose qui y est montée. –

Répondre

2

Je ne crois pas qu'il existe une API commune à toutes 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 cependant à repenser votre approche. L'intérêt des systèmes de fichiers réseau est que les applications ne sont pas supposées s'en préoccuper. Pensez à publier une autre question expliquant ce que vous essayez d'accomplir en faisant cela. Quelqu'un peut probablement offrir une solution supérieure et plus généralisée.

+0

Exactement ce que j'avais besoin de savoir et je peux définitivement analyser ce dont j'ai besoin (le type FS) hors de la sortie. J'apprécie l'encouragement de repenser mon approche, heureusement que c'est un script 'bash' spécifique à Mac OS X, donc je n'ai qu'à m'inquiéter de la compatibilité entre les versions de Mac OS X. – morgant

2

Est-ce que la commande simple

$ mount 

sans args supplémentaires vous dire ce que vous avez besoin?