HTTPを介してファイルの作成日を取得します
-
29-09-2019 - |
質問
Webサーバー上のファイルが与えられた(例: http://foo.com/bar.zip - > HTTPからのみアクセス可能)、そもそもアーカイブ全体をダウンロードせずに日付属性(たとえば[作成、変更])を取得する方法はありますか?
現在、アーカイブをダウンロードして、プログラムで属性を読み取ります。問題は、アーカイブが数十のMIBであるため、全体をダウンロードして、数バイトの情報を読み取ることになるのはリソースの無駄のように思えます。
帯域幅は実質的に無料であることがわかりますが、いずれにせよ無駄になりたくありません。
解決
読んでみてください 最終更新日 ヘッダーから
他のヒント
HTTP GETリクエストの代わりにHTTPヘッドリクエストを使用して、HTTPヘッダーのみを読み取ってください。 HTTP Getを実行すると、HTTPヘッダーを検査するだけでもファイル全体をダウンロードします。
簡単にするために、@ihorkoと @janthomäからの既存の(完璧な)回答の編集を編集します。もちろん、他のオプションも利用できますが、ここに完全に機能的な答えがあります。
でカールを使用します -I
オプション:
-I, --head
(http/ftp/file)http-headerのみを取得します! HTTP-Serversは、これがドキュメントのヘッダー以外に何も得るために使用するコマンドヘッドを備えています。 FTPまたはファイルファイルで使用する場合、Curlはファイルサイズと最後の変更時間のみを表示します。
また、 -s
ここではオプションがいいです:
-s, --silent
サイレントモードまたは静かなモード。進捗メーターやエラーメッセージを表示しないでください。カールミュートを作ります。要求するデータは引き続き出力されます。これは、リダイレクトしない限り、ターミナル/stdoutに潜在的にも出力します。
したがって、このようなことはトリックをするでしょう:
curl -sI http://foo.com/bar.zip | grep 'Last-Modified' | cut -d' ' -f 2-