¿Cómo puedo saber si un archivo está en un sistema de archivos remoto con Perl?
-
08-07-2019 - |
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?
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