• 締切済み

wgetのオプション

いつもお世話になります。 wgetを使ってサイトの取得を色々試しています。 例:あるブログを取得。ブログは毎日更新されている。 昨日wgetでブログを取得。今日もブログを取得した場合、更新又は新規ファイルだけを取得したい。 条件で言えば『取得済みのファイルは取得しないが、タイムスタンプが変更している場合は取得する。勿論新規ファイルも取得』 オプションの-nc(取得済みファイルは取得しない)、-N(タイムスタンプを見る)を同時に指定すると以下のエラーが出ます。 「-Nと-ncとを同時には指定できません。」 何か方法はないのでしょうか? 宜しくお願いします。

みんなの回答

回答No.2

> 何故、Last-modifiedが取れないのでしょうか。。。 wget側の問題でなく、アクセス先のhoge.jp側からの戻ってくる httpヘッダに存在していないのが問題です。 CGIとかで、静的コンテンツじゃないってことでは?

回答No.1

-Nだけで、 新規ファイルや 取得済みだがタイムスタンプが変わったファイルはダウンロードするとなります。 (つまり、取得済みでタイムスタンプも変わらないファイルはダウンロードしない) -ncとちがって、HTTPヘッダだけは取得しに行きますので速度的には不利ですが。

gogovamos
質問者

補足

-Nだけで実行をしてみましたが、以下のメッセージが出ます。 hoge.jp をDNSに問いあわせています... 完了しました。 hoge.jp[***.*.***.***]:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 13,158 [text/html] Last-modified ヘッダがありません -- 日付を無効にします。 -Nの説明で、『Last-modified』とありますが、これがないので、上書きされてしまうようです。 ----説明--ここから------- タイムスタンプを比較し、ファイルが変更されたと判断されたなら上書きダウンロードを行う。ただし、対象ファイルが Last-Modified ヘッダもたない場合(CGIなどやサーバーが自動で生成するディレクトリリストなど)、とりあえず上書きダウンロードする。 ----説明--ここまで------- 何故、Last-modifiedが取れないのでしょうか。。。

関連するQ&A

  • wgetのヴァージョン?

    最近連続でお世話になっております(汗。。) 二以上のURLを指定したファイルを指定しwgetで取得しています。 url.csvには以下のようにurlが改行で記述されています。 ttp://aaa.jp/ ttp://bbb.jp/ ttp://ccc.jp/ 以下のコマンドで成功します。 オプションは(index.htmlを省いたhtmlファイルだけを取得) wget -nc -r -A html -R index.html -i url.csv しかし、違うそれもスペックが高い(cpu、メモリ、しかもデュアルコア)サーバで実行すると1件目はオプション通りにファイル群を取得しますが、2件目以降のurlはindex.htmlだけを取得してしまいます。 ちなみに、wgetのヴァージョンは成功するほうが1.8.2で失敗するほうが1.10.2です(後者のほうがヴァージョンも高いですよね) 何かお気づきの方がいればご教授下さい。

  • ◆wgetをcronで動かす場合

    いつもお世話になっています(何回目だろう。。。) wgetの挙動についてです。 オプションとしてhtmlファイルを全て取得しています。1件目は成功しますが、2件名以降はindex.htmlしか取得しません。 そこで、 export LANG=C export LC_ALL=C を追加することで、全件がオプション通りに取得できました。 --------------get_url.sh--------------ここから--------- #!/bin/bash export LANG=C export LC_ALL=C wget -nc -r -A html http://aaa.hoge.jp/ wget -nc -r -A html http://bbb.hoge.jp/ wget -nc -r -A html http://ccc.hoge.jp/ --------------get_url.sh--------------ここまで--------- しかし、これをcronで実行させた場合、再び2件目以降はinde.htmlだけしか取得しません。 どなたかお気づきの点があればご教授下さい。 ちなみに、crontag -eは以下です。 52 12 * * * /get_url.sh

  • wget 使い方

    http://sourceforge.net/projects/tripwire/files/tripwire-src/tripwire-2.4.2-src/ 例に、このサイトのファイルをダウンロードする場合、wgetで指定するurlはどのように入力すれば良いのでしょうか? wget http://sourceforge.net/projects/tripwire/files/tripwire-src/tripwire-2.4.2-src/ これではダメでした。 回答お待ちしております。

  • wgetでのダウンロードについて

    wgetでのダウンロードについて はじめまして。 HPのバックアップを取ろうと思い、wgetというものを使おうと思うのですが 取得できる物と、できない物があり、何故かがわからずに困っているので 理由、もしくは解決方法を御存じの方がいらっしゃいましたら、是非お教え下さい。 パソコンは、windows xpです。 (例) www.hoge.co.jp   L css(フォルダ)  L photo(フォルダ)  L image(フォルダ) index.html aaaaa.html という様な構造なのですが、cssフォルダの中の いくつかのファイルしか取得できませんでした。 (同じ様なスタイルシートで、拡張子は全て.cssです。) コマンドプロンプトで wget -r www.hoge.co.jp -P C:\wget という感じで実行しています。 全部DLできない訳ではないので、余計に悩んでいます。 みなさま、よろしくお願いします。

  • wgetのコマンドでは不可能?

    はじめまして、こんにちは。 wgetでpdfをダウンロードしようと試しているのですが、上手くいかず困っている為質問させて頂きます。「ttp://www.***.jp」というサイトの中の「/yuho/」より下のディレクトリにあるpdfファイルをダウンロードしようとしています。 ttp://www.***.jp ↓ ttp://www.***.jp/list/s1000.htm (s1000はs2000,s3000,,,s9000まである) ↓ ttp://www.***.jp/code/1301.htm (1301は1000,1001,,,9999まである) ↓ ttp://www.***.jp/yuho/1301.htm (1301は1000,1001,,,9999まである) ↓ ttp://www.***.jp/mark/20141114/S1003FL5.htm (20141114とS1003FL5はそれぞれ変動、このページにpdfファイルへのリンクがある) 上記の様にリンクが繋がっていて、 ディレクトリ「list」「code」「yuho」「mark」を取得対象とすれば良いのだろうと考え、wgetで -I オプションでディレクトリを list/,code/,yuho/,mark/と指定してみたのですが、上手く働きませんでした。 これはやはり階層構造になっていない為でしょうか? 余計なページのpdfをダウンロードせず、ディレクトリ「yuho」以下の階層にあるpdfをダウンロードする場合はどのようなwgetのコードを書けば良いのでしょうか? wgetでは不可能なのでしょうか? Irvineというダウンローダーで ttp://www.***.jp/yuho/1301.htm の「1301」の部分を1000から9999にして、ダウンロードする拡張子をpdfに指定、階層を2にして実行しましたがこれも失敗でした。 現在も色々調べておりますが、知恵が足りず大変困っております。 こういった分野に造詣が深い方がいらっしゃいましたら、どうかご教授下さい。 宜しくお願い致します。

  • wgetコマンドの精度と取得階層数

    centos5 wgetコマンドを使って、WEBサイトのデータを丸ごと取得しました。 $ wget -r ftp://ftp.xxxxxx.co.jp/ ところが、下位階層のファイルやフォルダが取れていない事に気付きました。 ftpルート +-www   +-htdocs     +-content1     | +-file     | | +-image     | | | +-image1.png     | | +-css     | |   +-css1.css     | +-content1-1     | | +-file     | | | +-image     | | | | +-image1.png     | | | +-css     | | |   +-css1.css     | | +-index.html     | +-index.html     +-content2     +-image     | +-image1.png     +-css     | +-css1.css     +-js     | +-js1.css     +-index.html $ wget -r ftp://ftp.xxxxxx.co.jp/ で取得すると、下位階層のファイルが取得できていませんでした。 上記の例で言うと www/htdocs/content1/content1-1/file までは取れていて、 www/htdocs/content1/content1-1/fileの中身が空っぽです。 $ wget -r ftp://ftp.xxxxxx.co.jp/www や $ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs で取得しても状況は変わらず。 $ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/content1 まで指定すると、 www/htdocs/content1/content1-1/file/image www/htdocs/content1/content1-1/file/css と、その中のファイルまで取得できました。 これは、どういう事? wget自体が、単に調子悪いとドンドン取りこぼしていく信頼のおけない機能なのか? 取得階層数のデフォルトが5になっていて、それ以上は明示的に指定が必要なのか? 試しに $ wget -r -l 99 ftp://ftp.xxxxxx.co.jp/www/htdocs/content1 で99階層を指定してみると、最後までキッチリ取れました。 やっぱり、取得階層数のデフォルトが5なのか? それとも、通信が、たまたま調子良いか悪いかだけなのか? 取得階層数のデフォルトが5だとすれば、 $ wget -r ftp://ftp.xxxxxx.co.jp/ の時と $ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/ の時がダメで $ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/content1 の時が取れる意味が分からない。 謎です。

  • rsyncのオプションについて

    現在、rsyncにてサーバー間の同期をとろうと思っています。 A、B、Cのサーバーがあった場合 1.A→Cにファイルを吸い上げる 2.C→A、C→Bにコピーする ※このとき、C→Aにコピーする必要はないですが念のためって程度です。 サーバーAには絶えず最新のファイルが存在する前提です。 これだけなら簡単なのですが。。。 以下の場合に困っています。 上記、1と2の間 Aから吸い上げられた直後に、Aのファイルが更新されると その後の、C→Aのrsyncで古いコンテンツに上書きされてしまいます。 ※ファイルサイズも、タイムスタンプも違うため こんな状態のようです。 1.A→Cにファイルを吸い上げる ※このときのファイルのバージョンを1.0とします。 2.Aにファイルの更新がかかる ※このときのファイルのバージョンを2.0とします。 2.C→A、C→Bにコピーする ※この時点で、Cにはバージョン1.0のファイルがあるので  Aサーバーへのコピーされてしまう。。。  1.0と2.0では、サイズもタイムスタンプも違うため。。。 なんとかしたいのは、このようなことがあっても大丈夫なように タイムスタンプを比較で新しければ、rsync起動とやりたいのですが。。。 オプション探しても見つかりません 知っている方が居ましたら、ご教授いただけないでしょうか? もしくは、このような場合に同期をとる別の簡単な方法があればと思っています。 ※rsyncであれば、使ったことあるし設定も楽なので  この手法がいいかなって思っています

  • robocopyのオプションについてご教示ください

    バッチにてrobocopyを用いてコピーを実行する際、コピー先に同一ファイルがあればコピーしないオプションはどのように設定するのでしょうか? コピー先のファイルは、サイズ、タイムスタンプ等の相違ではなく、単純に同一名称のファイルがあれば、コピーを行わない設定にしたいと考えています。 オプションを見ていますと、タイムスタンプの新旧、ファイルサイズなどの比較を行って実行を制御する方法は記載されていますが、単純な同一ファイルがある場合のコピーの実施方法が見つけられずにいます。 よろしくご教示ください。

  • PHPでタイムスタンプ以外の更新日を取得する方法は

    filemtimeで更新日を取得できますが、これはタイムスタンプですよね。 2038年問題を考えると、タイムスタンプを使うものは極力避けたいと思っております。 DateTimeみたいに、タイムスタンプ以外のもので、ファイルの更新日を取得できるものはありませんか?

    • ベストアンサー
    • PHP
  • ファイルアップロード時のタイムスタンプ

    PHPで画像ファイルをアップロードした際、 ファイルのタイムスタンプが更新されてしまいます。 あとで、アップされたファイルのタイムスタンプをみて処理させたいのですが 、タイムスタンプ(作成日時、更新日時)を更新させないでアップロードする方法はありますでしょうか。 アップロードする前のタイムスタンプをあらかじめ取得し、DBなどに登録しておいたほうがいいのかもしれませんが、できれば画像ファイルのタイムスタンプを更新させないでアップロードしたいです。

    • ベストアンサー
    • PHP