Назад | Перейти на главную страницу

Проблема с командой 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
...

Почему эти файлы не фильтруются по датам правильно?

Спасибо.

Чтение документации GNU: https://www.gnu.org/software/tar/manual/html_node/after.html

[...] заставляет tar работать только с файлами, изменение данных которых или время изменения статусаs новее [...]

Если вы хотите, чтобы 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