![使用数据、文件所有权和权限等生成文件摘要](https://linux22.com/image/221614/%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E3%80%81%E6%96%87%E4%BB%B6%E6%89%80%E6%9C%89%E6%9D%83%E5%92%8C%E6%9D%83%E9%99%90%E7%AD%89%E7%94%9F%E6%88%90%E6%96%87%E4%BB%B6%E6%91%98%E8%A6%81.png)
如果数据仍然相同但所有权已更改(或权限、访问/创建时间等),我希望能够检测到文件何时被视为不同。
有这样的工具吗?
答案1
正如提供的答案中所述检测权限变化,您可以通过该命令确定权限变更的时间和实际的权限stat
。
所以类似的东西应该有效:
stat -c "%a %Z" file | cat - file | sha1sum
答案2
tar -cf - --no-recursion the_file | sha256sum
笔记:
--no-recursion
如果是the_file
目录类型。我假设您想检测文件本身的更改,而不是其子目录等。tar
不存储时间。这意味着该方法无法检测 的 atime 中的任何变化the_file
。另一方面,读取the_file
by 的唯一行为tar
可能会更新其 atime(取决于安装选项),因此忽略 atime 很可能是一件好事。- 如果 出现问题
tar
,您仍然会得到一些摘要(空输入的摘要)并从 退出状态 0sha256sum
。看获取通过管道传输到另一个进程的退出状态。 tar
存储路径。该方法不仅对文件的实际名称敏感,而且主要对路径名敏感你提供。例如,指定./the_file
将为您提供与 不同的摘要the_file
。为了可靠地检测更改,请选择一个路径名并坚持使用。- 您可以使用其他
*sum
工具(例如md5sum
)。选择一个并坚持下去。