Estou tentando encontrar novos arquivos criados, copiados, movidos ou modificados na última hora em um local de servidor linux /home/user/
.
Gostaria de saber se o comando a seguir é a melhor maneira de cobrir todas as situações (criadas, copiadas, movidas ou modificadas) ou se este comando não cobre todas as situações e posso perder alguns arquivos da minha pesquisa.
Eu excluiria do resultado da pesquisa todos os arquivos que são simplesmente executados ou lidos/acessados.
find /home/user/ -type f -newermt '-3600 seconds' -printf "%T+ %p\n"
Concordo com o comentário acima, o rsync pode ser uma solução melhor, dependendo do que você está tentando realizar com a lista de arquivos. Aqui está uma boa resposta que cobre muito terreno, incluindo os comentários https://serverfault.com/a/618740
listaria apenas os arquivos modificados (soma de verificação diferente)
Simples: testando propriedades de tempo de arquivo
Se eu me ater estritamente à pergunta, então eu usaria
Eu testei isso. Os comandos também identificam quando um arquivo foi movido para dentro do diretório.
Os acessos a arquivos não são relatados por este comando.
Melhor: assistindo eventos
No entanto, acho que você quer fazer algo quando houve um evento. Nesse caso, você pode querer verificar
iwatch
qual depende doinotify
.Ele será acionado em eventos do sistema e permitirá que você atue em um evento assim que ele acontecer.
Você não perderá arquivos que apareceram apenas temporariamente.
Este é um arquivo '/etc/iwatch/iwatch.xml' que alterei um pouco do que realmente uso:
É mais complexo do que usar 'find', mas também é mais refinado. No acima, o comando só é executado em um 'close_write'. Assim, o risco de manipular um arquivo que ainda está sendo escrito é reduzido.