当我执行"rm -rf data"命令时,删除的顺序是什么?

4

我不小心在一个巨大的目录中执行了rm -rf data,然后立即退出。

该目录具有简单的结构(它们都是按日期分组的子目录,如2015/07/06),但该目录很大,我不想重新生成整个目录。如果我知道rm如何删除文件,我可以找到并仅恢复丢失的文件。

rm -rf如何删除文件?


1
返回翻译后的文本:它按照任何通配符提供的顺序进行匹配,否则按照目录文件解析时遇到的文件名顺序进行匹配。 - Marc B
1
不检查的话,我猜这是inode/目录条目顺序。而找出缺少什么最简单的方法可能就是只需按照你期望的去遍历它,假设你能够这样做。 - Etan Reisner
1
呵。这显然是一个与软件开发毫不相关的问题(如果有人争辩关于工具实现的问题是一个软件开发问题,那么任何使用问题都可以因此成为相关话题吗?),但回答确实很好。就我个人而言,我会将其归档到http://unix.stackexchange.com/。 - Charles Duffy
1个回答

8

rm执行深度优先搜索,遍历xfts_open调用的结果。

FTS是所有Linux工具中文件遍历的标准方式。您可以编写自己的fts消费者,或者相信来自find的输出,因为它也使用了xfts_open

find .将列出存在的文件。然后,您可以利用对缺失文件的预期结构的了解来反转列表。

或者,您可以使用debugfs帮助您访问这些文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接