私はファイルのダウンロードと操作を含むスクリプトを書いており、ファイルを操作する前に(接続の切断などにより)ファイルが不完全でないことを確認したいと思います。
ダウンロードしたファイルの整合性を確認する最も一般的な方法は、MD5チェックサムを使用することです。これは、実際に公開されているファイルのMD5チェックサムからダウンロードしているサイトを想定しています。ダウンロードしたファイルの独自のチェックサムを作成し、それを公開されているチェックサムと比較することで、MD5チェックサムを検証できます。それらが同一の場合、ダウンロードしたファイルは完全で改ざんされていません。
ダウンロードしているファイルが変更されると思わない場合は、チェックサムを事前に計算してスクリプトにハードコーディングできますが、ファイルが更新されると検証が失敗します。
ファイルのMD5チェックサムを作成するには、md5sum myFile
を実行します。 wgetの場合、特にダウンロードするファイルが大きい場合に、このコマンドが役立つことがあります。
wget -O - http://example.com/myFile | tee myFile | md5sum > MD5SUM
。
これにより、ダウンロード中に「myFile」のチェックサムが作成され、ファイルMD5SUMに保存されるため、時間を節約できる可能性があります。
接続が切断された場合は、wgetの終了コードを確認するのが最善の方法だと思います。エラーなしでダウンロードが成功した場合、wgetは0
を返します。他の何かは何かがうまくいかなかったことを示します。 man wget
の「終了ステータス」セクションをご覧ください。
ファイルのダウンロードに使用されたコマンドの戻りコードは、コマンドが正常に実行されたかどうかを通知します。通常、戻りコード0は成功を示し、ゼロ以外の数値はエラーを示します。 $?
変数を介して戻りコードにアクセスできます。
wget
を使用した基本的な例は次のようになります:
#!/bin/bash
wget foo.tgz &> /dev/null
if [[ "$?" != 0 ]]; then
echo "Error downloading file"
else
echo "Success"
fi
&> /dev/null
はwgetのすべての出力を/dev/null
にリダイレクトするため、スクリプトの作成に理想的ですが、wget
エラーのデバッグがより困難になります。