如何从目录中列出最近删除的文件?

我甚至不确定这是否容易,但我想列出最近从目录中删除的文件,如果可能的话recursion。

我正在寻找一种解决scheme,不需要创build包含原始目录结构的快照的临时文件,因为写入访问可能不总是可用的。 编辑:如果可以通过将快照存储在shellvariables而不是文件中来实现相同的结果,那将解决我的问题。

就像是:

find /some/directory -type f -mmin -10 -deletedFilesOnly

编辑:操作系统:我使用的是Ubuntu 14.04 LTS,但是命令很可能运行在各种Linux机器或Docker容器中,其中大部分或全部应该使用ext4 ,而且我最有可能无法进行修改。

Solutions Collecting From Web of "如何从目录中列出最近删除的文件?"

您可以使用debugfs实用程序,

debugfs是一个简单易用的基于RAM的文件系统,专门用于调试目的

首先,在终端中运行debugfs /dev/hda13 (用你自己的磁盘/分区替换/dev/hda13 )。

(注意:您可以通过在终端中运行df /来查找磁盘的名称)。

一旦进入调试模式,您可以使用命令lsdel列出与删除的文件相对应的inode。

在Linux中删除文件时,它们只是未链接,但它们的inode(文件实际存在的磁盘中的地址)不会被删除

要获得这些被删除的文件的路径 ,你可以使用debugfs -R "ncheck 320236"替换你的特定节点的数字。

 Inode Pathname 320236 /path/to/file 

从这里你也可以检查与cat删除的文件的内容。 (注意:如果需要,您也可以从这里恢复)。

这里的伟大的职位。

感谢您的意见和答案的家伙。 debugfs对于最初的需求来说似乎是一个有趣的解决方案,但是对于我所期望的简单解决方案来说,它有点矫枉过正; 如果我理解正确,内核必须使用debugfs支持来构建,并且目标目录必须在debugfs挂载中。 不幸的是,这对我的使用情况并不适用。 我必须能够为现有的“基本”内核和目录提供解决方案。

由于这看起来实际上是不可能完成的,所以我已经能够协商并放宽要求,直到列出最近从目录中删除的文件的数量 ,如果可能的话递归地递归。

这是我最终实现的解决方案:

  1. 一个简单的find命令管道到wc目录目录(递归)的原始数量的计数。 然后可以很容易地将结果存储在shell或脚本变量中,而无需对文件系统进行写入访问。

DEL_SCAN_ORIG_AMOUNT=$(find /some/directory -type f | wc -l)

  1. 然后,我们可以再次运行相同的命令来获取更新的文件数量。

DEL_SCAN_NEW_AMOUNT=$(find /some/directory -type f | wc -l)

  1. 然后,我们可以将两者之间的差异存储在另一个变量中,并更新原始金额。

DEL_SCAN_DEL_AMOUNT=$(($DEL_SCAN_ORIG_AMOUNT - $DEL_SCAN_NEW_AMOUNT)); DEL_SCAN_ORIG_AMOUNT=$DEL_SCAN_NEW_AMOUNT

  1. 如果文件数量减少,我们可以打印一条简单的消息。

if [ $DEL_SCAN_DEL_AMOUNT -gt 0 ]; then echo "$DEL_SCAN_DEL_AMOUNT deleted files"; fi;

  1. 返回到第2步。

不幸的是,如果在一段时间内创建和删除了相同数量的文件,这个解决方案将不会报告任何内容,但这对我的用例来说并不是一个问题。

为了避免这种情况,我不得不存储实际的文件列表而不是数量,但是我还没有能够使用shell变量来完成这个工作。 如果有人能想出来,我会很大的帮助我,因为它会符合最初的要求!

我也想知道有没有人对这两种方法有任何评论。