是否有 UNIX 命令列出系统中最近删除的所有文件

Dig*_*ode 6 linux rm deleted-files

不小心rm -rf向我的根目录而不是当前目录启动了一个命令。我通过Ctrl+停止了文件删除,C但一些文件已经被删除。是否有一个 LINUX 命令可以列出所有最近从系统中删除的文件以获取受影响的应用程序?

操作系统:CentOS 6.3

Joh*_*024 10

*nix 系统通常安装了一个locate实用程序。它有一个数据库,通常每晚更新,其中包含系统上(几乎)所有文件的名称。赶紧跑:

locate /path/to/dir/of/interest
Run Code Online (Sandbox Code Playgroud)

您应该会看到自上次数据库更新时该目录中的文件列表。您可以将其与当前列表进行比较。

因为它将被新版本自动覆盖,所以您现在可以制作该数据库的备份副本。在受 debian 影响的系统上,它存储在/var/lib/mlocate/mlocate.db.

如何显示丢失的文件

  1. 备份旧数据库:

    cp /var/lib/mlocate/mlocate.db ~/old.db
    
    Run Code Online (Sandbox Code Playgroud)
  2. 更新数据库。执行此操作的命令可能会有所不同。在类似 debian 的系统上,尝试:

    sudo /etc/cron.daily/mlocate
    
    Run Code Online (Sandbox Code Playgroud)
  3. 获取目录的新旧文件列表:

    locate -d ~/old.db /your/dir | sort >~/old.list
    locate /your/dir | sort >~/new.list
    
    Run Code Online (Sandbox Code Playgroud)
  4. 获取所有新文件和丢失文件的列表:

    diff ~/old.list ~/new.list
    
    Run Code Online (Sandbox Code Playgroud)

补充说明

  • 并非所有文件都列在 locate 的数据库中。通常/etc/updatedb.conf,配置文件确定排除哪些文件和目录。

  • 过去,我使用过某些版本locate,默认情况下,只会列出仍然存在的文件。如果您的 是这种情况locate,您将需要关闭该功能。