Wie erhalte ich Dateisysteminformationen für eine bestimmte Datei?

8

Was ist der beste Weg, um Dateisysteminformationen zu einer Datei herauszufinden?

Zum Beispiel, wenn ich eine Datei habe

/media/xyz/path/to/file.ext

Und /etc/fstabenthält

//server1/Share1 /media/xyz cifs option1=value1,...

Wie kann ich feststellen, dass sich die Datei auf einer Samba-Freigabe befindet, dass sie den lokalen Pfad hat /path/to/file.extund mit welchen Optionen das Dateisystem bereitgestellt wurde?

Analysiert die Ausgabe mounteiner tragbaren Lösung? Oder analysieren findmnt? Gibt es eine POSIX-konforme Möglichkeit, dies zu erreichen?

kba steht bei Monica
quelle
df /path/to/filesollte die Partition oder Mount anzeigen.
Thrig
Danke @thrig, das macht den ersten Schritt. Was wäre der beste Weg, um Informationen wie Mount-Optionen von dort zu erhalten?
kba steht mit Monica
Unter Linux kann ich analysieren /proc/mounts. Gibt es eine BSD / OSX-kompatible Möglichkeit, dies zu erreichen?
kba steht mit Monica
nur durch das Betrachten von Dateien? du kannst nicht! Das ist das Schöne an Unix-ähnlichen Betriebssystemen, auf die Anwendungen unabhängig von ihrem physischen Standort über einen Pfad zugreifen können
Edward Torvalds,
@edwardtorvalds Nein, nicht nur beim Betrachten von Dateien, deshalb habe ich nach dem Parsen mountusw. gefragt, um das Dateisystem und die Optionen usw. zu erhalten. Ich bin mir immer noch nicht sicher, wie ich diese Informationen am besten in * BSD und OSX finden kann. Ich hatte keine Zeit, an der Bibliothek zu arbeiten, die dies erfordert, werde aber Feedback geben, sobald ich dies tue. Nach allem, was ich gesehen habe, mount -Pscheint es unter Linux / BSD ziemlich zuverlässig zu sein.
kba steht mit Monica

Antworten:

1

stat (1) ist eine tragbare Methode, um einige dieser Informationen herauszufinden, z.

stat --file-system --format="%T" /media/xyz/path/to/file.ext

Alles andere ist sehr betriebssystemspezifisch. Auf neueren Linux-Systemen können Sie es problemlos findmnt --outputin einem Skript verwenden.

Marco d'Itri
quelle
statist auch os-spezifisch.
don_crissti
0

Wenn ich Ihre Bedürfnisse richtig verstanden und Teile aus früheren Antworten kombiniert habe, könnten Sie Folgendes benötigen. im Skript definieren (zum Beispiel in Ihrer .bashrc) -

findpart ()
{
df -h $1|sed 1d|cut -d" " -f1|xargs findmnt -n
}

und dann können Sie es nach Bedarf ausführen

findpart /foo/file.ext
Gil Shabtai
quelle
findmntbraucht nicht all das Zeug, es kann das alles alleine machen
don_crissti
theoretisch ja. In der Praxis konnte ich -T nicht dazu bringen, an Centos 6 zu arbeiten, wohingegen diese Lösung dies tut.
Gil Shabtai