• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サーバの同期をとる)

サーバのデータ同期に関する問題

このQ&Aのポイント
  • レッドハット8間でデータの同期をとるツールを作成していますが、上手くいきません。既に取得したデータは読み飛ばして更新されたデータのみ取得する方法がわかりません。
  • 環境はレッドハット8で、Net::FTPモジュールを使用してデータを取得します。Perl5でデフォルトで入っているモジュールのみ使用できます。
  • 機能概要は、サーバAに上がっているデータをサーバBに指定ディレクトリ以下全てのデータとディレクトリを取得し、既に取得済みのデータは取らず、更新されているデータのみ取得したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • meeee
  • ベストアンサー率31% (6/19)
回答No.1

サーバBで実行するものと仮定します。 Net::FTPを使用したことがないので、自信ありませんが、ls、size、mdtmが使用できれば、サーバAからファイルの一覧を取得した上で、ファイル1つ1つについて、サイズと最終更新日時をサーバBのものと比較して、異なるものを取得するようにするのが1つの手です。 (sizeやmdtmはFTPサーバへの実装が必須となっていなかったように記憶しているので、「使えれば」と書きましたが、たいていsizeは実装されていると思います。) サーバB側で更新されたことは感知しないのであれば、どこかに最後に同期した日時を記録しておき、それ以降にサーバA側で更新されたものだけを対象とするのでもよろしいかと。 実は、サーバA側で最終同期日時を記録しておき、それ以降に更新されたものだけを、AからBへ送りつけるのが、一番簡単だと思うのですが、たぶんサーバA上で実行できないのですよね?

yoshige
質問者

お礼

ありがとうございました。 いろいろ調べた結果以下のサイトを参考に実装することができました。 http://hp.vector.co.jp/authors/VA022047/program/upload.html(mkdirする http://www.hyuki.com/upftp/(mkdirしない サーバのデータをすべてGetしてくる http://www.i-say.net/cgi/bbs1/wforum.cgi?mode=allread&no=1802&page=0

yoshige
質問者

補足

なるほど ご助言ありがとうございます。 早速検証してみます。

関連するQ&A