Você pode produzir o tipo de sistema de arquivos que contém um determinado arquivo ou diretório usando
stat -f --format="%T" /path/to/file
e tome medidas com base nisso. Algumas saídas possíveis são cifs
, nfs
, afs
,… (presumido remoto) e ufs
, ext2/ext3
(sic-ext2, ext3 e ext4 possuem o mesmo número mágico do sistema de arquivos), btrfs
, tmpfs
,… (presumido local).
Uma coisa que pode ajudar você a decidir se um tipo de sistema de arquivos é local ou remoto: GNU coreutils, que inclui stat
e df
, tem uma noção de sistema de arquivos "local" e "remoto" para algumas dúzias de diferentes sistemas de arquivos tipos.
df -T -l | awk 'NR > 1 { print $2 }' | sort -u
produzirá os tipos de sistema de arquivos de todos os sistemas de arquivos montados que df
acredita serem locais.
Como apontado nos comentários sobre a pergunta original, é difícil dizer se um dispositivo de armazenamento é local; um sistema de arquivos ext3
em /dev/sdb5
pode estar em um dispositivo Fibre Channel, que pode ser conectado diretamente ou pode ter vários switches de rede distantes, o que é improvável que você consiga discernir usando utilitários padrão no nível do usuário.