我正在尝试运行这个 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