J'écris un script qui implique le téléchargement et la manipulation d'un fichier, et je veux m'assurer que le fichier n'est pas incomplet (en raison, par exemple, d'une connexion interrompue) avant de travailler dessus.
La façon la plus courante de vérifier l'intégrité des fichiers téléchargés consiste à utiliser les sommes de contrôle MD5. Cela suppose que le site que vous téléchargez à partir des sommes de contrôle MD5 réellement publiées de leurs fichiers. Vous pouvez vérifier une somme de contrôle MD5 en créant votre propre somme de contrôle du fichier téléchargé et en la comparant à la somme de contrôle publiée. S'ils sont identiques, le fichier que vous avez téléchargé est complet et non altéré.
Si vous ne vous attendez pas à ce que le fichier que vous téléchargez change, vous pouvez précalculer une somme de contrôle et la coder en dur dans le script, mais si le fichier est mis à jour, la vérification échouera.
Pour créer une somme de contrôle MD5 d'un fichier exécuté md5sum myFile
. Dans le cas de wget, vous pourriez trouver cette commande utile, surtout si le fichier que vous téléchargez est volumineux:
wget -O - http://example.com/myFile | tee myFile | md5sum > MD5SUM
.
Cela créera une somme de contrôle de "monFichier" lors du téléchargement et l'enregistrera dans le fichier MD5SUM, ce qui vous fera peut-être gagner du temps.
Dans le cas d'une connexion interrompue, je pense que la meilleure façon serait de vérifier les codes de sortie de wget. Si le téléchargement réussit sans erreur, wget reviendra 0
. Tout le reste indique que quelque chose s'est mal passé. Jetez un œil à la section "Statut de sortie" de man wget
.
Le code retour de la commande utilisée pour télécharger le fichier vous indiquera si la commande a été exécutée avec succès ou non. En règle générale, un code retour de 0 indique la réussite et tout nombre différent de zéro indique une erreur. Vous pouvez accéder au code retour via la
$?
variable.Un exemple de base utilisant
wget
irait:&> /dev/null
redirige toute la sortie de wget vers/dev/null
c'est donc idéal pour les scripts MAIS cela rend leswget
erreurs de débogage plus difficiles.la source
wget -q ... || { handle ; error ; }
man
je ne l'ai trouvé qu'en lisant pour répondre et les deux choses que j'allais dire étaient déjà là dans deux réponses - j'ai donc fait deux commentaires. Joli contact avec toi aussi.wget
que le téléchargement pourrait être terminé, même s'il s'est cassé. Proxie des informations sur les connexions TCP rompues et les connexions TCP fermées, ce qui pose problème avec HTTP car il utilise TCP fermé comme marque de fin par défaut. C'est pourquoi j'ai ajouté une vérification si la taille du fichier de l'en-tête correspond à la taille du fichier téléchargé lorsque j'ai exécuté un téléchargement en masse. Je ne sais pas siwget
ces vérifications de cohérence ou ce que la spécification http dit sur ce problème.