ウェブサーバーでホストされているファイルヘッダーのMD5をチェックする

ウェブサーバーでホストされているファイルヘッダーのMD5をチェックする

cURL を使用してセットアップ ファイルを定期的にダウンロードする bash スクリプトを作成しています。問題は次のとおりです。ファイルは約 110 MB で、常に同じファイル名になっています。

ファイルをダウンロードし、そのハッシュ (md5、sha1) をチェックして、以前にダウンロードしたファイルと比較することができます。

  • ハッシュが等しい場合、ファイルは同じであり、更新されていません。この場合、理由もなくダウンロードしたことになります。
  • ハッシュが異なる場合、Web サーバー上のファイルは新しいバージョンです。この場合、このファイルを使用して新しいバージョンに更新します。

このスクリプトを 30 分ごとに実行したいのですが、無駄に 110 MB (同じファイル バージョン) をダウンロードするのは面倒です。コマンドラインで curl を使用して最初の 500 KB をダウンロードする方法はありますか?

現在の回避策は、HTTP ヘッダーのファイル サイズを比較することですが、それでも上記の質問に対する回答を得て、これが実行可能かどうかを知りたいです。よろしくお願いします。

カール -sI 'http://domain.tld/uri/updater/getLatest.etcenter?c=var&asi=allright' -H 'ホスト: domain.tld' -H 'ユーザーエージェント: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' -H '受け入れ: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate, br' -H 'DNT: 1' -H '接続: keep-alive' | grep 'Content-Length:'

答え1

クライアントとサーバーの両方でファイルの変更日を信頼できますか? 信頼できる場合は、curl-zオプションを使用して、HTTP の「条件付き GET」/「If-Modified-Since」機能を使用できます。何もダウンロードする必要はありません。これは、最初からあらゆる場所で頻繁に使用されてきた HTTP プロトコルの組み込み機能です。

サーバー上のファイルの変更日が前回ダウンロードしたファイルの変更日よりも新しくない場合は、何もダウンロードする必要はありません。

スクリプトではbash、 を使用してstat(1)ローカル ファイルの変更時刻を見つけ、その情報を に取り込むことを検討してくださいcurl -z …

関連情報