Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么发现-inum遍历整个文件系统树?

为什么发现-inum遍历整个文件系统树?
EN

Unix & Linux用户
提问于 2014-10-11 08:24:07
回答 3查看 1.9K关注 0票数 1

当我执行一个简单的文件系统时,看到find iterate/遍历完整的文件系统,这让我感到惊讶。

find -inum 12345

没有背景信息,在我看来,应该有更容易的方法来告诉所有的文件与这个特定的inode 12345 (这只是一个占位符这里)?

有什么更好的方法吗?它不需要检查文件系统的所有目录结构,只需判断哪个文件名与inode相关?

更新

还有一个问题是解决快速查找哪个文件(S)属于特定的inode编号.问题的,目的是找到更好(更快)的方法。

这个问题更直接的是,首先要知道为什么会出现这样的问题?可能有一个很好的理由与权限等相关,这将使用户故意难以避免遍历目录结构来查找所有文件名到inode。

然而,似乎很奇怪,任何文件系统都会遇到这样的问题,将所有文件名告诉inode (至少是特权root)用户。

我最感兴趣的文件系统是ext4。

EN

回答 3

Unix & Linux用户

发布于 2014-10-11 10:34:20

最简单的原因是,至少对于ext2 2/ext2 3/ext2 4类型的文件系统,文件名是通过存储在目录类型文件中的目录条目数据来存储的。

这意味着来自类型目录的文件有一个或多或少复杂的系统来存储文件名(目录中的文件)和指向这些文件的数据的inode。

稍微简化(ext3 3/4使用哈希表增强,以加快目录树遍历等.)它看起来像这样的一个清单:

代码语言:javascript
运行
AI代码解释
复制
## filenames ##    ## inode-numbers ##
filename1            0123
filename2            01242
anotherfilename      3313
yetanotherfilename   11233

基本上,文件名只发生在与direcotry文件相关的数据中,而不是存储在文件系统存储的/inode元数据中的任何地方。因此,获取与inode编号相关的文件名的唯一方法是遍历所有目录文件的所有目录条目。

票数 2
EN

Unix & Linux用户

发布于 2014-10-12 14:16:06

你写道:

当我执行一个简单的find -inum 12345时,看到find /遍历完整的文件系统,这让我感到惊讶。

根据定义,find从给定的目录开始遍历树,而默认的起始目录为.

find -inum 12345将从当前工作目录开始遍历整个目录树。除非.碰巧包含文件系统挂载点,否则它可能不会遍历整个文件系统。

有更有效的方法可以在链接到的答案中找到具有给定inode号的所有文件-- fsdbdebugfsncheck --但是由于标准find必须执行树遍历。注意,如果您要查找的inode只有一个链接,您可以给find -quit选项(如果它支持它),以便在第一次匹配之后结束树的遍历。

即使这些其他命令也不总是快速的,部分原因是它们必须查看整个文件系统,而不仅仅是目录树,但是它们会尽最大努力处理可使用的数据。基本问题是大多数Unix文件系统的结构。

  • 在一个文件的inode中有很多信息,但是“文件的名称”和“包含文件的目录”不在其中。
  • 大多数Unix文件系统上目录的结构非常简单:它只包含一个条目列表,每个条目都是(inode编号,文件名)对。
  • 要查找包含inode 12345的目录以及这些目录所引用的名称,在大多数Unix文件系统上,这些命令必须搜索文件系统上每个目录的每个条目,直到找到所有匹配的条目。一个文件的inode包含引用它的目录条目的数量,所以一旦他们发现了许多条目,他们就可以退出搜索。
  • 相反,查找目录的名称要高效得多,因为每个目录都包含父目录..的inode编号,因此只需要搜索一个目录就可以找到匹配的条目。(有一个例外:文件系统的根目录有一个指向同一目录的..条目。)
票数 1
EN

Unix & Linux用户

发布于 2019-04-08 20:38:12

一个简单的答案可能是类比。

想象一下,在电话簿上搜索一个电话号码而不是一个名字。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/160573

复制
相关文章
PHP解析json、xml错误
解析json php内置函数json_decode() 可以解析json字符串 但是有的时候看起来正确的json,解析却一直返回null。 你知道吗,json是可能解析失败的,此时PHP不会产生提示。 我们需要手动通过json_last_error()函数获取 function json_decode_siam($string, $mark = false){ $data = json_decode($string, $mark); switch (json_last_error()) {
宣言言言
2019/12/15
2.5K0
Android 创建与解析XML(六)—— 比较与使用
其中,从处理方式看,有的采用了Java处理XML的标准方式,有的是经过第三方改进后的XML处理方式;从事件角度看,有的是基于Dom树节点,有的基于事件处理
阳光岛主
2019/02/19
9530
xml的解析
   XmlDocument doc=new XmlDocument();    StringReader sr=new StringReader(textBox1.Text);    XmlTextReader rd=new XmlTextReader(sr);    while(rd.Read())    {     //textBox2.Text +=rd.NodeType.ToString()+"\r\n";     if(rd.NodeType.ToString()=="Element")    
用户1075292
2018/01/23
3.6K0
XML的解析
昨天说了JSON解析,今天来看一下XML解析。在开发中需要对xml解析也是很常见的,跟JSON一样,大同小异。
一头小山猪
2020/04/10
3.1K0
Confluence 6 找到在创建 XML 备份的时候出现的错误
错误可能是因为数据库突然不可访问而产生。如果你在你的日志中看到了错误  'Couldn't backup database data' ,这个指南将会帮助你更正这个错误。我们强烈推荐你备份 Confluence 数据库和 Confluence 的 home 目录这种备份方式来备份你的 Confluence 服务器。你可以使用 Restoring Data from other Backups 的方法来恢复你的备份,如果需要的话。如果你对数据库 SQL 并不熟悉的话,我们建议你联系你的数据库管理员来获得相关的帮助。
HoneyMoose
2019/01/31
1.1K0
Android 创建与解析XML(一)—— 概述
Android 是最常用的智能手机平台,XML 是数据交换的标准媒介,Android 中可以使用标准的XML生成器、解析器、转换器 API,对 XML 进行解析和转换。
阳光岛主
2019/02/19
1.3K0
使用Python进行XML解析
XML 指可扩展标记语言(eXtensible Markup Language),常被设计用来传输和存储数据。 在进行医学图像标注时,我们常使用XML格式文件来存储标注,以下展示了使用Python来提取标注的坐标值。
范中豪
2020/07/14
1.3K0
使用 Javascript 解析 XML:jParse
jParse 是一个 jQuery 插件,它能够用来解析上通过 jQuery .ajax 方法加载的的 XML 文件。jParse 非常容易使用,大小只有 2KB,非常轻量级,并且在所有的主流浏览器上都兼容。(Firefox 1.5+,Safari 3+,Chrome 3,Internet Explorer 6+,Opera 9+)。
Denis
2023/04/16
6250
Android 创建与解析XML(三)—— Sax方式
SAX是一种占用内存少且解析速度快的解析器,它采用的是事件启动,不需要解析完整个文档,而是按照内容顺序看文档某个部分是否符合xml语法,如果符合就触发相应的事件,所谓的事件就是些回调方法(callback),这些方法 定义在ContentHandler中,下面是其主要方法: startDocument():当遇到文档的时候就触发这个事件 调用这个方法 可以在其中做些预处理工作,如:申请对象资源
阳光岛主
2019/02/19
9360
【C#】创建、解析 xml 文件(XmlDocument 方式)
本文使用 System.Xml 中的 XmlDocument 解析 xml 格式的文件。另外,由于我是粗略的看了下官方文档和一些博客,可能会有许多错误的地方,望指出。
全栈程序员站长
2022/09/06
1.7K0
Android 创建与解析XML(二)—— Dom方式
Dom方式创建XML,应用了标准xml构造器 javax.xml.parsers.DocumentBuilder 来创建 XML 文档,需要导入以下内容
阳光岛主
2019/02/19
6530
Android 创建与解析XML(四)—— Pull方式
Android系统中和创建XML相关的包为org.xmlpull.v1,在这个包中不仅提供了用于创建XML的 XmlSerializer,还提供了用来解析XML的Pull方式解析器 XmlPullParser
阳光岛主
2019/02/19
1.4K0
golang的xml、json解析
xml golang的xml处理主要应用Unmarshal、Marshal方法实现,解析一个xml到struct如下,首先是xml文件: <?xml version="1.0" encoding="u
用户1141560
2017/12/26
3K0
golang的xml、json解析
Java解析XML的实践
通过这段代码,重点是需要理解他的解析过程,就可以根据实际用到的XML格式,写出对应的解析逻辑。
bisal
2023/02/16
1K0
XML解析器(TinyXML)的使用指南
XML解析器(TinyXML)的使用指南 关于XML文件的解析方法的引导, 大家可以去试试这个工具(TinyXML) 1.首先下载TinyXML库的文件,这里给出链接,大家自己去下吧,记着要上国际
用户3519280
2023/07/06
1.1K0
java解析XML的方法
1.DOM 实现方法 xml文件 <?xml version="1.0" encoding="utf-8"?> <Accounts> <Account type="type1">
HUC思梦
2020/09/03
1.1K0
xml解析---Java解析xml文件
dom4j解析xml文件、之前用下面的方法,90M的xml,500万行,解析完插入数据库,单线程,不到1小时搞定,而只是解析数据,只用了7秒。
IT云清
2019/01/22
7.1K0
Java解析XML(一) 使用DOM读取XML文件
DOM 是最容易使用的java XML解析器。它可以解析一个完整的XML文档并将其加载到内存中,然后用对象对其进行建模,以实现简单的node遍历。DMO是将XML直接加载到内存中进行处理的,所以不建议解析较大的XML文件。
青山师
2023/05/05
1.4K0
java xml解析框架_JAVA解析xml的五种方式对比
本篇文章主要对比Java即系xml的五种方式,这五种方式各有利弊,大家可以看情况采用哪一种。
全栈程序员站长
2022/09/05
1.7K0
点击加载更多

相似问题

Vuex状态变化传播

11

Vuex,动作中的状态变化

14

Vuex状态与Firebase同步

12

VueJS Vuex -承诺解决状态变化?

20

如何正确观察Vuex中的状态变化?

112
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文