UNIX的ctime:如何保持备份(焦油)这个宝贵的信息?

我有三个与文件的“ctime”信息有关的问题。 他们是粗体的 (如果你没有时间,你可以直接跳到他们)。


我的专用服务器上的网站已被黑客入侵。 很多文件已被编辑。 我注意到一些黑客巧妙地重置了mtime(一些没有)。

atime和mtime可以通过PHP函数进行更改。 也可以使用chmod函数更改ctime。 但ctime是由内核处理的,因此只能将其设置为当前系统date/时间。 这是不可能的,回到过去。

我发现一些后门的mtime已经重置为ctime(过去的date,如1或2年前),所以我找不到使用基于这些信息的recursionsearch工具。

能够快速find所有被感染文件的关键当然是ctime信息。 问题是我一开始没有想到,所以我首先“recursion”地把所有的文件“chmoded”,以便网站本身不再有写入权限。 在这样做的时候,我失去了宝贵的ctime信息。

我有很多备份,forms为.tar.gz文件。 我想知道是否有一种方法可以从tar.gz文件中提取它们添加焦油时的文件的ctime

我读了整个GNU tar文档,发现tar的“GNU”格式(这是我的Linux服务器默认使用的)存储其归档文件的ctime。 我尝试以下方法来解压缩它:

tar -zxf Friday.tar.gz --to-command=./script 

./script是一个bash脚本,如下所示:

 #!/bin/bash echo $TAR_CTIME 

问题是,这给出了当前的date和时间,也许是因为焦油给出了它自己创build的文件的信息,如果我没有使用--to-command


如果焦油不能处理这个,有没有备份工具,可以保留原始ctime信息?


如何列出mtime和ctime不同的每个文件? 我阅读了查找手册,但只发现了-newerXY ,(如果我理解的很好),只能比较ctime和ctime,mtime和mtime等。有没有办法比较ctime和mtime相同的文件?

你有没有考虑使用tar比较选项来查看哪些文件被更改? 这应该给你一个快速的候选人名单。

ctime由内核控制,而不是任何用户空间工具,tar或任何其他程序,因为要备份和恢复,他们必须创build一个新的inode,必须有一个新的ctime。 一种已知的保存方法是将文件系统映像到一个环回文件,然后保存该映像。 除非你的文件系统比较完整,而且你还想保存所有东西,这是相当浪费的。

有更有效的程序,如partimage,但我没有检查,如果他们保留inode的ctime。