Wie kann ich feststellen, ob eine Datei auf einem Remote-Dateisystem mit Perl ist?
-
08-07-2019 - |
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?
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