J'écris un script qui implique le téléchargement et la manipulation d'un fichier, et je veux vous assurer que le fichier n'est pas incomplet (due par ex. Une connexion abandonnée) avant que je ne travaille dessus.
Le moyen le plus courant de vérifier l'intégrité des fichiers téléchargés consiste à utiliser des checksums MD5. Cela suppose que le site que vous téléchargez à partir des checksums MD5 publiés de leurs fichiers. Vous pouvez vérifier une checksum MD5 en créant votre propre checksum du fichier téléchargé et en le 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 vous téléchargez pour modifier, vous pouvez précomputer une somme de contrôle et un code dur dans le script, mais si le fichier est jamais mis à jour, la vérification échouera.
Pour créer une checksum MD5 d'un fichier run md5sum myFile
. Dans le cas de WGET, vous trouverez peut-être cette commande utile, surtout si le fichier que vous téléchargez est grand:
wget -O - http://example.com/myFile | tee myFile | md5sum > MD5SUM
.
Cela créera une somme de contrôle de "myfile" lors du téléchargement et de la sauvegarde dans le fichier MD5Sum, éventuellement vous sauver un peu de temps.
Dans le cas d'une connexion abandonnée, je pense que le meilleur moyen serait de vérifier les codes de sortie de Wget. Si le téléchargement réussit sans erreur, Wget reviendra 0
. Quelque chose d'autre indique que quelque chose s'est mal passé. Jetez un coup d'œil à la section "Statut de sortie" de man wget
.
Le code de retour de la commande utilisée pour télécharger le fichier vous indiquera si la commande est exécutée avec succès ou non. En règle générale, un code de retour de 0 indique que le succès et tout numéro non nul dénotant une erreur. Vous pouvez accéder au code de retour via le $?
variable.
Un exemple de base utilisant wget
irait:
#!/bin/bash
wget foo.tgz &> /dev/null
if [[ "$?" != 0 ]]; then
echo "Error downloading file"
else
echo "Success"
fi
&> /dev/null
redirige tout de la sortie de Wget à /dev/null
Il est donc idéal pour les scripts, mais cela fait du débogage wget
erreurs plus difficiles.