- - PR -
Javaによるサーバ間ファイル同期について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-10-17 14:12
お世話になります。
現在、サーバAとサーバBの二つのサーバ間でファイル同期を とろうと考えています。 両サーバともWindowsServer2003です。 今、サーバAとサーバBのディレクトリ間のファイルの差分を抽出 する方法で悩んでいます。(ファイルの中身まで比較する必要はな く、ファイル名のみで比較して抽出すればよいです。) 具体的には以下の手順で行おうと考えています。 1.サーバAでサーバBをネットワークドライブに割り当てる。 2.JavaによりサーバAのディレクトリ内にあるファイルのファ イル名をサーバBのディレクトリのファイル名と1個1個比較 して一致しないものを一覧として保持。 3.2.で保持したものをFTPで転送。 2の処理ではファイルが多くなると当然処理時間が長くなります。 2の処理でもっと効率的なアルゴリズムはないでしょうか? できれば差分抽出はツールなどは使わずにプログラムで行いたい と思っています。 以上、宜しくお願いいたします。 |
|
投稿日時: 2007-10-17 14:24
JNIでWin32APIを使ってフォルダを監視して、イベント起動にできませんかね。
|
|
投稿日時: 2007-10-17 14:45
両方のディレクトリに存在するファイル名でHashMapAとHashMapBを作って、
HashMapAの全ての要素についてそれがHashMapBに存在するかどうかチェックして、 あればHashMapAとHashMapBからその要素を削除する。 これでHashMapA,Bには、それぞれにしか存在しないファイルが残る。 |
|
投稿日時: 2007-10-17 14:46
比較処理中に変更が行われる可能性は除外して考えていいんでしょうか?
OS側の更新日情報が信用できるなら前回の同期時間以後に 変更されたファイルだけ見ればいいようにも思いますけども。 |
|
投稿日時: 2007-10-17 15:25
ファイルシステムのアーカイブビッドを利用すればよいかと。
|
|
投稿日時: 2007-10-17 15:49
Windows Serverの機能のファイル複製サービスではだめなのですか?
|
|
投稿日時: 2007-10-17 15:49
ファイルシステム内のエントリの列挙なんて、ファイル数が多くても、
転送時間に比べればコスト的に知れていると思うのですが。 |
|
投稿日時: 2007-10-18 04:20
ファイル共有しなくてもFTP中で比較した方が簡単では。
検索したらjava版のrsyncがあるようなので、それを使えば終了かも。私はjava版を使ったことないですが。 サーバAとサーバBが遠隔地にあって、夜間バッチで同期する。 ファイルは蓄積型(編集されずに増えていくだけ)。 そういうイメージですかね。 |