web-dev-qa-db-fra.com

Comment vérifier si un fichier est corrompu ou non?

Existe-t-il des solutions générales pour vérifier si un fichier est corrompu ou non? Par exemple, si un fichier vidéo est mauvais ou qu'un fichier compressé est corrompu, etc.

13
LanceBaynes

Non, il n'y a pas de solutions générales. Le seul moyen de vérifier si un fichier est corrompu est d'essayer de le lire; Seul un logiciel qui sait comment lire ce format particulier peut le faire.

Ce que vous pourriez faire est d'utiliser file pour identifier le type du fichier, puis utiliser le type pour choisir un programme approprié pour vérifier le fichier. Vous pouvez écrire un script comme celui-ci:

# /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

Mais vous auriez beaucoup de travail à faire pour remplir la déclaration de cas.

Il est possible que quelqu'un ait déjà écrit un tel script (ou programme), mais je n'en savais aucun.

10
Tom Anderson

Si vous savez à un moment donné, le fichier est bon, vous pouvez faire une somme de contrôle et l'utiliser pour comparer plus tard pour vous assurer que tout est encore entier. Ceci est utile avant de transférer des fichiers entre les supports ou sur les réseaux.

Si vous ne connaissez pas le bon état d'un fichier, non, il n'y a pas de manière universelle ni de vérification de la corruption. Seul le format de fichier spécifique dans chaque cas détermine ce qui est corrompu ou non corrompu des données.

14
Caleb

Si vous utilisez des ZFS, vous pouvez lire le fichier et il est garanti qui n'est pas corrompu ou vous avez une erreur de lecture et c'est.

Modifier après les commentaires sages, voici une clarification de ma réponse:

ZFS peut protéger et détecter contre la corruption de données silencieuses. par exemple: - http://www.zdnet.com/blog/storage/data-corruption-is-worse-than-you-worse-than-you-ke-nci/191 Bien sûr, si le fichier est déjà corrompu à l'heure est initialement écrit, rien ne peut faire le système de fichiers.

Pour se protéger contre la corruption qui se produirait lors de la transmission du fichier, les techniques d'usage général habituelles sont MD5Sum ou des haubes similaires.

3
jlliagre