Unix/Mac [bash/c api]: detecta se um determinado caminho aponta para um arquivo em um dispositivo removível

Unix/Mac [bash/c api]: detecta se um determinado caminho aponta para um arquivo em um dispositivo removível

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 halestiver instalado, você poderá, por exemplo, raspar a lshalsaída do.

informação relacionada