Я хочу скопировать все сжатые файлы из моих журналов apache, которые были созданы менее 43 дней назад.
В качестве теста я просто перечислил свои файлы из find:
sudo find /var/log/apache2/ -mindepth 1 -ctime -43 -name "*.gz" -ls
Но в результаты включены файлы, созданные вплоть до августа (когда сервер был настроен), а также новые файлы:
8781890 4 -rw-r----- 1 root adm 186 Aug 10 06:44 /var/log/apache2/error.log.13.gz
8781923 4 -rw-r----- 1 root adm 1717 Aug 17 06:29 /var/log/apache2/error.log.12.gz
stat /var/log/apache2/error.log.13.gz
File: `/var/log/apache2/error.log.13.gz'
Size: 186 Blocks: 8 IO Block: 4096 regular file
Device: 807h/2055d Inode: 8781890 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 4/ adm)
Access: 2014-11-13 10:34:14.444059675 +1030
Modify: 2014-08-10 06:44:11.000000000 +0930
Change: 2014-11-09 06:29:48.035930468 +1030
Почему аргумент ctime не применяется?
Эти файлы были повернуты, и в процессе их ctime изменился. Каждый раз, когда ты touch
файл или изменить его содержимое, вы собираетесь изменить его временные метки, которые перезапишут старые. Это введет в заблуждение вашу команду поиска.
ls
листинг показывает mtime
; поскольку это то, что ls показывает по умолчанию, если -c
указан флаг (ctime)
Так по сути; ваш ctime критерии совпадения файлы и ls отображает mtime.
Поэтому попробуйте настроить свою команду поиска на что-то вроде
sudo find / var / log / apache2 / -mindepth 1 -mtime -43 -name "* .gz" -ls
И он должен работать так, как вы ожидали