Localiza arquivos com diferentes inodes na mesma estrutura de diretórios

1

Temos um pequeno problema com nossos backups. Nossa configuração é a seguinte:

  • Criamos um backup usando o comando rsync .
  • O backup usa a opção --link-dest , para criar backups incrementais com hardlinks para backups mais antigos, para todos os arquivos que não foram alterados.

Tudo parece bem, todos os arquivos que verificamos até agora não foram alterados desde que o último backup foi corretamente vinculado (o mesmo número de inode que o arquivo no backup mais antigo).

No entanto, nas últimas duas semanas, houve um grande aumento na necessidade de armazenamento no servidor de backup. Nós suspeitamos que algo está dando errado em nosso processo de backup, ou arquivos massivos foram adicionados (e / ou alterados) por usuários no servidor normal.

Queremos verificar (alguns dos) arquivos que foram alterados desde o último backup; isso significa verificar todos os arquivos na mesma estrutura de diretórios com inodes diferentes (sem links físicos).

Como encontrar esses arquivos?

(Ubuntu 12.04 LTS)

    
por Hidde 28.06.2014 / 14:20

1 resposta

1

Eu posso pensar em duas maneiras que estão no topo da minha cabeça:

  1. Use find e limite o número de links

    find -type f -links 1
    

    O comando acima encontrará todos os arquivos cujo inode é apenas apontado por um único link. Isso significa que qualquer arquivo que aponte para o mesmo inode como outro não será impresso.

  2. Liste todos os inodes e mostre apenas os únicos

    ls -1i | awk '{print $1}' | sort | uniq -u
    

    Observe que o acima não imprimirá nomes de arquivos, apenas inodes. Isso ocorre porque i) são os inodes que precisamos classificar / uniq e ii) os nomes dos arquivos podem conter caracteres estranhos, como novas linhas, que quebrariam a ordenação / uniqing. Se tiver certeza de que seus nomes de arquivo são saudáveis, você pode usar essa abordagem para imprimir nomes de arquivos:

    ls -1i | awk '{c[$1]++;l[$1]=$0;} END{for(i in c){if(c[i]==1){print l[i]}}}'
    
por 28.06.2014 / 15:43