1

Я хочу удалить каталоги старше 180 дней

например, каталоги старше 180 дней:

drwxr-xr-x 2 root root 4096 Oct  1  2009 nis
drwxr-xr-x 3 root root 4096 Nov  4  2012 pkgs

Я использую эту команду:

find /var/tmp  -depth -mindepth 1 -type d -ctime +180  -exec rm -rf {} \;

После запуска команды find я вижу, что более старые каталоги все еще существуют

Пожалуйста, посоветуйте, что не так с моей командой поиска?

[root@vm1 /var/tmp]# ls -ltr
total 20
drwxr-xr-x 2 root root 4096 Oct  1  2009 nis
drwxr-xr-x 3 root root 4096 Nov  4  2012 pkgs
drwxr-x--- 2 root root 4096 Dec  3 08:24 1
drwxr-x--- 2 root root 4096 Dec  3 08:41 2
drwxr-x--- 2 root root 4096 Dec  3 08:41 3

[root@vm1 /var/tmp]# find /var/tmp  -depth -mindepth 1 -type d -ctime +180  -exec rm -rf {} \;

[root@vm1 /var/tmp]# ls -ltr
total 20
drwxr-xr-x 2 root root 4096 Oct  1  2009 nis
drwxr-xr-x 3 root root 4096 Nov  4  2012 pkgs
drwxr-x--- 2 root root 4096 Dec  3 08:24 1
drwxr-x--- 2 root root 4096 Dec  3 08:41 2
drwxr-x--- 2 root root 4096 Dec  3 08:41 3

Я также пытаюсь это (но не удалить старый каталог), -mtime только изменить дату старого каталога на текущую дату

   find /var/tmp  -depth -mindepth 1 -type d -mtime +180  -exec rm -rf {} \;

1 ответ1

1

ctime, mtime и atime ведут себя по-разному (см., например, здесь)

ctime проверяет время модификации inode (это изменяется, например, если вы копируете старый файл в новый каталог или на диск (который не меняет mtime))

mtime проверяет время модификации файла (которое, например, не обновляется при копировании файла в другое место или при распаковке файла из архива и т. д.)

временные проверки времени доступа

Я бы предположил, что ctime и mtime различаются для вашей структуры каталогов. (И ls -ltr показывает mtime, а не ctime.)

Ваша вторая попытка (с mtime) не должна была изменить mtime dir (такое поведение можно было бы ожидать atime), и, на самом деле, для меня эта команда работает для задачи, которую вы описываете. Даже в том случае, если вы пропустили права на запись для любого из подкаталогов, это может произойти сбой (так как у вас есть права на запись для верхнего уровня); Конечно, rm потерпит неудачу, если диск будет смонтирован только для чтения, но в этом случае команда find не сможет изменить время.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .