Verificando um diretório grande após a cópia de um disco rígido para outro

3

Eu tenho um servidor de arquivos em casa no qual eu uso o Ubuntu.

Recentemente, uma das minhas unidades foi preenchida, então eu peguei outra e a joguei lá.

Eu tenho uma pasta muito grande, o diretório tem cerca de 1,7T e contém uma quantidade razoável de arquivos.

Eu usei GCP para COPIAR os arquivos da unidade antiga para a novo e parece ter funcionado bem.

Eu quero agora validar o novo diretório na nova unidade em relação ao diretório original na unidade antiga antes de excluir os dados da unidade antiga para liberar espaço. Eu entendo que posso fazer um teste de CRC para fazer isso.

Como, especificamente, posso fazer isso?

    
por Peter A 29.09.2016 / 05:32

2 respostas

4

Eu simplesmente uso o comando diff :

diff -rq --no-dereference /path/to/old/drive/ /path/to/new/drive/

Isto lê e compara todos os arquivos nas árvores de diretórios e relata quaisquer diferenças. O sinalizador -r compara os diretórios recursivamente, enquanto o sinalizador -q apenas imprime uma mensagem na tela quando os arquivos são diferentes - ao contrário de imprimir as diferenças reais (como acontece com arquivos de texto). O --no-dereference flag pode ser útil se houver links simbólicos diferentes, por exemplo, em um diretório, um link simbólico e, em seu diretório correspondente, uma cópia do arquivo ao qual foi vinculado.

Se o comando diff imprimir nenhuma saída , isso significa que as árvores de diretórios são de fato idênticas; você pode executar echo $? para verificar se o status de saída é 0 , indicando que os dois conjuntos de arquivos são iguais.

Não acredito que os CRCs ou checksums de computação sejam particularmente benéficos nesse caso. Faria mais sentido se os dois conjuntos de arquivos estivessem em sistemas diferentes e cada sistema pudesse computar as somas de verificação para seus próprios conjuntos de arquivos, de modo que apenas as somas de verificação precisem ser enviadas pela rede. Outro motivo comum para calcular as somas de verificação é manter uma cópia das somas de verificação para uso futuro.

    
por 29.09.2016 / 10:45
1

rsync costuma ser usado para copiar arquivos em vez de gcp , mas também pode ser usado para verificar uma cópia, mas ela foi feita. Simplesmente faça

rsync -niaHc /origfolder/ /copyfolder

Tenha o cuidado de terminar o primeiro nome da pasta (a origem) com / . As opções são

  • -n não copia (não faz alterações)
  • -i itemiseise as diferenças
  • -a preserva (ou seja, compara desde que tenhamos -n ) permissões, propriedades, links simbólicos, etc. e recolhe diretórios para baixo
  • -H preserva links físicos
  • -c comparar somas de verificação

A saída mostra um código detalhando as diferenças para cada arquivo ou diretório que difere. Não há saída se forem iguais. O código tem colunas YXcstpoguax , onde cada caractere é um ponto . se esse aspecto da comparação for aceitável ou uma letra:

Y is type of update: 
   < sent (not appropriate in this case)
   > need to copy 
   c missing file or directory
   h is hard link
   . no update
   * and rest of line is a message, eg *deleting
X file type: f file  d dir  L symlink  D device S special file
c checksum differs. + new item  " " same
s size differs
t timestamp differs
p permissions differ
o owner differ
g group differ
u (not used)
a acl differ
x extended attributes differ

Por exemplo,

.d..t...... a/b/                    directory timestamp differs
cL+++++++++ a/b/d -> /nosuch2       symbolic link missing
cS+++++++++ a/b/f                   special file missing (a/b/f is a fifo)
>f..t...... a/b/ff                  file timestamp differs
hf          a/b/xx1 => a/b/xx       files should be a hard linked
cLc.t...... a/b/z -> /tmp/hi2       symbolic link to different name
cd+++++++++ a/c/                    directory missing
>f+++++++++ a/c/i.10                missing file needs to be copied

Veja man rsync under --itemize-changes para mais detalhes. Se você tiver diferenças nas colunas 3rd c ou 4th s , haverá sérios danos nos dados. Outros sinalizadores, como permissões, proprietário ou timestamps diferentes, podem ser menos importantes para você. Se todos os arquivos estiverem marcados como "ausentes", provavelmente você não forneceu os diretórios corretos para comparar. Se tiver certeza, executar o rsync sem o sinalizador -n "corrigirá" as diferenças.

    
por 29.09.2016 / 14:59