Frage

Gibt es eine schnelle und unsaubere Weise programmatisch zu sagen, in Shell-Skript oder in Perl, ob ein Pfad auf einem Remote-Dateisystem (NFS oder dergleichen) oder einer lokal ist? Oder ist der einzige Weg, dies zu tun, um zu analysieren, / etc / fstab und überprüfen Sie den Dateisystem-Typen?

War es hilfreich?

Lösung

stat -f -c %T <filename> sollte das tun, was Sie wollen. Vielleicht haben Sie auch -l wollen

Andere Tipps

Sie können „df -T“ verwenden, um den Dateisystemtyp für das Verzeichnis zu erhalten, oder die Option -t verwenden Berichterstattung auf bestimmte Arten zu begrenzen (wie nfs), und wenn es darum geht, wieder mit „keinen Dateisystemen verarbeitet“, dann es ist nicht einer von denen, die Sie suchen.

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

Wenn Sie df auf einem Verzeichnis Informationen erhalten nur der Vorrichtung liegt es in z.B. für das aktuelle Verzeichnis:

df .

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

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

Sie die Gerätenamen erhalten.

Ich habe folgend auf solaris7,8,9 getestet und 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 der Mount-Punkt

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

print "remote" if (stat($filename))[0] < 0
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top