Como verificar se um arquivo está corrompido ou não?

12

Existe alguma solução geral para verificar se um arquivo está corrompido ou não? Por exemplo, se um arquivo de vídeo é ruim ou um arquivo compactado está corrompido, etc.

    
por LanceBaynes 17.06.2011 / 10:07

3 respostas

10

Não, não há soluções gerais. A única maneira de verificar se um arquivo está corrompido é tentar lê-lo; somente um software que saiba como ler esse formato em particular pode fazer isso.

O que você poderia fazer é usar file para identificar o tipo do arquivo e, em seguida, usar o tipo para escolher um programa apropriado para verificar o arquivo. Você poderia escrever um script como este:

# /bin/bash -eu

FILENAME=$1

FILETYPE="$(file -b $FILENAME | head -1 | cut -d , -f 1)"
case "$FILETYPE" in
    "gzip compressed data") CHECKER="gunzip -t" ;;
    # many, many more lines here
    *) echo "Unknown type: $FILETYPE"; exit 1 ;;
esac

$CHECKER $FILENAME

Mas você teria muito trabalho a fazer para preencher a declaração do caso.

É possível que alguém já tenha escrito tal script (ou programa), mas não conheço nenhum.

    
por 17.06.2011 / 12:23
14

Se em algum momento você souber que o arquivo é bom, você pode fazer um checksum dele e usá-lo para comparar mais tarde para ter certeza de que ele ainda está completo. Isso é útil antes de transferir arquivos entre mídias ou através de redes.

Se você não sabe sobre o bom estado de um arquivo, não há nenhuma maneira universal ou verificação de corrupção. Somente o formato de arquivo específico em cada caso determina o que é um dado corrupto ou não corrompido.

    
por 17.06.2011 / 10:11
3

Se acontecer de você usar o ZFS, ou você pode ler o arquivo e é garantido que não está corrompido ou você tem um erro de leitura e é.

Editar Após os comentários sábios, aqui está um esclarecimento da minha resposta:

O ZFS pode proteger e detectar contra corrupção silenciosa de dados. exemplo: link Claro que se o arquivo já estiver corrompido no momento em que é inicialmente escrito, não há nada que o sistema de arquivos possa fazer.

Para proteger contra a corrupção que aconteceria durante a transmissão do arquivo, as técnicas usuais de uso geral são md5sum ou hashes similares.

    
por 17.06.2011 / 11:31