![Unix/Mac [bash/c api]: detecta si una ruta determinada apunta a un archivo en un dispositivo extraíble](https://rvso.com/image/1271995/Unix%2FMac%20%5Bbash%2Fc%20api%5D%3A%20detecta%20si%20una%20ruta%20determinada%20apunta%20a%20un%20archivo%20en%20un%20dispositivo%20extra%C3%ADble.png)
¿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 hal
está instalado, podría, por ejemplo, raspar lshal
la salida.