O que pode causar uma diferença de 3 gigabytes em duas árvores idênticas?

0

Acabei de copiar uma árvore dir para outro disco com cp -a . Essa árvore tem ~ 70GB de tamanho, com milhões de arquivos, e o diff demorava uma eternidade para terminar, então eu estava procurando outros métodos para comparar os diretórios.

Primeiro lancei o find no diretório e o resultado foi o mesmo.

Depois de lançar du -h e um diretório deu 72GB, o outro 75. O que pode causar essa diferença supondo que o processo de cópia foi bem? Tamanho do bloco de disco é o mesmo, 4096. Uma parcela é EXT3, o outro EXT4, poderia ser isso?

    
por cdarwin 27.10.2018 / 22:15

2 respostas

2

  1. Sim, eles terão usos de disco diferentes, dependendo de como o EXT4 foi ajustado, pode ter inodes de 256 ou 128 bytes, a alocação para diretórios pode ser diferente e arquivos pequenos podem ocupar diferentes quantidades de espaço. 3GB soa muito embora.

  2. Meu método preferido de comparar sistemas de arquivos é:

    ( cd /src/dir; find . -type f -print0 | xargs =0 cksum ) | sort >/tmp/src.cksum
    ( cd /dst/dir; find . -type f -print0 | xargs -0 cksum ) | sort >/tmp/dst.cksum
    cksum /tmp/*.cksum
    

Se a soma de verificação dos nomes de arquivos e das somas de verificação das duas hierarquias de arquivos for a mesma, sinto-me bastante confiante. Mais rápido que diff porque não há comparação, apenas um hashing direto de tudo.

Boa parte do método acima é fácil de fazer através de ssh entre diferentes máquinas também.

    
por 27.10.2018 / 23:01
0

Provavelmente cp -a fez alguma mágica esparsa ao copiar os arquivos - ou não conseguiu fazer isso; você não disse qual é o maior, o original ou a cópia?

Isso é o que a página de manual de cp diz:

By default, sparse SOURCE files are detected by a crude heuristic and the corresponding DEST file is made sparse as well. That is the behavior selected by --sparse=auto.

Para comparar os dirs e obter quais arquivos têm tamanhos diferentes, tente comparar a saída de du -S em ambos:

diff <(cd orig; du -S . | sort -n) <(cd copy; du -S . | sort -n)
    
por 27.10.2018 / 23:32