tar -N 命令无法正确过滤日期的问题

tar -N 命令无法正确过滤日期的问题

我正在尝试运行这个 tar 命令 -

tar -N '2016-01-01' -jcvf archive.tar.bz2 /home/myhome

在主目录中,我有以下需要过滤的文件

-rwx------.  1   1000   1000    89097 Dec  3  2011 automysqlbackup
-rw-------.  1   1000   1000    11858 Nov 21  2011 automysqlbackup.conf

然而,当我查看命令输出时,它们仍然在那里 -

tar: Option --after-date: Treating date `2016-01-01' as 2016-01-01 00:00:00
tar: Removing leading `/' from member names
...
/home/bamboo/automysqlbackup
/home/bamboo/automysqlbackup.conf
...

为什么不能正确地按日期过滤这些文件?

谢谢。

答案1

阅读gnu文档: https://www.gnu.org/software/tar/manual/html_node/after.html

[...] 导致 tar 只对数据修改的文件起作用或状态改变时间较新 [...]

如果你只想让 tar 进行日期比较基于修改文件的数据(而不是状态变化),然后使用“--newer-mtime = date”选项。

因此,我猜如果你用ls -lc /home/myhome而不是检查你的文件ls -l,你会看到它们的 ctime(即文档中的状态)比你的日期更新

ctime 当 inode 改变时会改变,包括但不限于 chmod、ln(硬链接)等操作,当然还有创建,比如从 tar 存档中恢复。

所以尝试一下这个:

tar jcvf archive.tar.bz2 --newer-mtime=2016-01-01 /home/myhome 

相关内容