首先,我们先来看一下ctime ,atime , mtime之间的关系和区别:
atime: access time
mtime: modify time (timestamp)
ctime: change time
文件的 Access time,atime 是在读取文件或者执行文件时更改的。
文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
文件的 Create time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。
mtime 和ctime 的区别在于是更改文件内容,还是更改文件属性。前者是文件内容发生了变化,后者是文件的索引节点发生变化。
如,touch 文件abc.123,看atime, mtime, ctime
#istat abc.123
Inode 1271 on device 10/4 File
Protection: rw-r--r--
Owner: 0(root) Group: 0(system)
Link count: 1 Length 0 bytes
Last updated: Mon Jan 02 16:24:44 2006 (ctime)
Last modified: Mon Jan 02 16:24:44 2006 (mtime)
Last accessed: Mon Jan 02 16:24:53 2006 (atime)
# chmod a+x abc.123
修改文件属性,再看atime, mtime, ctime)。
# istat abc.123
Inode 1271 on device 10/4 File
Protection: rwxr-xr-x
Owner: 0(root) Group: 0(system)
Link count: 1 Length 0 bytes
Last updated: Mon Jan 02 16:39:30 2006
Last modified: Mon Jan 02 16:24:44 2006
Last accessed: Mon Jan 02 16:24:53 2006
其中ctime发生了变化。
最后修改文件内容
# echo foo >> abc.123
Inode 1271 on device 10/4 File
Protection: rwxr-xr-x
Owner: 0(root) Group: 0(system)
Link count: 1 Length 4 bytes
Last updated: Mon Jan 02 16:48:51 2006
Last modified: Mon Jan 02 16:48:51 2006
Last accessed: Mon Jan 02 16:24:53 2006
其中mtime, ctime都发生了变化,mtime被更新很容易理解,ctime 被更新也一样可以理解,因为文件内容被修改时,索引节点的length字段也随之变化。
atime: 访问时间是文件最后一次被读取的时间。因此阅读一个文件会更新它的访问时间,如:
# cat abc.123
foo
# istat abc.123
Inode 1271 on device 10/4 File
Protection: rwxr-xr-x
Owner: 0(root) Group: 0(system)
Link count: 1 Length 4 bytes
Last updated: Mon Jan 02 16:48:51 2006
Last modified: Mon Jan 02 16:48:51 2006
Last accessed: Mon Jan 02 16:55:14 2006
现在我们来看一下数据备份是如何还针对ctime ,atime ,mtime来进行那些数据是需要备份的来进行筛选的。(以NBU为例)
solaris 客户机上的增量式备份查看所有文件和目录,以确定是否要基于参考日期来执行备份(即,备份 date_x 之后已更改的所有文件)。
solaris 文件和目录具有三个关联的时间:
mtime:文件修改时间。每次修改文件时,文件系统都更新文件或目录的
mtime。应用程序可以在修改文件前先保存文件的 mtime。然后,应用程序可以用 utime(2) 系统调用重置该时间。
atime:文件访问时间。每次访问(读或写)文件时,文件系统都会更新文
件或目录的 atime。应用程序可以在访问文件前先保存文件的 atime。然后,应用程序可以用 utime(2) 系统调用重置该时间。
ctime:索引节点更改时间。每次更改文件或目录的索引节点时,都将更新文件或目录的 ctime (例如,根据权限、所有权和链接计数的更改而更改)。
文件或目录的 ctime 无法在更改前保存以及在更改后重置。当重置 mtime 和atime (用 utime(2) 系统调用更改)时,文件或目录的 ctime 也更改。
NBU 读取备份中所包括的文件的数据时不影响文件修改时间,但会影响文件的访问时间。为此, NBU 在读取文件前将保存 atime 和 mtime。然后,
NBU 用 utime(2) 系统调用重置 atime 和 mtime。对于使用文件访问时间(atime) 作为操作条件的存储迁移产品或管理员脚本, NBU 不会引起问题。
尽管这个优点很明显,但副作用是它会更新文件的 ctime。
可以对 NBU 进行配置,使它在读取文件后不重置文件的访问时间。客户可以选择让 NBUp 使用文件的 ctime 和 mtime 来确定增量式备份中包含的
具体文件。通常,这两个选项一起使用,但在某些场所,可能只希望使用其中的一个。默认情况下, NBU只使用文件的 mtime 来确定要备份的文件和目录。
将文件从一个位置移动到另一个位置将更改该文件的 ctime,但 mtime 保持不变。如果 NetBackup 仅使用 mtime 来确定在增量式备份中要备份的文件,则不会
检测这些移动的文件。对于使用 mtime 可能会引起问题的场所,请使用 ctime 来确定要包含在增量式备份中的文件。如果 bp.conf 文件包含
USE_CTIME_FOR_INCREMENTALS 和 DO_NOT_RESET_FILE_ACCESS_TIME 条目,则将使用 ctime。
在将目录从一个位置移动到另一个位置时,该目录的 ctime 将发生变化,但mtime 保持不变。对于已移动的目录中的文件或目录, mtime 和 ctime 都不变。
对于使用文件时间戳的情况,没有可靠的方法能够确定移动目录中要包含在增量式备份中的文件。
在任一种情况下,这些已移动的文件和目录都包括在后续的完全备份中。
阅读(2732) | 评论(0) | 转发(0) |