Unix/Mac [bash/c api]: Erkennen, ob ein bestimmter Pfad auf eine Datei auf einem Wechseldatenträger verweist

Unix/Mac [bash/c api]: Erkennen, ob ein bestimmter Pfad auf eine Datei auf einem Wechseldatenträger verweist

Gibt es einen *nix-Befehl oder eine C-API, die den Typ des Speichergeräts anhand des Pfads zur Datei angibt (Auflösen der Mounts, Symlinks usw.)? Ich muss herausfinden, ob sich die Datei auf einem Wechseldatenträger befindet.

Antwort1

Ich weiß nicht, ob „find“ ausreicht, um das Speichergerät anzuzeigen:

find /path/to/your/file.xml -printf "%F"

aus der Manpage:

 %F     Type of the filesystem the file is on; this value can be used for -fstype.

Eine andere Idee ist „stat“

stat /home/stefan/.shosts  
  File: `/home/stefan/.shosts'
  Size: 12          Blocks: 8          IO Block: 4096   regular file
Device: 807h/2055d  Inode: 89647       Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/  stefan)   Gid: ( 1000/  stefan)
Access: 2011-04-11 10:24:21.000000000 +0200
Modify: 2011-03-30 14:45:29.000000000 +0200
Change: 2011-03-30 14:46:03.000000000 +0200

Es gibt eine Zeile „Device:“, aber ich weiß nicht, was ich damit machen soll. Vielleicht finden Sie es heraus?

Antwort2

Einige *nix-Implementierungen verfügen möglicherweise über ein cooles Tool, aber es wäre nicht allzu schwierig, die Ausgabe von mount(1) zu verwenden, um eine Datei und ihr Dateisystem zu korrelieren:

mfe@inker:/home/mfe$ mount
...
/media/WINXP_PRO_SP1 on /dev/dsk/c4t0d0s2 read only/nosetuid/nodevices/noglobal/maplcase/joliet/traildot/dev=14c0002 on Thu Apr  7 07:39:29 2011

Abgesehen von Hinweisen im Mount-Namen muss jede Datei, die ich unter /media/WINXP_PRO_SP1 finde, auf der DVD-ROM sein.

Antwort3

Wenn halinstalliert ist, können Sie beispielsweise lshaldie Ausgabe von scrapen.

verwandte Informationen