• 締切済み

ネット上にあるファイルの更新確認を行うには?

ネット上にある特定のファイル(bz2、gz)が更新されているかを定期的に確認したいと思っています。 ですがファイルのサイズがとても大きく、毎回ダウンロードして確認するのはとても出来る状況ではありませんでした。 もしサーバー等に負担を掛けず、ファイルが更新されているかを確認するための手法などがありましたら、お教え頂きたく思います。よろしくお願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4855/10270)
回答No.4

ネット上にあると言ってもそのファイルにどうやってアクセスするのか? (1) HTTPでアクセスできる場合 HTTPのHEADメソッドでタイムスタンプ等がわかります。 (2) ftpでアクセスできる場合 他の人が回答済み。 (3) NFSやCIFSでアクセスできる場合 ローカルにあるのと同じ方法で可能。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

参考までにFTPでファイル情報を取得するスクリプトを書いてみました。 FTPでサーバーにログインし、lsコマンドを発行し、ファイル一覧を取得しています。 サーバからはファイルの一覧はテキスト形式で1行ごとに1ファイルの情報が 送られてきます。 そのため、1行からファイル名、ファイルサイズ、タイムスタンプを取り出す必要が あります。 IPアドレス、ディレクトリ名、ユーザーID、パスワード等は、ソースを意図的に変えています。 -------------------------------------------------- require 'net/ftp' addr='xxx.xxx.xxx.xxx' ftp = Net::FTP.open(addr) do |ftp| #サーバーにログインするためのメソッド ftp.login('user-id','password') #FTPサーバのディレクトリを目的の位置へ変更する ftp.chdir('/home/xxx/xxx') #lsコマンドと同じ lines = ftp.list() lines.each do |line| print line,"\n" end lines.each do |line| data = line.split(/\s+/) fname = data[8] fsize = data[4] ftime = data[5] + ' ' + data[6] + ' ' + data[7] printf("name=%-16s\tsize=%s\ttime=%s\n",fname,fsize,ftime) end end ------------------------------------------------------ 実行結果 ------------------------------------------------------ -rwxr-xr-x 1 500 500 4140 Feb 10 02:01 MyGrep.rb drwxr-xr-x 2 500 500 4096 Feb 11 14:52 backup -rwxr-xr-x 1 500 500 9218 Feb 10 02:00 repeat.rb -rwxr--r-- 1 500 500 2455 Feb 10 02:06 rgrep.rb -rwxr-xr-x 1 500 500 2251 Feb 10 02:00 sed_edit.rb -rwxr-xr-x 1 500 500 1411 Feb 10 02:01 usage.rb name=MyGrep.rb size=4140 time=Feb 10 02:01 name=backup size=4096 time=Feb 11 14:52 name=repeat.rb size=9218 time=Feb 10 02:00 name=rgrep.rb size=2455 time=Feb 10 02:06 name=sed_edit.rb size=2251 time=Feb 10 02:00 name=usage.rb size=1411 time=Feb 10 02:01

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

#1です。 >タイムスタンプなどは「File.mtime(fname)」で取得出来たと思うのですが、これはファイルをダウン>ロードせずに行えないと認識していますが、ウェブ上にあるファイルに対しても有効なのでしょうか? >もしくは、別の手法などがございますでしょうか? File.mtime(fname)は、ウェブ上にあるファイルに対しては使用できないと思います。 (やったことはありませんので断言できませんが・・・) ファイルをダウンロードしていると記述されていたので、FTPを使用していると理解しました。 FTPのコマンドでlsがありますので、それを発行すると、 ファイルの一覧およびファイルサイズおよびタイムスタンプが取得できます。 以下FTPでのlsコマンドの発行例です。 ftp> ls -l 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-rw-r-- 1 500 500 24 Feb 26 07:51 a drwxrwxr-x 5 500 500 4096 Feb 19 14:03 data drwxrwxr-x 2 500 500 4096 Jun 07 01:10 goo -rwxrw-rw- 1 500 500 9715 Feb 10 14:43 smb.conf drwxrwxr-x 5 500 500 4096 Feb 06 14:48 temp -rwxrwxr-x 1 500 500 72 Feb 26 08:08 test.sh

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

前回のファイルのタイムスタンプとファイルサイズを記憶しておき、今回と何れかが違っていたら、更新されたと判断する、というのはいかがでしょうか。

0xxxYuMixxx0
質問者

お礼

ご回答いただきありがとうございます! タイムスタンプなどは「File.mtime(fname)」で取得出来たと思うのですが、これはファイルをダウンロードせずに行えないと認識していますが、ウェブ上にあるファイルに対しても有効なのでしょうか? もしくは、別の手法などがございますでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 更新ファイルの確認ができない。

    WRC-X3000GSNですが、ファームウェアの更新のために更新ファイルの確認をしたいのですが、サーバーに接続されていませんと表示されて確認できません。 Wi-Fiは使えるので、ネットには接続されているとおもうのですが。 ※OKWAVEより補足:「エレコム株式会社の製品」についての質問です。

  • JavaScriput で ファイルの更新を確認

    JavaScriput で 特定のファイル更新を確認する方法は ありますか? いままで <META HTTP-EQUIV=Refresh CONTENT=60 ~ で、 自分自身 の ~ .cgi を再実行し、ファイル更新を 監視してました。 JavaScript でもっとスマートに確認できれば いいのですが・・・

  • Windousの更新ファイルについて

     私は、まだXPをしぶとく使っていまして、自動的にダウンロードされる更新ファイルをその都度インストールしながら使用しています。今朝ダウンロードされたファイル(NET Framework 関連のセキュリティー更新ファイル3個)をさっそくインストールし終え、「完了」を確認したのですが、再度タスクトレイに「更新準備が完了しましたのでインストールしてください・・・」が表示され、その後何度やっても全く同じファイルのインストールを促す表示が出てきます。  こういったケースは初めてで、原因究明とと対処はどうしたらいいのか、分からなくて困っています。どなたか詳しい方がいらっしゃいましたら、是非お教え下さい。

  • .tar.gzダウンロードの挙動

    HTMLに<a>タグで.tar.gzファイルへのリンクを掲載しています。 このファイルのダウンロード時、挙動が異なります。 1)リンククリックでダウンロードすると、.tar(アーカイブ)のファイルサイズになる  (Chrome、Edgeの場合。Firefoxでは、.gz(圧縮)のファイルサイズになる) 2)右クリックでコンテキストメニューの「名前を付けてリンク先を保存」でダウンロードすると、Chrome、Edge、Firefoxいずれも.gzのファイルサイズになる。 このHTMLは、同じものを別々のサーバに置いています。 サーバAはApache2.4.53、サーバBはApache2.4.54です。 1)、2)の事象は、サーバAで起きるのですが、サーバBでは、いずれも.gzのファイルサイズでダウンロードできます。 ちなみにレンタルサーバなので、httpdconfの編集は出来ないので、httaccessに以下を追記しています。(サーバA、B共に同じもの) AddEncoding x-gzip .tar.gz .gz .tgz AddEncoding x-identity .tar.gz .gz .tgz AddType application/x-gzip .tar.gz .gz .tgz 1)、2)は、Apacheのバージョンによるものなのでしょうか? サーバAでも、リンククリックで.tar.gzの状態でダウンロードできるようにしたいので、質問させていただきます。

  • FTPにより自動でファイルをサーバ間移動させたい

    シェルスクリプトの作成について初心者の者です サーバA(レンタルサーバ)のバックアップファイル(毎日生成)を ・サーバB(自作(Fedora-core4))から自動でFTP接続させて、 ・サーバAのバックアップファイルをサーバBにコピーして、 ・サーバAのバックアップファイルを消去しようとしています。 皆さんに色々教えていただいて下記(sample)のように記載して 下記の実行結果まできましたが最後の所でつまずいています。 コピー元(サーバA)にあるファイルに頭に「bak***」のつくファイルを すべてコピーしてきて、コピーしたあと、そのファイルを消去しようとしています 例えば、今日(9日)はbak-mysql-*********.sql.gzとbak-root********.tar.bz2 の2種類が(20121207、20121208、20121209)の6ファイルあります つまり、この6ファイルをコピーして、その後、削除させたいと思います それで、サーバAの/rootに下記のsample (ftp_all.sh)のスクリプトを置きました ********** sample (ftp_all.sh) ************************** #!/bin/csh -f #"@(#)ftp_all.sh 1995/07/01 Copyright(C)1995 ASH" # # name: ftp all files /usr/bin/ftp -n サーバAのIPアドレス << EOF user username password passive binary cd /home/city21/backup mget bak*.* mdelete bak*.* bye EOF ********************************************* その実行結果は次のとおりです *************** 実行結果 *********************** [root@linux ~]# sh ftp_all.sh Passive mode off. mget bak-mysql-20121207.sql.gz? mget bak-root-20121207.tar.bz2? mget bak-mysql-20121209.sql.gz? mget bak-root-20121209.tar.bz2? mget bak-mysql-20121208.sql.gz? mget bak-root-20121208.tar.bz2? [root@linux ~]# ****************************************************** この実行結果をみると ・20121207.sql.gz、20121207.tar.bz2、20121209.sql.gz、20121209.tar.bz、20121208.sql.gz、20121208.tar.bz  6ファイルともmgetでファイルをコピーしているかのようにみえます  しかし、実際に、サーバB側にコピーされているのは  上記の実行結果の最初の3ファイル、(20121207.sql.gz、20121207.tar.bz2、20121209.sql.gz)しかコピーされて  いません  また、mdeleteのコマンドが全く効いていません  何故なのか、どこを直せばいいのか教えていただければ幸いです  また、今回はスクリプトの中に  /usr/bin/ftp -n サーバAのIPアドレス << EOF  ・  ・  ・  EOF  としたのですが    ftp -n サーバAのIPアドレス << _EOD  ・  ・  ・  _EOD としている例もあります  このEOF とか _EODの意味も勉強したいのですが  どこかこのあたり解説しているものがあれば教えていただければ  幸いです  よろしくお願いします。

  • 途中でネットが切れたら

    youtubeなどのサイトを見ているときに、あるいは、ファイルなどのダウンロード中にネットのサーバーが切れてしまい、そのあと、ネットが復旧しても、動画が伸びない時は、更新して1からダウンロードしなおすしかないんでしょうか?更新以外でネットが復旧したからダウンロードし続けさせる操作とかはないのでしょうか?

  • Dreamweaverで頻繁に更新するファイル

    Dreamweaver CS3を使っています。 複数のディレクトリの特定のhtmlファイルをよく更新しているのです が、このディレクトリ及びhtmlファイルを毎回右のファイルメニューの たくさんのファイルの中から探すのが面倒だと感じています。 なにかブラウザのお気に入り機能のように、特定のよく使うファイルに 簡単にアクセスする方法はありますでしょうか? 画像ファイル等はDreamweaverのお気に入りに入れられるのですが、 htmlファイルにはこの機能が見つからず、なにかうまい方法はないかな と思いまして、質問させていただきました。

  • windowsでファイルコピーのプロセスを確認できるか

    Windows 2003 serverが以下の3台存在します。 サーバA サーバB サーバC サーバAからサーバB上でリモートでコマンドを実行し、サーバB上のファイルをサーバCにコピーするジョブを組んでいます。 コピーするファイルは10GBで、サーバBからサーバCまで約2時間かかります。 サーバAでコマンドを実行したということは確認できるのですが、サーバBとサーバC間でコピーされている最中に、本当にコピーが実行されているのかどうかが確認できず、困っています。 サーバAからリモートでコマンドを実行しているために、サーバB上でもサーバC上でもファイルがコピーされるアニメーションは現われません。サーバC上のファイルコピー先でも、ファイルが表示されないか、ファイルの最大サイズがはじめから表示されてしまい、更新を押してもファイルサイズが変動しないためコピーされているかわかりません。 コピーを表すプロセスが確認できればよいのですが、コピーのプロセスとはどのプロセスなのでしょうか? もしどなたかご存知でしたら教えていただきたく思います。

  • FTPサーバーから更新ファイルだけをダウンロードする方法

    FTPサーバーから更新ファイルされたファイルだけをダウンロードするフリーソフトを教えて下さい。 FFFTPのミラーリング機能も使ったことがあるのですが、FTPサーバー側にないファイルは消去されてしまいます。(設定で何とかなるのかもしれませんが) 一発で更新ファイルをダウンロードできるフリーソフトを探しています。

  • ファイルの更新日時が勝手に更新されてしまう

    ファイルやフォルダを自分でいじった訳ではないのに 更新日時が勝手に更新されて困っています。 ※更新日時でファイル、フォルダの並び順を管理しているので  勝手に更新されてしまうと並び順が変わってしまう為。 いつのまにか更新されてる時があるので 見つける度に正確な日時(うろ覚えですが)に直しています。 何がきっかけで、いつどんな時に勝手に更新されてしまうのか全く不明です。 今の所、特定の場所のファイル、またはフォルダのみに 症状が現れていますが、もしかしたら 他のファイル、フォルダも変わっているのかもしれません。 ※症状が現れているフォルダは、自分がダウンロードしたファイル等を  大量に入れているフォルダです。ダウンロードしたものは  全部そのフォルダに入れています。 勝手に更新されてしまう症状を改善したいと思っているので 解決策をご存知の方は、是非教えていただければと思います。 OS:WinXP