我如何知道文件的新版本何时被复制

我如何知道文件的新版本何时被复制

我正在使用 Windows Server 2012 R2。现在我有以下情况:-

  1. 在 IIS 内部,我有一个名为 project.dll 的 .dll 文件。创建于 2016 年 1 月 1 日,最后修改于 2016 年 1 月 7 日。
  2. 我复制了此文件。请将其保存在安全的地方
  3. 现在我想测试这个.dll 文件的新版本。因此我将 project.dll 文件的更新版本从我们的测试服务器复制/粘贴到我们的上线前服务器。我在其中指定替换当前的.dll。
  4. 因此现在更新的.dll 具有以下信息。创建于 2016 年 1 月 1 日,最后修改于 2016 年 1 月 11 日。
  5. 现在测试后,我发现有一些错误,所以我想返回旧的 .dll
  6. 所以我从安全的地方复制 .dll,并将其粘贴到 IIS 相关文件夹中。我选择替换当前文件。

现在我的问题是我如何知道第 6 点上的操作何时发生?因为 .dll 将具有原始信息;创建于 2016 年 1 月 1 日并修改于 2016 年 1 月 7 日。但我需要知道操作 6 的具体发生时间。换句话说,更新的 .dll 何时被原始 .dll 替换?因为我需要检查一些日志以查看更新的 .dll 文件不再存在时错误是否已被删除。

答案1

仅列举几种可能性...

您可以检查 USN 日志。(Powershell 模块 Powerforensics 有一个很好的 cmdlet 用于此目的。Get-ForensicUsnJrnl每次在 NTFS 卷上触碰文件时,该日志中都会有记录。)

或者你可以使用.NET 文件系统观察器

还有其他可能性,但其中有几个可以帮助您入门。

答案2

  1. 要监控文件的变化,您可以使用 tripwire 或其开源对应 OSSSEC。这只会在文件发生更改且不再符合“基线”时进行监控和警报。
  2. 您可以将文件添加到版本控制系统(如 subversion 或 git)中。这样您就可以维护文件集合,并在测试用例不起作用时恢复到旧版本。
  3. Puppet,puppet 可能只是为了确保 DLL 文件与您的“好”版本匹配而有点小题大做,但它允许您定义一个源文件,该文件您希望以当前形式存在于其他服务器上。如果远程服务器上的 DLL 文件发生变化,puppet 将比较 MD5 哈希值并查看变化,然后将其替换为“好”版本。当您对新版本感到满意时,您可以在 puppet 服务器上替换该文件,然后 puppet 会很乐意将其部署到您的远程服务器。

相关内容