2008-11-17 15 views

Respuesta

13

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

+2

De nuevo, no es portátil para Solaris (aunque tengo el comando en la máquina, no es un problema estándar). –

2

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

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

No portátil - 'df -T' no funciona en Solaris, por ejemplo. –

+0

Si todos los sistemas de archivos de red usan la semántica de ruta de host: para el nombre del dispositivo, entonces supongo que puede verificar: en el nombre del dispositivo o algo similar. –

0

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

print "remote" if (stat($filename))[0] < 0 
2

Si utiliza df en un directorio para obtener información única del dispositivo que reside en, por ejemplo, para el directorio actual:

df . 

Luego, puede analizar la salida, p.

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

para obtener el nombre del dispositivo.

1

He probado lo siguiente en solaris7,8,9 & 10 y parece ser fiable

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

debe dar usted tiene el tipo FS en lugar de tratar de igualar para un "host: ruta" en tu punto de montaje

Cuestiones relacionadas