Como posso saber se um arquivo está em um sistema de arquivos remoto com Perl?
-
08-07-2019 - |
Pergunta
Existe uma maneira rápida e suja para dizer programaticamente, em shell script ou em Perl, se um caminho estiver localizado em um sistema de arquivos remoto (NFS ou semelhantes) ou um local? Ou é a única maneira de fazer isso para analisar / etc / fstab e verificar o tipo de sistema de arquivos?
Solução
stat -f -c %T <filename>
deve fazer o que quiser. Você pode também querer -l
Outras dicas
Você pode usar "df -T" para obter o tipo de sistema de arquivos para o diretório, ou usar a opção -t para relatórios limite para tipos específicos (como NFS) e se ele volta com "nenhum sistema de arquivo processados", em seguida, não é um dos que você está procurando.
df -T $dir | tail -1 | awk '{print $2;}'
Se você usar df
em um diretório para obter informações apenas o dispositivo que reside em, por exemplo, para o diretório atual:
df .
Em seguida, você pode apenas analisar a saída, por exemplo.
df . | tail -1 | awk '{print $1}'
para obter o nome do dispositivo.
Eu testei o seguinte em solaris7,8,9 & 10 e parece ser confiável
/bin/df -g <filename> | tail -2 | head -1 | awk '{print $1}'
Deve dar-lhe ter os fs digitar em vez de tentar corresponder a uma "host: path". Em seu ponto de montagem
Em alguns sistemas, o número do dispositivo é negativo para arquivos NFS. Assim,
print "remote" if (stat($filename))[0] < 0