Pregunta

¿Hay una manera rápida y sucia de decir mediante programación, en el script de shell o en Perl, si una ruta se encuentra en un sistema de archivos remoto (nfs o similar) o local? ¿O es la única forma de hacer esto para analizar / etc / fstab y verificar el tipo de sistema de archivos?

¿Fue útil?

Solución

stat -f -c %T <filename> debería hacer lo que quieras. También es posible que desee -l

Otros consejos

Puede usar " df -T " para obtener el tipo de sistema de archivos para el directorio, o use la opción -t para limitar los informes a tipos específicos (como nfs) y si vuelve con " no se procesan sistemas de archivos " ;, entonces no es uno de los que estás buscando.

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

Si usa df en un directorio para obtener información solo del dispositivo en el que reside, p. para el directorio actual:

df .

Luego, puede analizar la salida, por ejemplo,

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

para obtener el nombre del dispositivo.

He probado lo siguiente en solaris7,8,9 & amp; 10 y parece ser confiable

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

Debería proporcionarle el tipo fs en lugar de intentar hacer coincidir un & "; host: ruta &"; en su punto de montaje.

En algunos sistemas, el número de dispositivo es negativo para los archivos NFS. Por lo tanto,

print "remote" if (stat($filename))[0] < 0
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top