如何获取特定文件的文件系统信息?


8

找出有关文件的文件系统信息的最佳方法是什么。

例如,如果我有一个文件

/media/xyz/path/to/file.ext

并且/etc/fstab包含

//server1/Share1 /media/xyz cifs option1=value1,...

如何确定文件在Samba共享上,是否具有本地路径/path/to/file.ext以及文件系统的挂载选项?

正在解析mount便携式解决方案的输出吗?还是解析findmnt?是否有符合POSIX的方法来实现?


df /path/to/file应该显示分区或挂载。
thrig

感谢@thrig,这是第一步。从那里获取诸如挂载选项之类的信息的最佳方法是什么?
kba与莫妮卡站在一起

在Linux上,我可以解析/proc/mounts。是否有BSD / OSX兼容的方法来实现相同的目的?
kba与莫妮卡站在一起

仅仅通过查看文件?你不能!如果是类unix的操作系统,那么它的优点是,应用程序可以使用路径访问它们,而无需考虑它们的物理位置
Edward Torvalds

@edwardtorvalds不,不仅仅是查看文件,这就是为什么我询问解析mount等以获取文件系统和选项等的原因。我仍然不确定在* BSD和OSX中找到此信息的最佳方法。我还没有时间来处理需要此操作的库,但是一旦我这样做,就会反馈。从我看来,mount -P在Linux / BSD上似乎相当可靠。
kba与莫妮卡站在一起

Answers:


1

stat(1)是一种可移植的方式来查找其中一些信息,例如:

stat --file-system --format="%T" /media/xyz/path/to/file.ext

其他所有东西都是特定于操作系统的,在最近的Linux系统上,您可以轻松地findmnt --output在脚本中使用。


stat也是特定于操作系统的。
don_crissti

0

如果我正确地理解了您的需求,并且结合了先前的回答,那么以下内容可能就是您所需要的。在脚本中定义(例如,在.bashrc中)-

findpart ()
{
df -h $1|sed 1d|cut -d" " -f1|xargs findmnt -n
}

然后您可以根据需要运行它

findpart /foo/file.ext

findmnt不需要所有这些东西,它可以自己完成所有操作
don_crissti

从理论上讲,是的。实际上,我无法使-T在centos 6上运行,而此解决方案可以。
吉尔·沙巴泰
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.