Percebi que a postagem original é bastante antiga, no entanto, acho que essas informações ainda podem ser valiosas para quem procura uma solução para verificar se os arquivos foram copiados corretamente. O Rsync pode ser o melhor método para copiar dados e as respostas fornecidas neste segmento são boas; no entanto, para aqueles que não são experientes no Linux, tentarei dar uma explicação mais detalhada.
Cenário: você acabou de copiar dados de um disco para outro, com muitos subdiretórios e arquivos. Você deseja verificar se todos os dados foram copiados corretamente.
Primeiro verifique se md5deep está instalado, emitindo o comando md5deep -v
.
Se você receber uma mensagem dizendo algo como 'comando não encontrado', instale o md5deep por apt-get install md5deep
.
Supõe-se que você deseja apenas lidar com arquivos regulares. Se você deseja lidar com outros tipos de arquivos, consulte o sinalizador -o no manual md5deep. ( man md5deep
)
Agora você está pronto e assumimos que você copiou os arquivos de /mnt/orginal
para /mnt/backup
, substitua-os pelos diretórios que estiver usando.
Primeira alteração no diretório de origem, esta é a fonte original dos arquivos que você copiou ou fez backup:
cd /mnt/orginal
Em seguida, faça uma soma de verificação de cada arquivo:
md5deep -rel -o f . >> /tmp/checksums.md5
Este comando explicou:
-r
ativa o modo recursivo
-e
exibe indicador de progresso
-l
ativa caminhos de arquivo relativos.
-o f
funciona apenas em arquivos regulares (não em dispositivos de bloco, pipes nomeados etc.)
.
informa ao md5deep para iniciar no diretório atual.
>> /tmp/checksums.md5
diz ao md5deep para redirecionar toda a saída para /tmp/checksums.md5
.
Observe que, se você deseja sobrescrever o conteúdo nas versões anteriores /tmp/checksums.md5
, use >
e não>>
Observe que esse comando pode demorar um pouco, dependendo da velocidade io e do tamanho dos dados. Você pode experimentar o nice e / ou ionice para aumentar o desempenho do md5deep, mas isso está fora do escopo desta resposta.
Quando a criação das somas de verificação estiver concluída, você terá um arquivo com entradas semelhantes a:
69c0a826b29c8f40b7ca5e56e53d7f83 ./oldconfig-11-09-2013/etc2/apm/event.d/20hdparm 651f3c7f79a14332f9fa7bb368039210 ./oldconfig-11-09-201-2013/etc2/apm/event.d/an-9-09684201. /etc2/apm/scripts.d/alsa e9b9131660a8013983bc5e19d7d669eb ./oldconfig-11-09-2013/etc2/ld.so.cache
A primeira coluna é a soma de verificação do md5 e a segunda coluna é o caminho relativo para o arquivo ao qual a soma de verificação pertence.
Se você deseja ver quantos arquivos existem no arquivo de soma de verificação, emita o comando:
wc /tmp/checksums.md5 -l
Agora, você deseja verificar se os dados copiados estão corretos:
cd /mnt/backup
md5deep -o f -reX /tmp/checksums.md5 . >> /tmp/compare.result
A única diferença de quando criamos as somas de verificação é -X, que exibe o hash atual de um arquivo se a entrada no arquivo checksums.md5 não corresponder. Portanto, no final do teste, se /tmp/compare.result
estiver em branco, você poderá confiar que todos os arquivos serão copiados corretamente, pois as somas de verificação correspondem.
Observe que apenas os arquivos listados no /tmp/checksums.md5
arquivo serão verificados quanto a uma soma de verificação correta; se houver algum arquivo adicional no /mnt/backup
diretório, o md5deep não notificará você sobre eles.
Notas:
Você não precisa necessariamente usar o redirecionamento para armazenar arquivos de saída. Consulte o manual do md5deep para obter mais informações.
Pode ser necessário executar os comandos md5deep como root, dependendo das permissões dos arquivos que você está manipulando.
sudo apt-get install md5deep
md5deep -rel /path/to/your/directory/ > directory_hash.md5
md5deep -X directory_hash.md5 -r /path/to/your/second/direcotory
Thx muito.