【问题标题】:Learning the directory's physical disk on Linux with Python使用 Python 在 Linux 上学习目录的物理磁盘
【发布时间】:2011-03-02 18:05:36
【问题描述】:

首先,对不起我的英语不好。

我正在编写一个 python 脚本,它比较两个不同目录中的文件。但是为了性能,我想知道:“目录是否在同一个物理磁盘上?”,所以我可以同时读取它们以获得性能提升。

我目前的想法是获取“mount”命令输出,获取 /dev/sd* 目录路径并使用它们来识别磁盘。但有时你可以在其他地方挂载一个已经挂载的目录(或者类似的东西,我不太确定),所以事情变得复杂了。

有没有更好的方法来做到这一点,比如图书馆?

(如果有跨平台的方式,我会更感激的,但是这样的跨平台库似乎很难找到。)

【问题讨论】:

  • 您是否假设不涉及 NAS 或 SAN。
  • 我真的不知道有什么:)。

标签: python linux


【解决方案1】:

你正在寻找来自 linux 的 stat 函数,它也是由 python 提供给你的(见http://docs.python.org/library/os.html#os.stat)。

您必须从结果结构中比较 st_dev,如果它们匹配,两个文件将位于同一文件系统上。

使用此功能尽可能便携(比 mount 或 df 更好)。

奖励:您不必运行昂贵的 exec 调用并进行容易出错的文本解析。

【讨论】:

  • 谢谢!它也是跨平台的,非常适合我:)。
  • 是的。每个文件系统在挂载时都有不同的设备 ID;它驻留在哪里(在本地磁盘、内存中 - 例如 tmpfs - 或网络上的另一台计算机上)并不重要。
【解决方案2】:

使用mount 的更简单的替代方法可能是调用df <directory>

这会打印出文件系统。此外,在我的 Ubuntu 机器上,将 -P 传递给 df 会使输出更易于解析。

【讨论】:

  • 我不知道“df [目录]”,谢谢,这样更容易(+1 :))。但我认为仍然有比运行命令并解析它的输出更好的方法。
  • 看过df的源代码后,我对此表示怀疑。不过我很想被证明是错的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 2020-03-27
  • 2012-12-28
  • 2013-10-05
  • 1970-01-01
  • 2012-06-04
  • 1970-01-01
相关资源
最近更新 更多