Comando que me dirá a última vez que um diretório ou qualquer um de seus subdiretórios foi modificado?

Comando que me dirá a última vez que um diretório ou qualquer um de seus subdiretórios foi modificado?

Estamos tentando descontinuar nosso antigo servidor de pasta inicial do Linux. Ainda temos algumas pessoas que o estão usando ativamente. Nosso plano é mudar as pastas iniciais que ninguém usou nos últimos seis meses para somente leitura. Temos clientes Mac e Windows acessando esses compartilhamentos por SMB.

Então, minha pergunta é: existe um comando que me diga a última vez que um diretório ou qualquer um de seus subdiretórios foi modificado?

Ou

Uma lista de diretórios pais que foram modificados desde uma determinada data?

Isso me diria quais usuários ainda estão usando ativamente suas pastas pessoais.

Responder1

Um problema que você pode encontrar é que modificar um arquivo em um diretório não altera necessariamente o carimbo de data/hora do diretório. Aqui está um exemplo:

paulgear@localhost:~/tmp$ echo test1 > test1
paulgear@localhost:~/tmp$ ls -la
total 4
drwxr-xr-x 1 paulgear paulgear   18 Jan 15 09:29 .
drwxr-xr-x 1 paulgear paulgear 3976 Jan 15 09:26 ..
drwxr-xr-x 1 paulgear paulgear    0 Jan 15 09:29 test
-rw-r--r-- 1 paulgear paulgear    6 Jan 15 09:29 test1
paulgear@localhost:~/tmp$ date
Wed Jan 15 09:30:07 EST 2014
paulgear@localhost:~/tmp$ echo test2 > test1
paulgear@localhost:~/tmp$ ls -la
total 4
drwxr-xr-x 1 paulgear paulgear   18 Jan 15 09:29 .
drwxr-xr-x 1 paulgear paulgear 3976 Jan 15 09:26 ..
drwxr-xr-x 1 paulgear paulgear    0 Jan 15 09:29 test
-rw-r--r-- 1 paulgear paulgear    6 Jan 15 09:30 test1

Observe como a substituição completa do conteúdo de test1 não atualizou o carimbo de data/hora do diretório. Portanto, seu comando find provavelmente deveria procurar arquivos e diretórios, algo assim:

find . -mtime +180 -print0 | xargs -0 chmod a-w

Ou você pode querer diferenciar os critérios de tempo para arquivos e diretórios:

find . -type d -mtime +120 -print0 | xargs -0 chmod a-w
find . -type f -mtime +180 -print0 | xargs -0 chmod a-w

Para muitos (a maioria?) aplicativos que usam compartilhamentos de arquivos SMB, isso não se aplica, porque eles geralmente gravam seu conteúdo em um arquivo temporário no mesmo diretório, excluem o arquivo original e renomeiam o arquivo temporário com o nome do original. Mas aplicativos de “banco de dados” como o Access não farão isso.

informação relacionada