2008-11-17 11 views

Antwort

13

stat -f -c %T <filename> sollte tun, was Sie wollen. Möglicherweise möchten Sie auch -l

+2

Wiederum nicht tragbar zu Solaris (obwohl ich den Befehl auf dem Computer habe, ist es kein Standardproblem). –

2

Sie können "df -T" verwenden, um den Dateisystemtyp für das Verzeichnis abzurufen, oder die Option -t verwenden, um die Berichterstellung auf bestimmte Typen (z. B. nfs) zu beschränken, und wenn "keine Dateisysteme verarbeitet" zurückgegeben wird. dann ist es nicht einer von denen, nach denen du suchst.

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

Nicht tragbar - "df -T" funktioniert z. B. nicht mit Solaris. –

+0

Wenn alle Netzwerk-Dateisysteme die Host-Pfad-Semantik für den Gerätenamen verwenden, dann können Sie nach folgendem suchen: im Gerätenamen oder etwas in diesem Sinne. –

0

Auf einigen Systemen ist die Gerätenummer für NFS-Dateien negativ. So

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

Wenn Sie df auf einem Verzeichnis Informationen erhalten nur von dem Gerät es sich befindet, die z.B. für das aktuelle Verzeichnis:

df . 

Dann können Sie einfach die Ausgabe analysieren, z.

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

, um den Gerätenamen zu erhalten.

1

ich getestet habe folgende auf solaris7,8,9 & 10 und es scheint zuverlässig zu sein

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

sollten Sie den fs-Typen haben, anstatt zu versuchen eine entsprechen „host: Pfad“ in Ihr Mount-Punkt.