Lista de alterações de arquivos em uma determinada pasta com grande conteúdo e vários níveis de subpastas (com desempenho decente)

1

Estou fazendo a mesma pergunta: Como listar arquivos que foram alterados em um determinado intervalo de tempo?

MAS. com uma torção:

Eu tenho 10 pastas com conteúdo enorme (13 TB) e várias pastas com vários níveis de subpastas dentro dela. Eu gostaria de obter para cada pastas, a lista de arquivos alterados por um determinado período de tempo com desempenho decente (retorna dentro de minutos em vez de horas ...)

exemplo de uma árvore de diretórios é o seguinte: O repositório de pastas1 possui 26 pastas A - Z, cada uma das 26 pastas possui 26 pastas como subpastas. Isso vai até mais de 100 níveis como este. Cada pasta especificada acima tem cerca de > 100, pelo menos, de imagens de cerca de 300kb - 1mb

No final, queremos sincronizar dois sistemas em diferentes data centers com alterações delta. Nós tentamos o Rsync, o que leva algumas horas para detectar as mudanças e está muito além do SLA ...

Estou perguntando a qualquer comando do Linux ou índice de arquivo com registro de data e hora que eu possa consultar a lista de arquivos alterados em um período de tempo. Para que eu possa fazer o Rsync no arquivo individual.

Também sou bom se você puder sugerir qualquer ferramenta de código aberto para este trabalho.

    
por Seng Zhe 23.03.2017 / 06:03

1 resposta

2

Isso depende da escolha do sistema de arquivos e de como o sistema de arquivos mantém essas informações. Qual sistema de arquivos você tem agora? Você pode mudá-lo, se necessário?

Se você tiver um sistema de arquivos tradicional (como UFS ou EXT), não haverá nenhum índice separado para registros de data e hora ou alterações. A única maneira de encontrar as mudanças é visitar cada inode e examinar o timestamp. Quando o sistema de arquivos é grande (> 10M inodes), vai demorar um pouco para consultar. Se os seus discos forem rápidos, você poderá melhorar um pouco as velocidades dividindo a pesquisa e executando vários segmentos. Se seus discos estão lentos ou já estão com os IOPs ligados, então vários segmentos podem não melhorar nada.

Outros sistemas de arquivos (como BTRFS ou ZFS) podem manter um registro de todas as alterações durante um período de tempo e podem transmitir essas alterações para um local de réplica. Você pode enviar as diferenças incrementais para o seu local de réplica rapidamente sem usar o rsync.

example of a directory tree is as follows:

Exceto por facilitar a divisão em vários comandos, a estrutura não é importante. Para um sistema de arquivos tradicional (e definitivamente para um cliente NFS), tudo o que você pode fazer é pesquisar todos os arquivos. Isso significa executar um ou mais processos find / rsync e esperar que ele termine.

my filesystem is NFS.

Você está usando o NFS atualmente para acessar algum outro sistema de arquivos. Se isso é tudo que você pode fazer, então você terá que visitar todos os arquivos.

Por outro lado, pode haver qualquer coisa que esteja servindo ao NFS. Se for um appliance netapp, ele pode enviar blocos alterados para outro netapp (supondo que você tenha outro netapp e as licenças corretas).

O Netapp tem uma API de fornecedor para coletar informações sobre blocos alterados (snapdiff), mas não está disponível para você.

    
por 23.03.2017 / 08:21