perl shell filesystems nfs

¿Cómo puedo saber si un archivo está en un sistema de archivos remoto con Perl?



shell filesystems (5)

En algunos sistemas, el número de dispositivo es negativo para los archivos NFS. Así,

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

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


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;}''


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

df .

Entonces, puedes simplemente analizar la salida, por ejemplo

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

para obtener el nombre del dispositivo.


stat -f -c %T <filename> debe hacer lo que desee. También podrías querer -l


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

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

Debería indicarle que tiene el tipo fs en lugar de intentar hacer coincidir un "host: ruta" en su punto de montaje.