tools Come posso sapere se un file si trova su un filesystem remoto con Perl?




ubuntu inotifywait install (4)

Ho testato quanto segue su solaris7,8,9 e 10 e sembra affidabile

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

Dovresti darti il ​​tipo fs piuttosto che cercare di trovare un "host: path" nel tuo punto di mount.

C'è un modo rapido e sporco per dire programmaticamente, nello script di shell o in Perl, se un percorso si trova su un filesystem remoto (nfs o simile) o locale? O è l'unico modo per fare questo per analizzare / etc / fstab e controllare il tipo di filesystem?


Puoi usare "df -T" per ottenere il tipo di filesystem per la directory, o usare l'opzione -t per limitare il reporting a tipi specifici (come nfs) e se ritorna con "nessun file system processato", allora non è uno di quelli che stai cercando.

df -T $dir | tail -1 | awk '{print $2;}'

Su alcuni sistemi, il numero del dispositivo è negativo per i file NFS. Così,

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

Se si utilizza df su una directory per ottenere informazioni solo sul dispositivo in cui risiede, ad es. Per la directory corrente:

df .

Quindi, puoi solo analizzare l'output, ad es

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

per ottenere il nome del dispositivo.





nfs