Identificando arquivos que foram alterados na última hora

4

Agora eu uso o python para descobrir arquivos que foram modificados na última hora. Isso é muito lento na minha rede (~ 50000 arquivos - e verificando o timestamp de cada um). Eu tenho um script personalizado para o qual eu passo essa lista - ele faz algumas transferências / log em / etc em um servidor remoto.

Eu quero acelerar o tempo de geração da lista de arquivos (demora de 15 a 20 minutos para descobrir a lista de arquivos). Alguma sugestão?

Uma coisa que pode ser útil é que a rede tenha um arquivador netapp. Esse arquivador cria esses diretórios .snapshot. Posso de alguma forma ligar-me ao arquivador (através da API?) E descobrir uma lista que mudou recentemente?

Se você não está familiarizado com a API da NetApp, sugestões sobre como gerar uma lista de arquivos (rápido!) com comandos unix seria ótimo! (BTW, este é um sistema de arquivos de rede - então haverá várias máquinas fazendo mudanças).

    
por Utkarsh Sinha 02.07.2013 / 15:46

1 resposta

4

Use apenas find :

find /path/to/dir/ -mmin -61

Opções relevantes:

   -mmin n
          File's data was last modified n minutes ago.
   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

Portanto, -mmin -61 significa "localizar arquivos que foram modificados há menos de 61 minutos", em outras palavras, aqueles que foram modificados na última hora.

Você pode querer usar essas opções também, elas aceleram a pesquisa, mas não sei se são adequadas, isso dependerá da sua configuração:

  • -maxdepth 1 : não desça em subdiretórios.
  • -type f : procura apenas por arquivos regulares, diretórios, etc.

Eu apenas executei este comando no meu laptop (i7,2.6GHz) em um diretório contendo 78353 arquivos gerados aleatoriamente (o que significa que as datas de modificação também são aleatórias). Demorou menos de um segundo para retornar uma lista de 51 arquivos modificados na última hora.

    
por 02.07.2013 / 15:54

Tags