有没有办法列出修改/编辑特定文件时的所有实例?

有没有办法列出修改/编辑特定文件时的所有实例?

我目前有一个文件abc.txt。我很想知道是否可以查看该文件编辑时(从创建之日起)的所有实例?

问:我怎样才能[如果我愿意]abc.txt从终端查看编辑特定文件 ( ) 的内容时积压的日期和时间?

我正在使用 Ubuntu 14.04.1 LTS

答案1

这是不是可能与本机文件在文件系统中。您可能正在寻找的是版本控制系统,像git(或svn,等等),用户检出和检入文件,有关活动和更改的所有信息都存储在相应版本控制系统的数据库中。

答案2

大多数文件系统不提供任何执行此操作的方法。不过,有几种不同的方法可以在 Unix/Linux 系统上跟踪文件更改:

  • 日志结构的文件系统,例如尼尔夫,以快照形式跟踪所有更改。这些快照会尽可能长时间地保留(这取决于nilfs_cleanerd设置和文件系统中的更改量),并且可以使用以下命令确定给定文件可用的快照lscp。这给出了文件的(可能是部分)历史记录。快照可以转换为保留的检查点。
  • 连续备份系统定期对其跟踪的文件进行快照。大多数此类系统都是商业化的;有一个清单维基百科当然。Dropbox崩溃计划我知道有两个系统在某种程度上可以实现持续备份;他们不会跟踪每一个更改,但会保留给定文件的所有历史记录。
  • 作为贾尼斯如上所述,版本控制系统允许用户存储文件的历史记录,但存储的更改通常是自愿的(因此文件的历史记录仅反映存储更改的点,而不反映文件的实际编辑活动)。一些VCS包装器可以在一定程度上提供自动化;etckeeper我想到的是:每次使用包管理工具时它都会自动跟踪更改。

答案3

事后这是不可能的。 “普通”文件系统不保留文件过去版本的日志。您所能知道的只是文件的最后一次修改时间(即文件的修改时间,ls -l大多数文件管理器都会显示该时间)。除非编辑者碰巧留下了备份文件,否则您无法找到过去的版本或知道它们的制作时间。

文件的所有者可以更改修改时间,因此如果您有安全问题并且不信任作者,则它没有用。文件还有另一个时间戳,即 ctime(inode 更改时间),它无法手动设置,并且每当文件被修改或移动或其元数据(包括修改时间)被修改时都会更新。因此,文件的 ctime 显示该文件的当前版本最晚是在该时间创建的(假设您信任系统管理员)。您可以使用 来查看 ctime ls -lc

如果您想记录文件周围的活动,您可以使用与访问文件时进行记录的方法相同: 一个inotify手表,记录文件系统,审核规则等等。所有这些方法仅记录设置后发生的情况。

如果您想跟踪文件在特定日期的状态,请进行备份。

如果您想自动保存文件的所有连续版本,请通过CopyFS 文件系统

如果您想以方便的方式跟踪文件的连续版本,请使用版本控制系统。这是一种合作机制:当进行修改的人决定提交新版本时,就会记录版本。

相关内容