[第1の実施の形態]
以下、本発明の実施の形態について図面を参照して説明する。図1は本発明の第1の実施の形態に係るファイル管理装置の構成を示すブロック図である。図1において、100はファイル管理装置、200はファイル名の変更によって世代管理されるファイル群を記憶する記憶装置、300はユーザがファイル管理装置100に対して指示を与えるための入力装置、400はファイル管理装置100からユーザに対して通知を行うための表示装置である。
ファイル管理装置100は、ローテーショングループ作成部101と、ローテーショングループ管理部102と、ファイル識別情報取得部103と、ファイル識別情報管理部104と、ローテーション検出部105とを有する。
ローテーショングループ作成部101は、記憶装置200のコピー対象ファイル群108をグループ分けしたローテーショングループを作成する。
ローテーショングループ管理部102は、作成されたローテーショングループの情報を記憶する。
ファイル識別情報取得部103は、ローテーショングループの情報に対応するファイルのファイル識別情報を記憶装置200のコピー対象ファイル群108から取得する。
ファイル識別情報管理部104は、ファイル識別情報取得部103が取得したファイル識別情報を記憶する。
ローテーション検出部105は、ファイル識別情報管理部104からローテーショングループのファイル識別情報を取得した後に、このローテーショングループに所属するファイルのファイル識別情報をコピー対象ファイル群108から取得し、取得したファイル識別情報を比較してローテーションを検出する。
こうして、本実施の形態では、ファイル群をグループ分けしたローテーショングループを作成し、ローテーショングループの情報をローテーショングループ管理部102に格納しておくことにより、ファイル名が異なっていても同じグループに所属させることができる。また、本実施の形態では、ファイル名の変更によって世代管理される、例えばFreeBSDのシステムログなどのファイル群についても、ファイル識別情報を比較することにより、ローテーションを検出することができる。また、本実施の形態では、ローテーショングループを作成することにより、特許文献2に開示されたマスタファイル世代管理装置のように適用期間情報を用いる必要がなくなる。
[第2の実施の形態]
次に、本発明の第2の実施の形態の構成について図面を参照して詳細に説明する。図2は本発明の第2の実施の形態に係るファイル管理装置の構成を示すブロック図である。本実施の形態は、第1の実施の形態をより具体的に説明するものである。本実施の形態のファイル管理装置100aは、第1の実施の形態のファイル管理装置100に対して、ファイル群コピー部106とファイルコピー先生成部107とを追加したものである。
図2の各部はそれぞれ概略、つぎのような機能を有する。ローテーショングループ作成部101は、コピー対象ファイル群108をローテーショングループごとにグループ分けするための情報、ファイル識別情報として必要な情報、およびファイルコピーの再試行(リトライ)を行うときの制御情報(最大リトライ回数、リトライインターバル)をユーザの指定によって作成し、これらの作成した情報をローテーショングループ管理部102に格納する。
ローテーショングループ管理部102は、ローテーショングループ作成部101から渡される情報を記憶して管理する。図3は、ローテーショングループ管理部102が管理する情報の1例を示す図である。ローテーショングループ管理部102は、ローテーショングループ名と、ファイルパスと、ファイル識別情報の種類を指定する情報と、その他の情報を記憶し管理している。
図3においてファイル識別情報(1)の欄の「ファイルパス」は、ファイルパスをファイル識別情報として用いることを示している。ファイル識別情報(2)の「i−node」は、i−node(オブジェクト識別子)をファイル識別情報として用いることを示し、「更新日時」は、ファイル更新日時をファイル識別情報として用いることを示している。ファイル識別情報(3)の「現在時刻」は、現在時刻をファイル識別情報として用いることを示している。ファイル識別情報(4)の「ファイルデータ」は、ファイルのデータをファイル識別情報として用いることを示している。
ファイル識別情報取得部103は、ローテーショングループの情報を取得する機能と、コピー対象ファイル群108からローテーショングループの情報に対応するファイルパスの一覧とこれらのファイルパスで指定されるファイルのファイル識別情報とを取得する機能と、取得したファイルパスの一覧とそれぞれのファイルのファイル識別情報とをファイル識別情報管理部104に格納する機能と、指定されたファイルパスのファイルのファイル識別情報をコピー対象ファイル群108から取得する機能とを有する。
ファイル識別情報管理部104は、ファイル識別情報取得部103から渡されるファイルパスの一覧とファイルのファイル識別情報とを複数記憶する。図4は、ファイル識別情報管理部104が管理する情報の1例を示す図である。
ローテーション検出部105は、ファイル識別情報取得部103にファイル識別情報取得要求を行う機能と、ファイル識別情報管理部104からファイルパスの一覧とこれらのファイルパスで指定されるファイルのファイル識別情報とを取得する機能と、ファイルパスを指定してファイルのファイル識別情報を取得する機能と、取得したファイル識別情報を比較してローテーションを検出する機能と、ローテーションの検出を通知する機能とを有する。
ファイル群コピー部106は、ファイル識別情報管理部104からローテーショングループのファイルパス、およびファイルコピーをリトライするときの制御情報を取得する機能と、ファイルコピー先生成部107からコピー先のファイルパスを取得する機能と、コピーする情報をコピー対象ファイル群108から取得する機能と、コピー対象ファイル群108から取得した情報をコピー先にコピーする機能と、ローテーション検出部105にローテーション検出要求を行う機能と、ローテーションが検出されたときに、コピー処理をリトライするときの制御情報に従ってリトライする機能とを有する。
ファイルコピー先生成部107は、ファイル識別情報管理部104からローテーショングループの情報を取得し、コピー先のパスを生成する。
なお、ローテーショングループとは、Linuxのシステム・ログのようにファイル名を変更することによって世代管理している一連のログファイルを指す。例えば、ファイルパスがそれぞれ「/var/log/message」、「/var/log/message.1」、「/var/log/message.2」、・・・・「/var/log/message.9」である各ファイルは、同じローテーショングループに属するファイルである。これらのファイルは、「message」の後に続く数字が大きくなるほど、世代が新しくなっている。また、これらのファイルは、ファイルパスがそれぞれ「/var/log/secure」、「/var/log/secure.1」、「/var/log/secure.2」、・・・・「/var/log/secure.9」であるファイルとは別のローテーショングループとなる。
次に、本実施の形態の動作について詳細に説明する。図5はローテーショングループ作成部101の動作を示すフローチャート、図6はファイル識別情報取得部103の動作を示すフローチャート、図7はローテーション検出部105の動作を示すフローチャート、図8はファイル群コピー部106の動作を示すフローチャート、図9はファイルコピー先生成部107の動作を示すフローチャートである。
まず、ローテーショングループ作成部101は、コピー対象ファイル群108をローテーショングループごとにグループ分けするために、ユーザの指定に応じてローテーショングループを作成する(図5ステップS200)。ここでは、名称が「syslog」というローテーショングループの作成がユーザから指定されたものとする。
続いて、ローテーショングループ作成部101は、ステップS200で作成したローテーショングループに所属するファイルのファイルパスの指定をユーザから受け取る(ステップS201)。このファイルパスの指定は、複数指定することができ、ワイルドカードや正規表現などを使用することも可能である。ここでは、ファイルパスとして「/var/adm/syslog/syslog.log」と「/var/adm/syslog/OLDsyslog.log」がユーザから指定されたものとする。
さらに、ローテーショングループ作成部101は、ステップS200で作成したローテーショングループに属するファイルのファイル識別情報の指定をユーザから受け取る(ステップS202)。ファイル識別情報としては、ファイルパス、ファイルサイズ、ファイル作成日時、ファイル更新日時、i−node(オブジェクト識別子)、現在時刻、ファイルのデータなどを使用することが可能である。ここでは、ファイル識別情報として使用する情報の種類として、ファイルパスとi−nodeがユーザから指定されたものとする。
そして、ローテーショングループ作成部101は、ユーザからローテーショングループ作成完了の指示を受けると、作成したローテーショングループの情報(ローテーショングループ名、ファイルパス、ファイル識別情報)をローテーション管理部102に格納する(ステップS203)。なお、前記のとおり、ここでは名称が「syslog」というローテーショングループが1つだけ作成される。
こうして、ローテーショングループが作成されると、ファイル管理装置100aは、コピー対象ファイル群108のコピー、ローテーションの検出を行うことができる。
次に、ファイル群コピー部106は、ユーザからファイル群のコピー要求を受けると(図8ステップS700)、ローテーション検出部105にコピー対象のローテーショングループ全体のローテーション検出を要求する(ステップS701)。ここでは、ローテーショングループ「syslog」のコピー要求を受けたものとする。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がローテーショングループ全体のローテーション検出要求である場合、ファイル識別情報取得部103に対してファイル識別情報取得要求を行う(ステップS601)。ここでは、ファイル群コピー部106からローテーショングループ「syslog」のローテーション検出要求を受けて、ファイル識別情報取得部103に対してローテーショングループ「syslog」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がローテーショングループのファイル識別情報取得要求である場合、ローテーショングループ管理部102から、要求に該当するローテーショングループの情報を取得する(ステップS401)。ここでは、ローテーショングループ「syslog」の情報として、ファイルパス「/var/adm/syslog/syslog.log」とファイル識別情報「ファイルパス」、「i−node」の組と、ファイルパス「/var/adm/syslog/OLDsyslog.log」とファイル識別情報「i−node」の組を取得したものとする。なお、ファイル識別情報「ファイルパス」は、ファイルパスの具体的な値ではなく、ファイルパスをファイル識別情報として用いることを示している。同様に、ファイル識別情報「i−node」は、i−nodeの具体的な値ではなく、i−nodeをファイル識別情報として用いることを示している。
ファイル識別情報取得部103は、ローテーショングループの情報を取得すると、このローテーショングループの情報に対応するファイル識別情報をコピー対象ファイル群108から取得し(ステップS402)、取得したファイル識別情報をファイル識別情報管理部104に格納する(ステップS403)。ここでは、ファイル識別情報として、ファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40728」の組と、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40751」の組を取得し格納したものとする。
ローテーション検出部105は、ファイル識別情報取得部104からローテーショングループのファイル識別情報を取得し(ステップS602)、ファイル識別情報取得部103に対してファイル識別情報取得要求を行う(ステップS603)。ここでは、ファイル識別情報として、ファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40728」の組と、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40751」の組を取得し(ステップS602)、再度、ローテーショングループ「syslog」のファイル識別情報取得要求を行う(ステップS603)。なお、ステップS602,S603および後述するステップS604,S605の処理を実施しなくても、期待する効果を得ることは可能であるが、本実施の形態では実施する。これらの処理を実施しない場合は、後述するステップS606の判断結果を、「ローテーションが発生していない」という結果にする。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がローテーショングループのファイル識別情報取得要求である場合、ローテーショングループ管理部102から、要求に該当するローテーショングループの情報を取得する(ステップS401)。ここでは、ローテーショングループ「syslog」の情報として、ファイルパス「/var/adm/syslog/syslog.log」とファイル識別情報「ファイルパス」、「i−node」の組と、ファイルパス「/var/adm/syslog/OLDsyslog.log」とファイル識別情報「i−node」の組を取得したものとする。
ファイル識別情報取得部103は、ローテーショングループの情報を取得すると、このローテーショングループの情報に対応するファイル識別情報をコピー対象ファイル群108から取得し(ステップS402)、取得したファイル識別情報をファイル識別情報管理部104に格納する(ステップS403)。ここでは、ステップS402でファイル識別情報を取得する前にローテーションが発生し、ファイルパス「/var/adm/syslog/OLDsyslog.log」が削除され、ファイルパス「/var/adm/syslog/syslog.log」が「/var/adm/syslog/OLDsyslog.log」に書き替えられ、ファイルパス「/var/adm/syslog/syslog.log」が新たに作成されたものとする。このとき、ファイル識別情報としては、ファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組と、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組を取得し格納する。
ローテーション検出部105は、ファイル識別情報取得部104からローテーショングループのファイル識別情報を取得し(図7ステップS604)、ステップS602で取得したファイル識別情報とステップS604で取得したファイル識別情報を比較する(ステップS605,S606)。ここでは、ファイル識別情報として、ファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組と、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組を取得し(ステップS604)、このファイル識別情報をステップS602で取得したファイル識別情報と比較する(ステップS605,S606)。
比較すると、ファイルパスとi−nodeの組み合わせが異なっているので、ローテーション検出部105は、ローテーションが発生したと判断する。ローテーション検出部105は、ローテーションが発生したと判断すると、ローテーションが発生したことをファイル群コピー部106に通知する(ステップS607)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS702)、ローテーションが発生したことを通知された場合、コピーのリトライ回数を数えるリトライカウント値をカウントアップし(ステップS703)、カウントアップした後のリトライカウント値が最大リトライ回数以下であるかどうかを判断する(ステップS704)。ファイル群コピー部106は、リトライカウント値が最大リトライ回数以下であれば、所定のリトライインターバルだけ待つ(ステップS705)。ここでは、最大リトライ回数は「2」に設定されており、リトライカウント値は「0」から「1」にカウントアップされる(ステップS703)。リトライインターバルは「2秒」に設定されており、ファイル群コピー部106は、2秒待ってから処理を再開する(ステップS705)。
なお、ファイル群コピー部106は、ステップS703でカウントアップした後のリトライカウント値が最大リトライ回数より大きい場合、ローテーショングループのファイル群のコピーに失敗したことをユーザに通知し、コピー処理を終了する(ステップS706)。
次に、ファイル群コピー部106は、リトライカウント値が最大リトライ回数以下である場合、リトライインターバルだけ待った後に(ステップS705)、ローテーション検出部105にコピー対象のローテーショングループ全体のローテーション検出を要求する(ステップS701)。ここでは、ローテーショングループ「syslog」のローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がローテーショングループ全体のローテーション検出要求である場合、ファイル識別情報取得部103に対してファイル識別情報取得要求を行う(ステップS601)。ここでは、ファイル群コピー部106からローテーショングループ「syslog」のローテーション検出要求を受けて、ファイル識別情報取得部103に対してローテーショングループ「syslog」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がローテーショングループのファイル識別情報取得要求である場合、ローテーショングループ管理部102から、要求に該当するローテーショングループの情報を取得する(ステップS401)。ここでは、ローテーショングループ「syslog」の情報として、ファイルパス「/var/adm/syslog/syslog.log」とファイル識別情報「ファイルパス」、「i−node」の組と、ファイルパス「/var/adm/syslog/OLDsyslog.log」とファイル識別情報「i−node」の組を取得する。
ファイル識別情報取得部103は、ローテーショングループの情報を取得すると、このローテーショングループの情報に対応するファイル識別情報をコピー対象ファイル群108から取得し(ステップS402)、取得したファイル識別情報をファイル識別情報管理部104に格納する(ステップS403)。ここでは、ファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組と、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組を取得し格納する。
ローテーション検出部105は、ファイル識別情報取得部104からローテーショングループのファイル識別情報を取得し(ステップS602)、ファイル識別情報取得部103に対してファイル識別情報取得要求を行う(ステップS603)。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がローテーショングループのファイル識別情報取得要求である場合、ローテーショングループ管理部102から、要求に該当するローテーショングループの情報を取得する(ステップS401)。ここでは、ローテーショングループ「syslog」の情報として、ファイルパス「/var/adm/syslog/syslog.log」とファイル識別情報「ファイルパス」、「i−node」の組と、ファイルパス「/var/adm/syslog/OLDsyslog.log」とファイル識別情報「i−node」の組を取得する。
ファイル識別情報取得部103は、ローテーショングループの情報を取得すると、このローテーショングループの情報に対応するファイル識別情報をコピー対象ファイル群108から取得し(ステップS402)、取得したファイル識別情報をファイル識別情報管理部104に格納する(ステップS403)。ここでは、ファイル識別情報として、ファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組と、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組を取得し格納する。
ローテーション検出部105は、ファイル識別情報取得部104からローテーショングループのファイル識別情報を取得し(図7ステップS604)、ステップS602で取得したファイル識別情報とステップS604で取得したファイル識別情報を比較する(ステップS605,S606)。ここでは、ファイル識別情報として、ファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組と、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組を取得したものとする(ステップS604)。そして、ステップS602で取得したファイル識別情報、すなわちファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組と、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組との比較を行う。
比較すると、ファイルパスとi−nodeの組み合わせが一致するので、ローテーション検出部105は、ローテーションが発生していないと判断する。ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS702)、ローテーションが発生していないことを通知された場合、ファイル識別情報管理部104からローテーショングループのファイル識別情報を取得する(ステップS707)。ここでは、ファイル識別情報として、ファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組と、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組を取得する。
ファイル群コピー部106は、ファイル識別情報を取得すると、このファイル識別情報に対するコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、ファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000001」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000001」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、ファイルパス「/var/adm/syslog/OLDsyslog.log」のファイルをコピー先ファイルパス「/tmp/copy_tmp/copy_file_000001」の記憶領域にコピーする。また、コピー元のファイルパス「/var/adm/syslog/OLDsyslog.log」、ファイル更新日時、i−node、ファイル生成日時およびファイルサイズを、ファイルパス「/tmp/copy_tmp/copy_file_000001」のファイルと対応付けした形でファイルパス「/tmp/copy_tmp/map_file_000001」の記憶領域に記録する。なお、ここではコピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「/var/adm/syslog/OLDsyslog.log」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「/var/adm/syslog/OLDsyslog.log」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「/var/adm/syslog/OLDsyslog.log」に対応するファイル識別情報としてi−node「40751」を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得したファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組と、ステップS707で取得されたファイルパス「/var/adm/syslog/OLDsyslog.log」とi−node「40751」の組が一致するので、ローテーションが発生していないと判断する。
ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生していないことを通知された場合、コピー対象のローテーショングループにコピー処理されていないファイルがあるかをどうかを確認し(ステップS713)、コピー処理されていないファイルが存在する場合、このファイルのコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、コピー対象のローテーショングループ「syslog」にファイルパス「/var/adm/syslog/syslog.log」のファイルがコピーされずに残っている。そこで、ファイル群コピー部106は、ファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000002」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000001」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、ファイルパス「/var/adm/syslog/syslog.log」のファイルをコピー先ファイルパス「/tmp/copy_tmp/copy_file_000002」の記憶領域にコピーする。また、コピー元のファイルパス「/var/adm/syslog/syslog.log」、ファイル更新日時、i−node、ファイル生成日時およびファイルサイズを、ファイルパス「/tmp/copy_tmp/copy_file_000002」のファイルと対応付けした形でファイルパス「/tmp/copy_tmp/map_file_000001」の記憶領域に追記する。なお、ここではコピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「/var/adm/syslog/syslog.log」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「/var/adm/syslog/syslog.log」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「/var/adm/syslog/syslog.log」に対応するファイル識別情報としてi−node「40786」を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得したファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組と、ステップS707で取得されたファイルパス「/var/adm/syslog/syslog.log」とi−node「40786」の組が一致するので、ローテーションが発生していないと判断する。
ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生していないことを通知された場合、コピー対象のローテーショングループにコピー処理されていないファイルがあるかをどうかを確認し(ステップS713)、コピー処理されていないファイルが存在しない場合、コピー対象のローテーショングループのファイル群のコピーが完了したことをユーザに通知する(ステップS714)。ここでは、ローテーショングループ「syslog」に次のファイルが無いことを確認して、ファイル群のコピーが完了したことを通知する。以上で、一つのローテーショングループのファイル群のコピーが完了した。
こうして、本実施の形態では、第1の実施の形態で説明した効果を得ることができる。また、本実施の形態では、ローテーションがファイル群のコピー中に発生しても、コピー処理をリトライすることによって、ファイルを重複なくコピーすることができる。その理由は、上記で述べたファイル識別情報を元にファイルを識別しているためである。ローテーションの検出には、ファイルコピー前のファイル識別情報とファイルコピー後のファイル識別情報を比較して、差分があればローテーションが発生したと判断する。
また、本実施の形態では、ローテーションがファイル群のコピー中に発生しても、コピー処理をリトライすることによって、ファイル群を連続した形(すなわち、歯抜けのない形)でコピーすることができる。その理由は、予め信頼性の高いコピー対象の一覧を作成してからファイル群のコピー処理を行うため、ファイル群のコピー処理中にファイルにアクセスできないことがあれば、ローテーションが発生したと判断できるためである。
[第3の実施の形態]
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。本実施の形態は、第1の実施の形態をより具体的に説明するものである。本実施の形態においても、ファイル管理装置100aの構成および動作は第2の実施の形態と同様であるので、図2〜図9を用いて説明する。
まず、ローテーショングループ作成部101は、コピー対象ファイル群108をローテーショングループごとにグループ分けするために、ユーザの指定に応じてローテーショングループを作成する(図5ステップS200)。ここでは、名称が「messages」というローテーショングループの作成がユーザから指定されたものとする。
続いて、ローテーショングループ作成部101は、ステップS200で作成したローテーショングループに所属するファイルのファイルパスの指定をユーザから受け取る(ステップS201)。このファイルパスの指定は、複数指定することができ、ワイルドカードや正規表現などを使用することも可能である。ここでは、ファイルパスとして「/var/log/messages」と「/var/log/messages.?」がユーザから指定されたものとする。
さらに、ローテーショングループ作成部101は、ステップS200で作成したローテーショングループに属するファイルのファイル識別情報の指定をユーザから受け取る(ステップS202)。ファイル識別情報としては、ファイルパス、ファイルサイズ、ファイル作成日時、ファイル更新日時、i−node(オブジェクト識別子)、現在時刻、ファイルのデータなどを使用することが可能である。ここでは、ファイル識別情報として使用する情報の種類として、ファイルパスとi−nodeがユーザから指定されたものとする。
そして、ローテーショングループ作成部101は、ユーザからローテーショングループ作成完了の指示を受けると、作成したローテーショングループの情報をローテーション管理部102に格納する(ステップS203)。なお、前記のとおり、ここでは名称が「messages」というローテーショングループが1つだけ作成される。
こうして、ローテーショングループが作成されると、ファイル管理装置100aは、コピー対象ファイル群108のコピー、ローテーションの検出を行うことができる。
次に、ファイル群コピー部106は、ユーザからファイル群のコピー要求を受けると(図8ステップS700)、ローテーション検出部105にコピー対象のローテーショングループ全体のローテーション検出を要求する(ステップS701)。ここでは、ローテーショングループ「messages」のコピー要求を受けたものとする。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がローテーショングループ全体のローテーション検出要求である場合、ファイル識別情報取得部103に対してファイル識別情報取得要求を行う(ステップS601)。ここでは、ファイル群コピー部106からローテーショングループ「messages」のローテーション検出要求を受けて、ファイル識別情報取得部103に対してローテーショングループ「messages」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がローテーショングループのファイル識別情報取得要求である場合、ローテーショングループ管理部102から、要求に該当するローテーショングループの情報を取得する(ステップS401)。ここでは、ローテーショングループ「messages」の情報として、ファイルパス「/var/log/messages」とファイル識別情報「ファイルパス」、「i−node」の組と、ファイルパス「/var/log/messages.?」とファイル識別情報「i−node」の組を取得したものする。
ファイル識別情報取得部103は、ローテーショングループの情報を取得すると、このローテーショングループの情報に対応するファイル識別情報をコピー対象ファイル群108から取得し(ステップS402)、取得したファイル識別情報をファイル識別情報管理部104に格納する(ステップS403)。ここでは、ファイル識別情報として、ファイルパス「/var/log/messages」とi−node「51112」の組と、ファイルパス「/var/log/messages.1」とi−node「51133」の組を取得し格納したものとする。
図7では、ローテーション検出部105は、ステップS601の後にステップS602〜S605の処理を行うことになっているが、ステップS602〜S605の処理を実施しなくても、期待する効果を得ることは可能であるため、本実施の形態では実施しない。ステップS602〜S605の処理を実施しない場合、ステップS606の判断結果を「ローテーションが発生していない」という結果にする。ローテーション検出部105は、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS702)、ローテーションが発生していないことを通知された場合、ファイル識別情報管理部104からローテーショングループのファイル識別情報を取得する(ステップS707)。ここでは、ファイル識別情報として、ファイルパス「/var/log/messages」とi−node「51112」の組と、ファイルパス「/var/log/messages.1」とi−node「51133」の組を取得する。
ファイル群コピー部106は、ファイル識別情報を取得すると、このファイル識別情報に対するコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、ファイルパス「/var/log/messages」とi−node「51112」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000001」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000001」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、ファイルパス「/var/log/messages」のファイルを開いてコピーを開始する直前にローテーションが開始され、ファイルパス「/var/log/messages.1」が「/var/log/messages.2」に書き替えられ、ファイルパス「/var/log/messages」が「/var/log/messages.1」に書き替えられ、ファイルパス「/var/log/messages」が作成されるまでの間に、ファイル群コピー部106の「/var/log/messages」に対するオープンが実行されたものとする。このとき、ファイルパス「/var/log/messages」は存在しないので、オープンは失敗する。この後、ローテーション処理の続きでファイルパス「/var/log/messages」が作成される。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに失敗したと判断した場合、さらにコピー対象のファイルが存在するかどうかを判断し(ステップS715)、コピー対象のファイルが無いためにコピーが失敗したと判断した場合、ローテーション検出部105にローテーション検出要求を行う(ステップS711)。ここでは、ファイルが無いことが原因でコピーが失敗したため、ローテーション検出要求を行うものとする。
なお、ファイル群コピー部106は、ファイルが無い以外の理由でコピー処理が失敗した場合はローテーション検出要求は行わずに、ローテーショングループのファイル群のコピーに失敗したことをユーザに通知する(ステップS706)。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピー失敗によるローテーション検出要求である場合、ローテーションが発生したことをファイル群コピー部106に通知する(ステップS607)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生したことを通知された場合、リトライカウント値をカウントアップし(ステップS703)、カウントアップした後のリトライカウント値が最大リトライ回数以下であるかどうかを判断する(ステップS704)。ファイル群コピー部106は、リトライカウント値が最大リトライ回数以下であれば、所定のリトライインターバルだけ待つ(ステップS705)。ここでは、最大リトライ回数は「2」に設定されており、リトライカウント値は「0」から「1」にカウントアップされる(ステップS703)。リトライインターバルは「2秒」に設定されており、ファイル群コピー部106は、2秒待ってから処理を再開する(ステップS705)。
なお、ファイル群コピー部106は、ステップS703でカウントアップした後のリトライカウント値が最大リトライ回数より大きい場合、ローテーショングループのファイル群のコピーに失敗したことをユーザに通知し、コピー処理を終了する(ステップS706)。
次に、ファイル群コピー部106は、リトライカウント値が最大リトライ回数以下である場合、リトライインターバルだけ待った後に(ステップS705)、ローテーション検出部105にコピー対象のローテーショングループ全体のローテーション検出を要求する(ステップS701)。ここでは、ローテーショングループ「messages」のローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がローテーショングループ全体のローテーション検出要求である場合、ファイル識別情報取得部103に対してファイル識別情報取得要求を行う(ステップS601)。ここでは、ファイル群コピー部106からローテーショングループ「messages」のローテーション検出要求を受けて、ファイル識別情報取得部103に対してローテーショングループ「messages」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がローテーショングループのファイル識別情報取得要求である場合、ローテーショングループ管理部102から、要求に該当するローテーショングループの情報を取得する(ステップS401)。ここでは、ローテーショングループ「messages」の情報として、ファイルパス「/var/log/messages」とファイル識別情報「ファイルパス」、「i−node」の組と、ファイルパス「/var/log/messages.?」とファイル識別情報「i−node」の組を取得する。
ファイル識別情報取得部103は、ローテーショングループの情報を取得すると、このローテーショングループの情報に対応するファイル識別情報をコピー対象ファイル群108から取得し(ステップS402)、取得したファイル識別情報をファイル識別情報管理部104に格納する(ステップS403)。ここでは、ファイルパス「/var/log/messages」とi−node「51114」の組と、ファイルパス「/var/log/messages.1」とi−node「51112」の組と、ファイルパス「/var/log/messages.2」とi−node「51133」の組を取得し格納する。
図7では、ローテーション検出部105は、ステップS601の後にステップS602〜S605の処理を行うことになっているが、前述のとおり、本実施の形態では、ステップS602〜S605の処理を実施しない。ステップS602〜S605の処理を実施しない場合、ステップS606の判断結果を「ローテーションが発生していない」という結果にする。ローテーション検出部105は、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS702)、ローテーションが発生していないことを通知された場合、ファイル識別情報管理部104からローテーショングループのファイル識別情報を取得する(ステップS707)。ここでは、ファイル識別情報として、ファイルパス「/var/log/messages」とi−node「51114」の組と、ファイルパス「/var/log/messages.1」とi−node「51112」の組と、ファイルパス「/var/log/messages.2」とi−node「51133」の組を取得する。
ファイル群コピー部106は、ファイル識別情報を取得すると、このファイル識別情報に対するコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、ファイルパス「/var/log/messages」とi−node「51114」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000001」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000002」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、ファイルパス「/var/log/messages」のファイルをコピー先ファイルパス「/tmp/copy_tmp/copy_file_000001」の記憶領域にコピーする。また、コピー元のファイルパス「/var/log/messages」、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズを、ファイルパス「/tmp/copy_tmp/copy_file_000001」のファイルと対応付けした形でファイルパス「/tmp/copy_tmp/map_file_000002」の記憶領域に記録する。なお、ここではコピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「/var/log/messages」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「/var/log/messages」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「/var/log/messages」に対応するファイル識別情報としてi−node「51114」を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得したファイルパス「/var/log/messages」とi−node「51114」の組と、ステップS707で取得されたファイルパス「/var/log/messages」とi−node「51114」の組が一致するので、ローテーションが発生していないと判断する。
ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生していないことを通知された場合、コピー対象のローテーショングループにコピー処理されていないファイルがあるかをどうかを確認し(ステップS713)、コピー処理されていないファイルが存在する場合、このファイルのコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、コピー対象のローテーショングループ「messages」にファイルパス「/var/log/messages.1」のファイルがコピーされずに残っている。そこで、ファイル群コピー部106は、ファイルパス「/var/log/messages.1」とi−node「51112」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000002」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000002」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、ファイルパス「/var/log/messages.1」のファイルをコピー先ファイルパス「/tmp/copy_tmp/copy_file_000002」の記憶領域にコピーする。また、コピー元のファイルパス「/var/log/messages.1」、ファイル更新日時、i−node、ファイル生成日時およびファイルサイズを、ファイルパス「/tmp/copy_tmp/copy_file_000002」のファイルと対応付けした形でファイルパス「/tmp/copy_tmp/map_file_000002」の記憶領域に記録する。なお、ここではコピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「/var/log/messages.1」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「/var/log/messages.1」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「/var/log/messages.1」に対応するファイル識別情報としてi−node「51112」を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得したファイルパス「/var/log/messages.1」とi−node「51112」の組と、ステップS707で取得されたファイルパス「/var/log/messages.1」とi−node「51112」の組が一致するので、ローテーションが発生していないと判断する。
ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生していないことを通知された場合、コピー対象のローテーショングループにコピー処理されていないファイルがあるかをどうかを確認し(ステップS713)、コピー処理されていないファイルが存在する場合、このファイルのコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、コピー対象のローテーショングループ「messages」にファイルパス「/var/log/messages.2」のファイルがコピーされずに残っている。そこで、ファイル群コピー部106は、ファイルパス「/var/log/messages.2」とi−node「51133」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000003」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000002」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、ファイルパス「/var/log/messages.2」のファイルをコピー先ファイルパス「/tmp/copy_tmp/copy_file_000003」の記憶領域にコピーする。また、コピー元のファイルパス「/var/log/messages.2」、ファイル更新日時、i−node、ファイル生成日時およびファイルサイズを、ファイルパス「/tmp/copy_tmp/copy_file_000003」のファイルと対応付けした形でファイルパス「/tmp/copy_tmp/map_file_000002」の記憶領域に記録する。なお、ここではコピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「/var/log/messages.2」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「/var/log/messages.2」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「/var/log/messages.2」に対応するファイル識別情報としてi−node「51133」を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得したファイルパス「/var/log/messages.2」とi−node「51133」の組と、ステップS707で取得されたファイルパス「/var/log/messages.2」とi−node「51133」の組が一致するので、ローテーションが発生していないと判断する。
ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生していないことを通知された場合、コピー対象のローテーショングループにコピー処理されていないファイルがあるかをどうかを確認し(ステップS713)、コピー処理されていないファイルが存在しない場合、コピー対象のローテーショングループのファイル群のコピーが完了したことをユーザに通知する(ステップS714)。ここでは、ローテーショングループ「messages」に次のファイルが無いことを確認して、ファイル群のコピーが完了したことを通知する。以上で、一つのローテーショングループのファイル群のコピーが完了した。
[第4の実施の形態]
次に、本発明の第4の実施の形態について図面を参照して詳細に説明する。本実施の形態は、第1の実施の形態をより具体的に説明するものである。本実施の形態においても、ファイル管理装置100aの構成および動作は第2の実施の形態と同様であるので、図2〜図9を用いて説明する。
まず、ローテーショングループ作成部101は、コピー対象ファイル群108をローテーショングループごとにグループ分けするために、ユーザの指定に応じてローテーショングループを作成する(図5ステップS200)。ここでは、名称が「Apache access」というローテーショングループの作成がユーザから指定されたものとする。
続いて、ローテーショングループ作成部101は、ステップS200で作成したローテーショングループに所属するファイルのファイルパスの指定をユーザから受け取る(ステップS201)。このファイルパスの指定は、複数指定することができ、ワイルドカードや正規表現などを使用することも可能である。ここでは、ファイルパスとして「C:\Apache2.2\logs\access_log」と「C:\Apache2.2\logs\access_log.?」がユーザから指定されたものとする。
さらに、ローテーショングループ作成部101は、ステップS200で作成したローテーショングループに属するファイルのファイル識別情報の指定をユーザから受け取る(ステップS202)。ファイル識別情報としては、ファイルパス、ファイルサイズ、ファイル作成日時、ファイル更新日時、i−node(オブジェクト識別子)、現在時刻、ファイルのデータなどを使用することが可能である。ここでは、ファイル識別情報として使用する情報の種類として、ファイルパスとi−nodeと現在時刻とファイルデータがユーザから指定されたものとする。
そして、ローテーショングループ作成部101は、ユーザからローテーショングループ作成完了の指示を受けると、作成したローテーショングループの情報をローテーション管理部102に格納する(ステップS203)。なお、前記のとおり、ここでは名称が「Apache access」というローテーショングループが1つだけ作成される。
こうして、ローテーショングループが作成されると、ファイル管理装置100aは、コピー対象ファイル群108のコピー、ローテーションの検出を行うことができる。
次に、ファイル群コピー部106は、ユーザからファイル群のコピー要求を受けると(図8ステップS700)、ローテーション検出部105にコピー対象のローテーショングループ全体のローテーション検出を要求する(ステップS701)。ここでは、ローテーショングループ「Apache access」のコピー要求を受けたものとする。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がローテーショングループ全体のローテーション検出要求である場合、ファイル識別情報取得部103に対してファイル識別情報取得要求を行う(ステップS601)。ここでは、ファイル群コピー部106からローテーショングループ「Apache access」のローテーション検出要求を受けて、ファイル識別情報取得部103に対してローテーショングループ「Apache access」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がローテーショングループのファイル識別情報取得要求である場合、ローテーショングループ管理部102から、要求に該当するローテーショングループの情報を取得する(ステップS401)。ここでは、ローテーショングループ「Apache access」の情報として、ファイルパス「C:\Apache2.2\logs\access_log」とファイル識別情報「ファイルパス」、「更新日時」、「現在時刻」、「ファイルデータ」の組と、ファイルパス「C:\Apache2.2\logs\access_log.?」とファイル識別情報「ファイルパス」、「更新日時」、「現在時刻」、「ファイルデータ」の組を取得したものとする。
ファイル識別情報取得部103は、ローテーショングループの情報を取得すると、このローテーショングループの情報に対応するファイル識別情報をコピー対象ファイル群108から取得し(ステップS402)、取得したファイル識別情報をファイル識別情報管理部104に格納する(ステップS403)。ここでは、ファイル識別情報として、ファイルパス「C:\Apache2.2\logs\access_log」と更新日時「2008/01/01 10:00:00.000」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組と、ファイルパス「C:\Apache2.2\logs\access_log.1」と更新日時「2007/12/12 09:59:59.955」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.221 - - [30/Nov/2007:08:30:11 +0900] "GET / HTTP/1.1" 200 - 」の組を取得し格納したものとする。現在時刻の取得は更新日時を取得する前に行う。ファイルデータは、ファイルの先頭から予め決められたサイズ、もしくはレコード数分取得する。ここでは、1レコード分取得する。
図7では、ローテーション検出部105は、ステップS601の後にステップS602〜S605の処理を行うことになっているが、ステップS602〜S605の処理を実施しなくても、期待する効果を得ることは可能であるため、本実施の形態では実施しない。ステップS602〜S605の処理を実施しない場合、ステップS606の判断結果を「ローテーションが発生していない」という結果にする。ローテーション検出部105は、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS702)、ローテーションが発生していないことを通知された場合、ファイル識別情報管理部104からローテーショングループのファイル識別情報を取得する(ステップS707)。ここでは、ファイル識別情報として、ファイルパス「C:\Apache2.2\logs\access_log」と更新日時「2008/01/01 10:00:00.000」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組と、ファイルパス「C:\Apache2.2\logs\access_log.1」と更新日時「2007/12/12 09:59:59.955」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.221 - - [30/Nov/2007:08:30:11 +0900] "GET / HTTP/1.1" 200 - 」の組を取得する。
ファイル群コピー部106は、ファイル識別情報を取得すると、このファイル識別情報に対するコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log」と更新日時「2008/01/01 10:00:00.000」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000001」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000003」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、コピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「C:\Apache2.2\logs\access_log」に対応するファイル識別情報として、更新日時「2008/01/01 10:00:02.000」と現在時刻「2008/01/01 10:00:02.222」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得したファイルパス「C:\Apache2.2\logs\access_log」と更新日時「2008/01/01 10:00:02.000」と現在時刻「2008/01/01 10:00:02.222」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組と、ステップS707で取得されたファイルパス「C:\Apache2.2\logs\access_log」と更新日時「2008/01/01 10:00:00.000」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組を比較する。
ステップS610で取得した更新日時「2008/01/01 10:00:02.000」とステップS707で取得された更新日時「2008/01/01 10:00:00.000」は一致しない。しかし、ステップS610で取得した更新日時「2008/01/01 10:00:02.000」は、ステップS707で取得された現在時刻「2008/01/01 10:00:01.111」より後の時間で、ステップS610で取得したファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」とステップS707で取得されたファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」が一致するため、ローテーションが発生していないと判断する。
更新日時、現在時刻、ファイルデータを用いたローテーション検出は、以下の要領で行う。
(a)ローテーション検出部105は、更新日時が変化していない場合、ローテーションが発生していないと判断する。
(b)ローテーション検出部105は、更新日時が変化していて、その変化している更新日時が、先にステップS707で取得された現在時刻より前の時刻である場合は、ローテーションが発生したと判断する。
(c)ローテーション検出部105は、更新日時が変化していて、その変化している更新日時が、先にステップS707で取得された現在時刻と同じ時刻もしくは後の時刻である場合は、ファイルデータを比較して、ファイルデータが一致すれば、ローテーションが発生していないと判断し、ファイルデータが一致しなければ、ローテーションが発生したと判断する。
ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生していないことを通知された場合、コピー対象のローテーショングループにコピー処理されていないファイルがあるかをどうかを確認し(ステップS713)、コピー処理されていないファイルが存在する場合、このファイルのコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、コピー対象のローテーショングループ「Apache access」にファイルパス「C:\Apache2.2\logs\access_log.1」のファイルがコピーされずに残っている。そこで、ファイル群コピー部106は、ファイルパス「C:\Apache2.2\logs\access_log.1」と更新日時「2007/12/12 09:59:59.955」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.221 - - [30/Nov/2007:08:30:11 +0900] "GET / HTTP/1.1" 200 - 」の組に対するコピー先情報を要求する。
ここで、ローテーションが開始され、ファイルパス「C:\Apache2.2\logs\access_log.1」が「C:\Apache2.2\logs\access_log.2」に書き替えられ、ファイルパス「C:\Apache2.2\logs\access_log」が「C:\Apache2.2\logs\access_log.1」に書き替えられ、新たにファイルパス「C:\Apache2.2\logs\access_log」が生成されたものとする。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000002」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000003」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log.1」のファイルをコピー先ファイルパス「/tmp/copy_tmp/copy_file_000002」の記憶領域にコピーする。また、コピー元のファイルパス「C:\Apache2.2\logs\access_log.1」、ファイル更新日時、i−node、ファイル生成日時およびファイルサイズを、ファイルパス「/tmp/copy_tmp/copy_file_000002」のファイルと対応付けした形でファイルパス「/tmp/copy_tmp/map_file_000003」の記憶領域に記録する。なお、ここではコピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log.1」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log.1」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「C:\Apache2.2\logs\access_log.1」に対応するファイル識別情報として、更新日時「2008/01/01 10:00:02.000」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得したファイルパス「/var/log/messages.1」とi−node「51112」の組と、ステップS707で取得されたファイルパス「/var/log/messages.1」とi−node「51112」の組が一致するので、ローテーションが発生していないと判断する。ここでは、ステップS610で取得したファイルパス「C:\Apache2.2\logs\access_log.1」と更新日時「2008/01/01 10:00:02.000」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組と、ステップS707で取得されたファイルパス「C:\Apache2.2\logs\access_log.1」と更新日時「2007/12/12 09:59:59.955」と現在時刻「2008/01/01 10:00:01.111」とファイルデータ「10.34.75.221 - - [30/Nov/2007:08:30:11 +0900] "GET / HTTP/1.1" 200 - 」の組を比較する。
ステップS610で取得した更新日時「2008/01/01 10:00:02.000」とステップS707で取得された更新日時「2007/12/12 09:59:59.955」は一致しない。さらに、ステップS610で取得した更新日時「2008/01/01 10:00:02.000」はステップS707で取得された現在時刻「2008/01/01 10:00:01.111」より後の時刻であり、ステップS610で取得したファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」とステップS707で取得されたファイルデータ「10.34.75.221 - - [30/Nov/2007:08:30:11 +0900] "GET / HTTP/1.1" 200 -」が一致しないため、ローテーションが発生したと判断する。
ローテーション検出部105は、ローテーションが発生したと判断すると、ローテーションが発生したことをファイル群コピー部106に通知する(ステップS607)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生したことを通知された場合、リトライカウント値をカウントアップし(ステップS703)、カウントアップした後のリトライカウント値が最大リトライ回数以下であるかどうかを判断する(ステップS704)。ファイル群コピー部106は、リトライカウント値が最大リトライ回数以下であれば、所定のリトライインターバルだけ待つ(ステップS705)。ここでは、最大リトライ回数は「2」に設定されており、リトライカウント値は「0」から「1」にカウントアップされる(ステップS703)。リトライインターバルは「2秒」に設定されており、ファイル群コピー部106は、2秒待ってから処理を再開する(ステップS705)。
なお、ファイル群コピー部106は、ステップS703でカウントアップした後のリトライカウント値が最大リトライ回数より大きい場合、ローテーショングループのファイル群のコピーに失敗したことをユーザに通知し、コピー処理を終了する(ステップS706)。
次に、ファイル群コピー部106は、リトライカウント値が最大リトライ回数以下である場合、リトライインターバルだけ待った後に(ステップS705)、ローテーション検出部105にコピー対象のローテーショングループ全体のローテーション検出を要求する(ステップS701)。ここでは、ローテーショングループ「Apache access」のローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がローテーショングループ全体のローテーション検出要求である場合、ファイル識別情報取得部103に対してファイル識別情報取得要求を行う(ステップS601)。ここでは、ファイル群コピー部106からローテーショングループ「Apache access」のローテーション検出要求を受けて、ファイル識別情報取得部103に対してローテーショングループ「Apache access」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がローテーショングループのファイル識別情報取得要求である場合、ローテーショングループ管理部102から、要求に該当するローテーショングループの情報を取得する(ステップS401)。ここでは、ローテーショングループ「Apache access」の情報として、ファイルパス「C:\Apache2.2\logs\access_log」とファイル識別情報「ファイルパス」、「更新日時」、「現在時刻」、「ファイルデータ」の組と、ファイルパス「C:\Apache2.2\logs\access_log.?」とファイル識別情報「ファイルパス」、「更新日時」、「現在時刻」、「ファイルデータ」の組を取得する。
ファイル識別情報取得部103は、ローテーショングループの情報を取得すると、このローテーショングループの情報に対応するファイル識別情報をコピー対象ファイル群108から取得し(ステップS402)、取得したファイル識別情報をファイル識別情報管理部104に格納する(ステップS403)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log」と更新日時「2008/01/01 10:00:03.000」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.219 - - [01/Jan/2008:10:00:03 +0900] "GET / HTTP/1.1" 200 - 」の組と、ファイルパス「C:\Apache2.2\logs\access_log.1」と更新日時「2008/01/01 10:00:02.000」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組と、ファイルパス「C:\Apache2.2\logs\access_log.2」と更新日時「2007/12/12 09:59:59.955」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.221 - - [30/Nov/2007:08:30:11 +0900] "GET / HTTP/1.1" 200 - 」の組を取得し格納する。
図7では、ローテーション検出部105は、ステップS601の後にステップS602〜S605の処理を行うことになっているが、前述のとおり、本実施の形態では、ステップS602〜S605の処理を実施しない。ステップS602〜S605の処理を実施しない場合、ステップS606の判断結果を「ローテーションが発生していない」という結果にする。ローテーション検出部105は、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS702)、ローテーションが発生していないことを通知された場合、ファイル識別情報管理部104からローテーショングループのファイル識別情報を取得する(ステップS707)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log」と更新日時「2008/01/01 10:00:03.000」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.219 - - [01/Jan/2008:10:00:03 +0900] "GET / HTTP/1.1" 200 - 」の組と、ファイルパス「C:\Apache2.2\logs\access_log.1」と更新日時「2008/01/01 10:00:02.000」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組と、ファイルパス「C:\Apache2.2\logs\access_log.2」と更新日時「2007/12/12 09:59:59.955」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.221 - - [30/Nov/2007:08:30:11 +0900] "GET / HTTP/1.1" 200 - 」の組を取得する。
ファイル群コピー部106は、ファイル識別情報を取得すると、このファイル識別情報に対するコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log」と更新日時「2008/01/01 10:00:03.000」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.219 - - [01/Jan/2008:10:00:03 +0900] "GET / HTTP/1.1" 200 - 」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000001」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000003」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、コピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「C:\Apache2.2\logs\access_log」に対応するファイル識別情報として、更新日時「2008/01/01 10:00:03.000」と現在時刻「2008/01/01 10:00:06.211」とファイルデータ「10.34.75.219 - - [01/Jan/2008:10:00:03 +0900] "GET / HTTP/1.1" 200 - 」の組を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得した更新日時「2008/01/01 10:00:03.000」とステップS707で取得された更新日時「2008/01/01 10:00:03.000」が一致するため、ローテーションは発生していないと判断する。
ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生していないことを通知された場合、コピー対象のローテーショングループにコピー処理されていないファイルがあるかをどうかを確認し(ステップS713)、コピー処理されていないファイルが存在する場合、このファイルのコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、コピー対象のローテーショングループ「Apache access」にファイルパス「C:\Apache2.2\logs\access_log.1」のファイルがコピーされずに残っている。そこで、ファイル群コピー部106は、ファイルパス「C:\Apache2.2\logs\access_log.1」と更新日時「2008/01/01 10:00:02.000」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000002」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000003」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log.1」のファイルをコピー先ファイルパス「/tmp/copy_tmp/copy_file_000002」の記憶領域にコピーする。また、コピー元のファイルパス「C:\Apache2.2\logs\access_log.1」、ファイル更新日時、i−node、ファイル生成日時およびファイルサイズを、ファイルパス「/tmp/copy_tmp/copy_file_000002」のファイルと対応付けした形でファイルパス「/tmp/copy_tmp/map_file_000003」の記憶領域に記録する。なお、ここではコピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log.1」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log.1」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「C:\Apache2.2\logs\access_log.1」に対応するファイル識別情報として、更新日時「2008/01/01 10:00:02.000」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.220 - - [12/Dec/2007:10:00:01 +0900] "GET / HTTP/1.1" 200 44」の組を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得した更新日時「2008/01/01 10:00:02.000」とステップS707で取得された更新日時「2008/01/01 10:00:02.000」が一致するため、ローテーションは発生していないと判断する。
ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生していないことを通知された場合、コピー対象のローテーショングループにコピー処理されていないファイルがあるかをどうかを確認し(ステップS713)、コピー処理されていないファイルが存在する場合、このファイルのコピー先情報をファイルコピー先生成部107に要求する(ステップS708)。ここでは、コピー対象のローテーショングループ「Apache access」にファイルパス「C:\Apache2.2\logs\access_log.2」のファイルがコピーされずに残っている。そこで、ファイル群コピー部106は、ファイルパス「C:\Apache2.2\logs\access_log.2」と更新日時「2007/12/12 09:59:59.955」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.221 - - [30/Nov/2007:08:30:11 +0900] "GET / HTTP/1.1" 200 - 」の組に対するコピー先情報を要求する。
ファイルコピー先生成部107は、ファイル群コピー部106の要求からファイル識別情報を抽出し、このファイル識別情報に対するファイルコピー先情報を生成して(図9ステップS800)、生成したファイルコピー先情報をファイル群コピー部106に渡す(ステップS801)。ここでは、ファイルコピー先情報として、コピー先ファイルパス「/tmp/copy_tmp/copy_file_000003」とその他の情報の記録先ファイルパス「/tmp/copy_tmp/map_file_000003」とが生成されるものとする。その他の情報としては、コピー元のファイルパス、ファイル更新日時、i−node、ファイル生成日時、ファイルサイズなどが含まれる。これらの情報は、コピー先ファイルと対応付けされた形で記録される。
ファイル群コピー部106は、ファイルコピー先生成部107からファイルコピー先情報を取得すると、この情報で指定されるコピー先にコピー対象のファイルをコピーする(図8ステップS709)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log.2」のファイルをコピー先ファイルパス「/tmp/copy_tmp/copy_file_000003」の記憶領域にコピーする。また、コピー元のファイルパス「C:\Apache2.2\logs\access_log.2」、ファイル更新日時、i−node、ファイル生成日時およびファイルサイズを、ファイルパス「/tmp/copy_tmp/copy_file_000003」のファイルと対応付けした形でファイルパス「/tmp/copy_tmp/map_file_000003」の記憶領域に記録する。なお、ここではコピーに成功したものとする。
ファイル群コピー部106は、コピーに成功したかどうかを判断し(ステップS710)、コピーに成功したと判断すると、ローテーション検出部105に対して、コピーに成功したファイルのローテーション検出要求を行う(ステップS711)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log.2」のファイルのローテーション検出要求を行う。
ローテーション検出部105は、ローテーション検出要求を受けたときに(図7ステップS600)、この要求がコピーに成功したファイルのローテーション検出要求である場合、このローテーション検出要求に含まれるファイルパスをファイル識別情報取得部103に対して指定してファイル識別情報取得要求を行う(ステップS609)。ここでは、ファイルパス「C:\Apache2.2\logs\access_log.2」のファイル識別情報取得要求を行う。
ファイル識別情報取得部103は、ローテーション検出部105からファイル識別情報取得要求を受けたときに(図6ステップS400)、この要求がファイルパス指定のファイル識別情報取得要求である場合、指定されたファイルパスのファイル識別情報をコピー対象ファイル群108から取得し(ステップS404)、取得したファイル識別情報をローテーション検出部105に渡す(ステップS405)。ここでは、指定されたファイルパス「C:\Apache2.2\logs\access_log.2」に対応するファイル識別情報として、更新日時「2007/12/12 09:59:59.955」と現在時刻「2008/01/01 10:00:05.111」とファイルデータ「10.34.75.221 - - [30/Nov/2007:08:30:11 +0900] "GET / HTTP/1.1" 200 - 」の組を取得する。
ローテーション検出部105は、ファイル識別情報取得部103からファイル識別情報を取得すると、このファイル識別情報をステップS707で取得されたファイル識別情報と比較する(ステップS610,S611)。ここでは、ステップS610で取得した更新日時「2007/12/12 09:59:59.955」とステップS707で取得された更新日時「2007/12/12 09:59:59.955」が一致するため、ローテーションは発生していないと判断する。
ローテーション検出部105は、ローテーションが発生していないと判断すると、ローテーションが発生していないことをファイル群コピー部106に通知する(ステップS608)。
ファイル群コピー部106は、ローテーション検出部105から通知を受けたとき(図8ステップS712)、ローテーションが発生していないことを通知された場合、コピー対象のローテーショングループにコピー処理されていないファイルがあるかをどうかを確認し(ステップS713)、コピー処理されていないファイルが存在しない場合、コピー対象のローテーショングループのファイル群のコピーが完了したことをユーザに通知する(ステップS714)。ここでは、ローテーショングループ「Apache access」に次のファイルが無いことを確認して、ファイル群のコピーが完了したことを通知する。以上で、一つのローテーショングループのファイル群のコピーが完了した。
なお、第1〜第4の実施の形態のファイル管理装置100,100aは、CPU、記憶装置および外部とのインタフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。このコンピュータにおいて、本発明のファイル管理方法を実現させるためのファイル管理プログラムは、フレキシブルディスク、CD−ROM、DVD−ROM、メモリカードなどの記録媒体に記録された状態で提供される。CPUは、記録媒体から読み込んだプログラムを記憶装置に書き込み、プログラムに従って第1〜第4の実施の形態で説明した処理を実行する。
100,100a…ファイル管理装置、101…ローテーショングループ作成部、102…ローテーショングループ管理部、103…ファイル識別情報取得部、104…ファイル識別情報管理部、105…ローテーション検出部、106…ファイル群コピー部、107…ファイルコピー先生成部、200…記憶装置、300…入力装置、400…表示装置。