GNU tar 手册页对 METHOD='replace' 和 METHOD='system' 的神秘引用

GNU tar 手册页对 METHOD='replace' 和 METHOD='system' 的神秘引用

我的 tar (GNU tar 1.28) 手册页列出了 --atime-preserve 选项,该选项适用于将文件添加到 tarball 的时间。完整的解释如下:

 --atime-preserve
       preserve access times on dumped files, either by restoring the times after reading (METHOD='replace'; default) or by not setting
       the times in the first place (METHOD='system')

然而,METHOD='replace' 和 METHOD='system' 的确切含义仍然没有解释。任何人都可以阐明这一点吗?

答案1

它们只是该选项的值。在线手册(以及info文档 - 检查info tar 'Option Summary')使其更清晰:

--atime-preserve
--atime-preserve=replace
--atime-preserve=system

读取文件时尝试保留文件的访问时间。目前,此选项仅对您拥有的文件有效,除非您具有超级用户权限。

--atime-preserve=replace在读取文件之前记住文件的访问时间,然后在读取文件后恢复访问时间。如果其他程序同时读取该文件,这可能会导致问题,因为它们的访问时间将会丢失。在大多数平台上,恢复访问时间还需要 tar 来恢复数据修改时间,因此如果其他程序同时写入文件,此选项也可能会导致问题(tar 尝试检测这种情况,但由于无法可靠地执行此操作)比赛条件)。更糟糕的是,在大多数平台上,恢复访问时间也会更新状态更改时间,这意味着此选项与增量备份不兼容。

--atime-preserve=system避免更改文件上的时间戳,不会干扰其他程序引起的时间戳更新,因此它更适合增量备份。但是,它需要底层操作和文件系统实现的特殊O_NOATIME选项,并且还要求搜索目录不会更新其访问时间。截至撰写本文时(2005 年 11 月),此功能仅适用于 Linux,并且仅适用于 Linux 内核 2.6.8 及更高版本。更糟糕的是,目前没有可靠的方法来知道这个功能是否真的有效。有时 tar 知道它不起作用,如果你使用--atime-preserve=systemtar 就会抱怨并立即退出。但有时 tar 可能会认为该选项有效,但实际上却不起作用。

相关内容