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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top