find command + remove diretórios mais antigos de acordo com o registro de data e hora do diretório

1

Eu quero excluir diretórios com mais de 180 dias

por exemplo, diretórios com mais de 180 dias:

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

Eu uso este comando:

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

Depois de executar o comando find, vejo que os diretórios mais antigos ainda existem

Por favor, avise o que há de errado com o meu comando de busca?

[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

Eu também tento isso (mas não removo o diretório antigo). O -mtime apenas altera a data do diretório antigo para a data atual

   find /var/tmp  -depth -mindepth 1 -type d -mtime +180  -exec rm -rf {} \;
    
por maihabunash 03.12.2014 / 14:38

1 resposta

1

ctime, mtime e atime se comportam de maneira diferente (veja, por exemplo, aqui )

ctime verifica o tempo de modificação do inode (isso é alterado, por exemplo, se você copiar um arquivo mais antigo para um novo diretório ou disco (que não muda de hora))

O mtime verifica o tempo de modificação do arquivo (que, por exemplo, não é atualizado ao copiar um arquivo para outro local ou ao descompactar um arquivo de um arquivo morto, etc.)

atime verifica o tempo de acesso

Eu diria que ctime e mtime são diferentes para a estrutura de diretórios. (E ls -ltr mostra o mtime, não o ctime.)

Sua segunda tentativa (com mtime) não deveria ter mudado o mtime do dir (este comportamento seria esperado para atime) e, de fato, para mim este comando funciona para a tarefa que você descreve. Nem mesmo no caso em que você estava faltando permissões de gravação para qualquer um dos subdiretórios deve falhar (desde que você tenha permissões de gravação para o nível superior); rm, é claro, falharia se o disco fosse montado somente para leitura, mas, nesse caso, seria impossível que o comando find alterasse a hora.

    
por 03.12.2014 / 20:39