Question

Existe-t-il un moyen simple et rapide d'indiquer, par programmation, en script shell ou en Perl, si un chemin est situé sur un système de fichiers distant (nfs ou similaire) ou sur un système local? Ou est-ce la seule façon de faire cela d'analyser / etc / fstab et de vérifier le type de système de fichiers?

Était-ce utile?

La solution

stat -f -c %T <filename> devrait faire ce que vous voulez. Vous voudrez peut-être aussi -l

Autres conseils

Vous pouvez utiliser & "df -T &"; pour obtenir le type de système de fichiers du répertoire, ou utilisez l'option -t pour limiter les rapports à des types spécifiques (tels que nfs) et s'il revient avec & "aucun système de fichiers traité &", alors ce n'est pas le cas. de ceux que vous recherchez.

df -T $dir | tail -1 | awk '{print $2;}'

Si vous utilisez df sur un répertoire pour obtenir des informations uniquement sur le périphérique dans lequel il réside, par exemple. pour le répertoire en cours:

df .

Ensuite, vous pouvez simplement analyser le résultat, par exemple

.
df . | tail -1 | awk '{print $1}'

pour obtenir le nom du périphérique.

J'ai testé les éléments suivants sur solaris7,8,9 & amp; 10 et il semble être fiable

/bin/df -g <filename> | tail -2 | head -1 | awk '{print $1}'

Devrait vous attribuer le type de fichier fs plutôt que d'essayer de le faire correspondre à un " hôte: chemin " dans votre point de montage.

Sur certains systèmes, le numéro de périphérique est négatif pour les fichiers NFS. Ainsi,

print "remote" if (stat($filename))[0] < 0
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top