回答:
ダウンロードしたファイルの整合性を検証する最も一般的な方法は、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
エラーのデバッグがより困難になります。
wget -q ... || { handle ; error ; }
man
読んで答えを読んでいるうちにそれを見つけただけで、私が言おうとしていた2つのことはすでに2つの答えでここにあったので、私は2つのコメントをしました。あなたにもいい感じです。
wget
、たとえそれが壊れたとしても、ダウンロードが完了したと思うかもしれないということです。デフォルトで終了TCPを終了マークとして使用するため、HTTPで問題があるTCP接続の切断とTCP接続の切断に関するプロキシ情報。そのため、一括ダウンロードを実行したときに、ヘッダーのファイルサイズがダウンロードしたファイルサイズと一致するかどうかのチェックを追加しました。wget
このような一貫性チェックを行うかどうか、またはこの問題に関するhttp仕様の内容は不明です。