![Unix/Mac [bash/c api]: detecta se um determinado caminho aponta para um arquivo em um dispositivo removível](https://rvso.com/image/1271995/Unix%2FMac%20%5Bbash%2Fc%20api%5D%3A%20detecta%20se%20um%20determinado%20caminho%20aponta%20para%20um%20arquivo%20em%20um%20dispositivo%20remov%C3%ADvel.png)
Existe um comando * nix ou API C que informará o tipo de dispositivo de armazenamento dado o caminho para o arquivo (resolvendo as montagens, links simbólicos, etc.)? Preciso descobrir se o arquivo reside em um dispositivo removível.
Responder1
Não sei se find é suficiente para revelar o dispositivo de armazenamento:
find /path/to/your/file.xml -printf "%F"
na página de manual:
%F Type of the filesystem the file is on; this value can be used for -fstype.
Outra ideia é 'estatí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
Existe uma linha 'Dispositivo:' mas não sei o que fazer a respeito. Talvez você descubra?
Responder2
Algumas implementações *nix podem ter uma ferramenta interessante, mas não seria muito difícil usar a saída mount(1) para correlacionar um arquivo e seu sistema de arquivos:
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
Além do nome da montagem, qualquer arquivo que eu encontrar em /media/WINXP_PRO_SP1 deve estar no DVD-ROM.
Responder3
Se hal
estiver instalado, você poderá, por exemplo, raspar a lshal
saída do.