【问题标题】:What's the order of deletion when I do "rm -rf data"? [closed]当我执行“rm -rf data”时,删除的顺序是什么? [关闭]
【发布时间】:2015-07-06 15:35:42
【问题描述】:

我不小心在一个巨大的目录中做了一个rm -rf data。我立即退出。

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

rm -rf 是如何删除文件的?

【问题讨论】:

  • 它按照您提供的任何通配符的顺序进行匹配,否则按照在解析目录文件时遇到的文件名的顺序。
  • 不检查我猜这是inode/directory entry order。找出缺少什么的最简单方法可能是步行寻找您期望在那里的东西,假设您可以做到这一点。
  • 嘿。显然是题外话(根本不是关于软件开发的问题——如果有人认为关于如何实现工具的问题是软件开发问题,那么任何使用问题都不能被讨论——出于这个原因的主题?),但一个非常好的答案。就个人而言,我会在unix.stackexchange.com 提交它。

标签: linux bash shell


【解决方案1】:

rm performs a depth-first search,遍历xfts_open 调用的结果。

FTS 是standard 在所有 Linux 工具中遍历文件的方法。您可以编写自己的fts consumer,或信任find 的输出,因为它也使用xfts_open

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

或者,您可以使用debugfs 来帮助您获取文件。

【讨论】:

    猜你喜欢
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    相关资源
    最近更新 更多