Unix/Mac [bash/c api]: detecta si una ruta determinada apunta a un archivo en un dispositivo extraíble

Unix/Mac [bash/c api]: detecta si una ruta determinada apunta a un archivo en un dispositivo extraíble

¿Existe un comando *nix o API de C que indique el tipo de dispositivo de almacenamiento dada la ruta al archivo (resolviendo montajes, enlaces simbólicos, etc.)? Necesito saber si el archivo se encuentra en un dispositivo extraíble.

Respuesta1

No sé si buscar es suficiente para revelar el dispositivo de almacenamiento:

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

desde la página de manual:

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

Otra idea es 'estadística'

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

Hay una línea 'Dispositivo:' pero no sé qué hacer al respecto. ¿Quizás lo descubras?

Respuesta2

Algunas implementaciones de *nix pueden tener una herramienta interesante, pero no sería demasiado difícil usar la salida mount(1) para correlacionar un archivo y su sistema de archivos:

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

Dejando a un lado los obsequios en el nombre del montaje, cualquier archivo que encuentre en /media/WINXP_PRO_SP1 debe estar en el DVD-ROM.

Respuesta3

Si halestá instalado, podría, por ejemplo, raspar lshalla salida.

información relacionada