有没有办法在 Linux 中查看或存储文件历史记录(如浏览器历史记录)?

有没有办法在 Linux 中查看或存储文件历史记录(如浏览器历史记录)?

有没有办法“查看”(或)“存储”文件历史记录(类似于浏览器历史记录)。例如,如果我有 10 个文件,并且我打开了其中 2 个,则以下 2 个详细信息应存储在一个文件中:

<name-of-file-opened> <date-and-time>

每当我打开文件时,这种情况都会发生。因此,当我打开该特定历史文件时,我可以看到我打开过的所有文件(不一定是编辑过的——只要我打开过就行)。

我知道lsof是查看所有列表现在打开文件,但是有没有办法获取“历史记录”。如果没有内置命令,是否可以为同一目的创建自定义命令?

答案1

我也会提到inotifywait这种可能性。它通常可以在inotify-tools包中找到(例如在 Ubuntu 下sudo apt install inotify-tools)。

我假设你想监视特定目录中的文件,因为监视一切会有点让人不知所措。Linux 会不断读取和写入文件,因此您很快就会有数百个条目。即使只是监控类似的东西也/etc可能太多了,因为有太多进程需要读取那里的信息。

例如,假设您想要监视 中的所有内容$HOME/projects。可以使用以下方法完成此操作:

inotifywait -d -o ~/projects-access.log  --format "%w%f %T" --timefmt "%c" -e open "$HOME/projects"

这将运行inotifywait

  • 在背景中(-d
  • 输出至~/projects-access.log
  • 使用您在 Unix 和 Linux 问题中要求的格式(“”)
  • 对于在以下位置访问(打开)的所有文件~/projects

man inotifywait参阅详情。

警告:在 WSL 下,这仅适用于 ext4 文件系统中的文件。它不适用于 NTFS 驱动器上的文件(即 下的任何文件/mnt/c等)。WSL2 目前不通过用于从 WSL 访问 Windows 驱动器的 9P 协议提供对 inotify 的支持。

我相信 harrymc 的回答也同样如此auditctl,但我还没有测试过以确保。

答案2

Linux 不跟踪文件历史信息。

您将需要配置审计来跟踪特定文件的更改。

一些说明:

  • 审计仅进行未来的变更
  • 审计已删除的文件可能会导致守护进程出现问题。

寻找 审计控制

一些随机参考(还可以找到更多):

相关内容