是否有一个 *nix 命令或 C api 可以根据文件路径 (解析挂载、符号链接等) 告知存储设备的类型?我需要查明文件是否位于可移动设备上。
答案1
我不知道 find 是否足以显示存储设备:
find /path/to/your/file.xml -printf "%F"
来自手册页:
%F Type of the filesystem the file is on; this value can be used for -fstype.
另一个想法是“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
有一行“Device:”,但我不知道该怎么做。也许你能找到答案?
答案2
一些 *nix 实现可能有一个很酷的工具,但使用 mount(1) 输出来关联文件及其文件系统并不太难:
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
除了安装名称中的赠品之外,我在 /media/WINXP_PRO_SP1 下找到的任何文件都必须放在 DVD-ROM 上。
答案3
如果hal
已安装,您可以例如抓取lshal
的输出。