(57)【要約】  階層データをトラバースすることを開示する。第１レベルのデータにおける第１のリストのアイテムを受信し、これをある順序でソートする。その第１レベルのデータは、前記ソートされた第１のリストの順に処理される。処理の最中に、別のレベルのデータに遭遇した場合、前記遭遇したレベルにある第２のリストのアイテムを受信し、これをある順序でソートする。前記データは、そのリストの順に処理される。【選択図】図１
2008537229.tif 000002
【特許請求の範囲】
【請求項１】
階層データを処理する方法であって、
ａ）前記データの第１レベルにある第１のリストのアイテムを受信するステップと、
ｂ）前記第１のリストをある順序でソート(sorting)するステップと、
ｃ）前記第１レベルのデータを、前記ソートされた第１のリストの順に処理するステップと、
ｄ）処理の最中に、別のレベルのデータに遭遇した場合、
前記遭遇したレベルにある第２のリストのアイテムを受信し、
前記第２のリストをある順序でソートし、
前記データを、前記第２のリストの順に処理する、
ステップを含む方法。
【請求項２】
実行される予定の前記階層データの処理を中断するオペレーションにおいて、前記オペレーションを継続することが要求されたとき、リスタートポイントに到達するために前記階層データをトラバースし、そして前記中断の前に前記階層データがトラバースされていたのと同じ順序で前記階層データの残りの要素を処理することによって、始めから前記オペレーションをリスタートすることなく、前記階層データの処理を再開するステップを更に含む、請求項１に記載の方法。
【請求項３】
前記リスタートポイントに到達するために階層データをトラバースする処理は、前記中断前に処理された前記階層データの少なくとも一部を、前記中断前に前記階層データがトラバースされていたのと同じ順序でトラバースすることを含む、請求項２に記載の方法。
【請求項４】
前記第２のリストにある最後のアイテムの処理が完了した時点で、前記第１のリストにアイテムがあれば、その第１のリストの順序における次のアイテムから前記第１レベルのデータ処理を再開する、請求項１に記載の方法。
【請求項５】
前記第１のリストは、スタックデータ構造における前記第１レベルのデータに対応づけられた第１の位置に記憶され、そして前記第２のリストは、スタックデータ構造の前記データのレベルに対応づけられた第２の位置に記憶される、請求項１に記載の方法。
【請求項６】
前記階層データは、ファイルシステム又はその一部を含む保存集合である、請求項１に記載の方法。
【請求項７】
前記階層データは、ツリー、ディレクトリ、配列、又はリンク付けされたリストとして編成されたデータを含む、請求項１に記載の方法。
【請求項８】
前記第１のリストのアイテムを受信するステップは、コンテンツリストの処理からデータを受信することを含む、請求項１に記載の方法。
【請求項９】
前記第１のリストのアイテムを受信するステップは、ディレクトリを読み出すための１以上の要求を発行することを含む、請求項１に記載の方法。
【請求項１０】
前記第１レベルは第１のディレクトリを含み、前記第２レベルは前記第１のディレクトリ内のサブディレクトリである第２のディレクトリを含む、請求項１に記載の方法。
【請求項１１】
前記第１レベルが保存集合のルートディレクトリである、請求項１に記載の方法。
【請求項１２】
前記第１レベルが前記第２レベルよりも更に汎用レベルの階層データである、請求項１に記載の方法。
【請求項１３】
前記第１のリストをある順序でソートするステップは、再現性のある順で前記アイテムを順序づけることを含む、請求項１に記載の方法。
【請求項１４】
前記第１のリストをある順序でソートするステップは、標準的な順で前記アイテムを順序づけることを含む、請求項１に記載の方法。
【請求項１５】
前記標準的な順序は、アイテムのタイプ、アイテム名、アイテム属性、アイテム修正日時、アイテム生成日時、アイテムサイズ、及びinode番号の１つ以上に基づいて順序づけられることを含む、請求項１４に記載の方法。
【請求項１６】
前記第１レベルのデータを処理するステップは、前記第１レベルのデータをトラバースすることを含む、請求項１に記載の方法。
【請求項１７】
前記第１レベルのデータを処理するステップは、前記第１レベルのデータに対応づけられたデータをバックアップすることを含む、請求項１に記載の方法。
【請求項１８】
前記第１レベルのデータを処理するステップは、前記第１レベルのデータに対応づけられたログデータを含む、請求項１に記載の方法。
【請求項１９】
様々なレベルが処理中に遭遇し得る、請求項１に記載の方法。
【請求項２０】
前記処理が中止される、請求項１に記載の方法。
【請求項２１】
前記処理が中止された場合、最後の終了したアイテムからその処理を再開することができる、請求項１に記載の方法。
【請求項２２】
前記処理が中止され、且つその中止から所定の時間又は動的に設定された時間が経過していない場合、最後の終了したアイテムからその処理を再開することができる、請求項１に記載の方法。
【請求項２３】
前記処理が中止され、且つその中止以来、前記階層データが修正されていない場合、最後の終了したアイテムからその処理を再開することができる、請求項１に記載の方法。
【請求項２４】
階層データを処理するシステムであって、
ａ）前記データの第１レベルにある第１のリストのアイテムを受信し、
ｂ）前記第１のリストをある順序でソート(sorting)し、
ｃ）前記第１レベルのデータを、前記ソートされた第１のリストの順に処理し、
ｄ）処理の最中に、別のレベルのデータに遭遇した場合、
前記遭遇したレベルにある第２のリストのアイテムを受信し、
前記第２のリストをある順序でソートし、
前記データを、前記第２のリストの順に処理する、
ように構成したプロセッサと、
前記プロセッサに接続され、当該プロセッサに命令を提供するよう構成されたメモリと、を備えたシステム。
【請求項２５】
前記プロセッサは、前記第２のリストにある最後のアイテムの処理が完了した時点で、前記第１のリストにアイテムがあれば、その第１のリストの順序における次のアイテムから前記第１レベルのデータ処理を再開するように構成されていることを更に含む、請求項２４に記載のシステム。
【請求項２６】
前記プロセッサは、実行される予定の前記階層データの処理を中断するオペレーションにおいて、前記オペレーションを継続することが要求されたとき、リスタートポイントに到達するために前記階層データをトラバースし、そして前記中断の前に前記階層データがトラバースされていたのと同じ順序で前記階層データの残りの要素を処理することによって、始めから前記オペレーションをリスタートすることなく、前記階層データの処理を再開するよう構成されていることを更に含む、請求項２４に記載のシステム。
【請求項２７】
前記リスタートポイントに到達するために階層データをトラバースすることは、前記中断前に処理された前記階層データの少なくとも一部を、前記中断前に前記階層データがトラバースされていたのと同じ順序でトラバースすることを含む、請求項２６に記載のシステム。
【請求項２８】
コンピュータ読み出し記録可能な記録媒体に記録された、階層データを処理するためのコンピュータプログラムであって、コンピュータに、
ａ）前記データの第１レベルにある第１のリストのアイテムを受信し、
ｂ）前記第１のリストをある順序でソート(sorting)し、
ｃ）前記第１レベルのデータを、前記ソートされた第１のリストの順に処理し、
ｄ）処理の最中に、別のレベルのデータに遭遇した場合、
前記遭遇したレベルにある第２のリストのアイテムを受信し、
前記第２のリストをある順序でソートし、
前記データを、前記第２のリストの順に処理する、
指令を実行させるためのプログラム。
【請求項２９】
前記第２のリストにある最後のアイテムの処理が完了した時点で、前記第１のリストにアイテムがあれば、その第１のリストの順序における次のアイテムから前記第１レベルのデータ処理を再開するように構成されている指令を更に含む、請求項２８に記載のプログラム。
【請求項３０】
実行される予定の前記階層データの処理を中断するオペレーションにおいて、前記オペレーションを継続することが要求されたとき、リスタートポイントに到達するために前記階層データをトラバースし、そして前記中断の前に前記階層データがトラバースされていたのと同じ順序で前記階層データの残りの要素を処理することによって、始めから前記オペレーションをリスタートすることなく、前記階層データの処理を再開するよう構成されている指令を更に含む、請求項２８に記載のプログラム。
【請求項３１】
前記リスタートポイントに到達するために階層データをトラバースする指令は、前記中断前に処理された前記階層データの少なくとも一部を、前記中断前に前記階層データがトラバースされていたのと同じ順序でトラバースすることを含む、請求項３０に記載のプログラム。
【請求項３２】
データエントリを見つけ出す方法であって、
階層データ集合に対応づけられたデータの最後のセグメントの参照ポイントに関係するセグメント終了オフセットを特定するステップであって、前記最後のセグメントは、記録媒体に保存されることになっている前記階層データに対応づけられた最後のデータであった当該ステップと、
前記参照ポイントに関係するデータオブジェクト終了オフセットと、前記セグメント終了オフセットを比較することによって、前記記録媒体に完全に保存された最後のデータオブジェクトであったデータオブジェクトの前記階層データ集合内の位置を特定するステップと、を含む方法。
【請求項３３】
階層データの処理を再開する方法であって、
前記階層データの第１レベルで開始し、前記前に処理された部分のデータに関する少なくとも１つの処理オペレーションを省略することによって、前記階層データの前に処理された部分をトラバースするステップと、
前記階層データ内のリスタート位置につながるサブレベルがあれば、そこに処理を進めるステップと、
前記リスタート位置の後の次のデータから通常の処理を再開するステップと、を含む方法。
【発明の詳細な説明】
【背景技術】
【０００１】
記憶装置の最大容量が急激に大きくなっている傾向とともに、ファイルシステムのサイズもまた同様に指数関数的に増大している。ファイルシステムのバックアップユーティリティは、要求されたファイル及びディレクトリのすべてを見つけ出し且つバックアップするためにファイルシステムを完全にトラバース(traverse)しなければならないので、大きなファイルシステムはバックアップにかなりの時間を要する。長時間のバックアップは、バックアッププロセス間の中断という大きなリスクを意味することになる。例えば、ネットワーク化されたバックアップシステムでの短時間のネットワーク障害、またはクライアント或いはサーバーにおける他の障害は、バックアッププロセスを中断させることを引き起こす可能性がある。バックアップ障害時において、典型的なバックアップシステムは、バックアップオペレーションでバックアップされているデータの組（例えば、バックアップされるべきファイル及び/又はディレクトリのグループ化、以下、“保存集合(saveset)”と称することがある。）の開始からバックアッププロセスをリスタートする。長時間のバックアップで、更なる中断の可能性がある場合、あらゆる中断の後でバックアッププロセスを開始することは、バックアップシステムのパフォーマンスに重大な影響を及ぼしかねない。
【０００２】
典型的なバックアップシステム又はプロセスにおいて、中断後で保存集合を更新しなかったデータがたとえあったとしても、バックアップオペレーションはその中断した箇所を取出すことはできない。なぜなら、少なくとも幾つかのケースでは、ファイルシステムのトラバースはいつも同じ順序で生じるとは保証されていないからである。例えば、あるディレクトリからエントリを読出すための“readdir”（ディレクトリの読み出し）コマンドは、同一のコマンドの各インスタンス(instance)について異なる順序で結果を戻すことがある。それゆえ、再現性のある方法で実行されるデータトラバースを保証する必要がある。
【０００３】
本発明の様々な実施例は、以下の詳細な説明及び添付の図面に開示されている。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明は、プロセス装置、システム、合成物、記憶メディアなどのコンピュータ読み出し可能な記録媒体、又はプログラム命令が光或いは電気通信回線を介して伝送されるコンピュータネットワークを含む、様々な方法で実行されるものである。本明細書において、これらの実施又は本発明がとり得る他の形式が技術として引用される。タスクを実行するよう構成されているものとして記載されたプロセッサ又はメモリ等の構成要素は、所与の時間でタスクを実行するように一時的に構成された汎用的な要素、及びそのタスクを実行するために製造された特定の要素の両方を含む。一般的に、開示されたプロセスのステップ順序は本発明の範囲内で変更され得るものである。
【０００５】
本発明の１以上の実施例における詳細な記載は、本発明の原理をあらわす添付の図面とともに以下、提供される。本発明はそのような実施例に関連して説明されるのであるが、実施例に限定されるものではない。本発明の及ぶ範囲は、特許請求の範囲によってのみ規定されるのであり、多数の変形例、変更、均等を包含する。多くの特別の詳細な内容が以下に示す記載に述べられており、本発明の完璧な理解をもたらす。これらの詳細は例示の目的のために提供され、特別な詳細の幾つか又は全てがなくても特許請求の範囲に従い本発明を実行することができる。明確にする目的から、本発明に関係する技術分野で既知の技術事項は詳細に記載しないが、不必要に不明瞭にしているものではない。
【０００６】
再現性のある方法で階層データをトラバースすることを開示する。一実施例において、この階層データの第１レベルで、少なくともデータの一部を含むアイテムリストが読み出され、トラバース再現性のために所定の順序でソートされる。例えば、ファイルシステム又はその一部に関するバックアップオペレーションを実行するために、再現性のある方法でファイルシステムをトラバースするとき、各ディレクトリの内容がリストに読み出され、そして（例えば、ファイル名によるアルファベット順に）ソートされる。ファイルシステムエントリ（または、処理された他のデータ）はソートされたリストの順序でバックアップされる。データの第２レベルに遭遇したとき、第２レベルのデータが読み出され、所定の順序でソートされ、そして次にデータをソートした順序に沿って処理される。データのトラバースが中断される場合、再開オペレーション時には、中断オペレーション時と同じ所定の順序でデータの読み出し、ソート、処理が行われる。これは、中断オペレーションが中断されたポイントで処理が再開されるならば、各レベルで要素が読み出され、さもなければ異なる順序で受信されているとしても、どのデータ要素も失われないことを保証するためである。
【０００７】
一実施例において、ファイルシステムエントリが、バックアップオペレーションの一部としてバックアップ記録媒体への保存に成功したとき、バックアップの記録が行われる。この記録は、バックアップ中に失敗が生じた場合、最後に成功して記録できたバックアップポイントでバックアップを再開するために、後に用いられる。一実施例において、バックアップ再開オペレーションにおいて最後のバックアップポイントがみつかると、バックアップシステム又はプロセスは、ファイルシステムを徹底的にトラバースすることなく、バックアップオペレーション内容を再確立する。中断バックアップオペレーションは、内容を再確立すること、そして中断前に成功して且つ完全にバックアップされた最後のファイルに続くデータ要素で処理スタートを開始することによって再開される。同じように再現性のある順序でファイルシステムをトラバースすることは、どんなファイルも失われず又はバックアップ記録媒体に重複して記憶されることがないことを保証する。
【発明を実施するための最良の形態】
【０００８】
図１は、バックアップシステム環境の一実施例を示す。例に示すように、クライアント１０２がネットワーク１０６を介してサーバー１０８と接続する。ネットワークに接続するクライアント及びサーバーの数は任意である。ネットワークは、公衆回線、私設回線、及び/又はそれらの組み合わせで構成できる。例えば、インターネット、ＬＡＮ、ＷＡＮ、及び複数のシステムに接続する他の形式、及び/又はシステムの集合を含み、特に制限されることはない。クライアントはバックアップ記録媒体１０４と接続する。ある実施例の場合、バックアップ記録媒体は１又はそれ以上の次に示すような記憶メディアである；即ち、ハードドライブ、テープドライブ、光記憶装置、任意の不揮発性メモリデバイスである。１以上のバックアップ記録媒体が存在し得る。一実施例において、バックアップ記録媒体１０４はネットワークに直接接続される。別の実施例においては、バックアップ記録媒体１０４はサーバー１０８に接続される。別の実施例においては、バックアップ記録媒体１０４はＳＡＮ（ストレージ・エリア・ネットワーク）を介してクライアント１０２に接続される。バックアップデータベース１１０はサーバー１０８と接続する。一実施例において、バックアップデータベース１１０は、１以上のクライアント及び/又はサーバーに関連するデータを含む。別の実施例では、バックアップデータベース１１０は、１以上のバックアップ記録媒体に書き込まれたデータに関連するデータを含む。別の実施例では、バックアップデータベース１１０はネットワークに直接接続する。別の実施例において、バックアップデータベース１１０はクライアント１０２に接続する。別の実施例において、バックアップデータベース１１０はサーバー１０８及び/又はクライアント１０２の一部である。一実施例において、クライアント１０２のバックアップはサーバー１０８によって調整される。サーバー１０８は、バックアップ記録媒体１０４にデータをバックアップするためにクライアントに命令を出す。バックアップ記録媒体へのデータ書き込みが成功したとき、バックアップデータベース１１０への記録が行われる。別の実施例において、サーバー１０８は、バックアップをうまく行うためにクライント１０２で実行中のバックアップ・エージェントと協働する。バックアップ・エージェントはサーバー１０８によって構成される。
【０００９】
図２はファイルシステムのツリー構造の実施例を示す。一実施例において、バックアップされるシステムデータの一部（保存集合）が、ファイルシステム全体又はファイルシステムの一部となり得る。一実施例では、ファイルシステムは、任意の同一ポイントでその後のトラバース開始が同じ順序で実行されることを保証するために、再現性のある方法でトラバースされる。一例を示せば、最初はファイル名、次にディレクトリ名によるアルファベット順でトラバースは指示される。別の実施例において、ファイルシステムエントリの標準的な順序付けが用いられる。トラバースはルートディレクトリで開始する。ルートディレクトリのエントリが読み出され、ソートされる。順序正しくソートされたリストは、ファイルＦ、ディレクトリ１、ディレクトリ２、ディレクトリ４を含む。リストのエントリに対応するデータは、リスト順にバックアップされる。ディレクトリ１がバックアップされることに遭遇するとき、バックアッププロセスはディレクトリ１への処理に進み、ファイルＡを含むリストを生成し、そしてファイルＡをバックアップする。ディレクトリ１がトラバースされた後、トラバースはルートディレクトリリストのエントリで再開する。ディレクトリ２がバックアップされることに遭遇するとき、ファイルＢ、ファイルＣ、ファイルＤ、ディレクトリ３の順で順序付けられたコンテンツのリストを生成する。リストのエントリに対応するデータは、リスト順でバックアップされる。ディレクトリ３がバックアップされることに遭遇するとき、ファイルＥに対応するリストを生成し、そしてバックアップする。ディレクトリ４は何もないので（empty）、ディレクトリ４に対応するエントリは関連ファイル無しでバックアップされる。
【００１０】
図３Ａは保存集合をバックアップするプロセスの一実施例を示す。例に示すように、３０２で、カレント・バックアップディレクトリが保存集合の第１レベルディレクトリに設定される。一実施例において、３０２において、ファイルシステムのルートディレクトリに関連してカレント・ディレクトリを設定する。保存集合は、あらかじめ予め作っておいたり、動的に作ったり、或いはユーザインタフェースを介して指定し、そして第１レベルのデータにセットしたり及び/又は他の方法で定義する。ツリー、ディレクトリ、配列及び/又はリンク付けリストとして編成したデータなどの階層構造化された任意のデータが保存集合であり得る。カレント・バックアップディレクトリは、プロセスが最も新しくバックアップしたデータに関連したディレクトリである。カレント・バックアップディレクトリは予め作られ、動的に作られ、或いはユーザインタフェースを介して処理データ内のデータポイントとして指定される。一実施例において、第１レベルのディレクトリというのは、最も広く参照されるデータに関する分類レベル（即ち、最初に遭遇するデータレベル）である。３０４で、保存集合のデータがトラバースされ、そして再現性のある方法でバックアップされる。別の実施例では、３０４に関連するプロセスを用いた再現性のある方法で階層データをトラバースすることができる。一実施例において、例えば、中断のせいで、３０４に関連するプロセスを中止することが可能である。３０６で、プロセスの中止のせいで、保存集合のトラバース及びバックアップが終了しないと判断されれば、プロセスは３０８に進み、中断されたバックアップオペレーションの再開が可能であるか否かを判断する。３０８の判断で、バックアッププロセスが、成功した最後のバックアップ時点からバックアップを再開することが可能であれば、３１０で、このバックアッププロセスを再開する。一実施例において、最後のバックアップポイントの時及び/又はバックアップを開始した時から所定の時間が経過していなければ、成功した最後のバックアップポイントからバックアッププロセスを再開することができる。一実施例において、この時間量を予め作ったり、動的に作ったりすることができる。保存集合のすべて又は一部が中断以降に修正されていない場合、最後に成功したバックアップポイントからバックアッププロセスを再開することができる。３１２で、再開バックアップ中に、再開されたバックアッププロセスが無効であると判断した場合、或いは３０８で、バックアッププロセスが再開不可能であると判断した場合、バックアップオペレーションがリスタートする（３０２）。一実施例において、３１２で、中断前にバックアップ記録媒体に成功して保存された最後のファイルが保存集合から除去されたり、中断以降に修正されていたならば、再開したバックアッププロセスを無効と判断する。３１２で、再開バックアッププロセスを有効として判断した場合、再開されたバックアッププロセスは、そのバックアップオペレーションが完了したと３０６で判断されるまで続く。一方、３０６で、再開されたバックアッププロセスが完了でないと判断すると、３０８〜３１２が繰り返される。そして、図３Ａのプロセスは終了する。一実施例において、３１２で、有効の決定がなされる前に、再開されたバックアッププロセスが中止された場合、バックアップオペレーションは始めから再開する（３０２）。
【００１１】
図３Ｂは再現性のある方法でデータをトラバースし且つバックアップするプロセスの一実施例を示す。図３Ｂのプロセスは、図３Ａの３０４を実行するために一実施例で使用される。例示するように、３１６で、カレント・バックアップディレクトリのトラバースリストが構築される。トラバースリストは、再現性のある方法でソートされたカレント・ディレクトリにあるエントリのリストを含む。一実施例では、トラバースリストが保存される。また、トラバースリストは、トラバース及びバックアッププロセスが続くときに同時に構築される。３１８で、トラバースリストから次のエントリを得る。一実施例において、トラバースリストからのエントリは、リストの順どおりに得られる。別の実施例においては、トラバースリストからのエントリは、リスト順ではなく、再現性のある順序で得られる。３２０で、エントリが（トラバースリストに存在し処理されたエントリを）成功して得たかを判断し、そして３２２の判断において、得られたエントリがディレクトリに一致しない場合は、３２４で、その得られたエントリに関連するファイルシステムエントリがバックアップされ且つ記録（ログ）をとる。そして３１８で、トラバースリストから次のエントリを得る。一実施例において、３２４で、ファイルシステムエントリがバックアップ記録媒体に保存される。バックアップは、例えば、バックアップオペレーションが中断されたイベントにおいて、バックアップ記録媒体に成功して保存された保存集合にある最後のファイルを識別できるために記録（ログ）をとる。一実施例では、バックアップのログはバックアップデータベースに保存される。保存されるログは、例えば、トラバースされた時のファイル名、ファイルサイズ、保存集合内のファイルの位置を識別するための保存集合開始位置からのオフセットである。３２２で、得られたエントリがディレクトリに一致すると判断された場合、カレント・バックアップディレクトリを、得られたエントリに一致するディレクトリとして設定する。そして３１６で、新たなカレント・ディレクトリのためにトラバースリストを構築する。仮に、３２０での判断で、処理されるべきエントリがトラバースリストにまったく存在しないのであれば、カレント・バックアップディレクトリのバックアップは３２８で終了すると判断される。一実施例において、カレント・ディレクトリに関連するデータは、そのカレント・ディレクトリに関連するすべての要素がバックアップされたとき、バックアップ及び/又はログ記録する。３３０での判断で、カレント・ディレクトリが第１レベルのディレクトリでない場合、そのカレント・ディレクトリは最新に終了したディレクトリの親ディレクトリとして設定される（３２２）。そして、３１８で、新たに設定されたカレント・ディレクトリのトラバースリストから次のエントリを得る。一実施例において、第１レベルのディレクトリは、保存集合のルートディレクトリである。親ディレクトリは、処理をまさに終了したディレクトリで置き換えた、前のカレント・バックアップディレクトリに一致するディレクトリである。カレント・バックアップディレクトリは、スタックデータ構造の内部に置かれる。即ち、カレント・バックア��プディレクトリが変わるとき、ディレクトリはスタックを追加するか取り去るかの何れかである。別の実施例において、カレント・バックアップディレクトリに対する対応のトラバースリストもまたスタック内部に置かれる。３３０での判断で、カレント・ディレクトリが第１レベルのディレクトリであれば、バックアップは３３４で終了する。３３４は、図３Ａの３０６における“終了”決定に相当する。図３Ａのプロセスが３３４に達する前に中止される場合、トラバース及びバックアッププロセスは終了しない。バックアッププロセス中にエラーが生じれば、トラバース及びバックアッププロセスは終了しない。一実施例の場合、エラーは次に示す１以上のものを含む。即ち、無効トラバースリストエントリ、無効カレント・ディレクトリ、無効データ構造、メモリエラー、プロセスエラー、及び/又は本プロセスに関連する他のエラーである。“終了”決定が３３４でなされる前にトラバース及びバックアップが中止されたり中断される場合、“未終了”決定が図３Ａの３０６でなされる。
【００１２】
図３Ｃは、トラバースリストを構築するプロセスの一実施例を示す。図３Ｃのプロセスは図３Ｂの３１６を実行するための一実施例で用いられる。例示したように、カレント・ディレクトリ内のすべてのファイルシステムエントリが３３６で得られる。一実施例において、この取得は１以上の“readdir”又は同様のコマンドを処理することを含む。別の一実施例において、ファイルシステムエントリを取得する任意のプロセスが用いられる。ファイルシステムエントリがメモリに記憶される。３３８で、エントリは標準的な順序で記憶される。標準的な順序はファイル名、修正時刻、inode番号、作成日、ファイルサイズ及び/又はファイルシステムエントリを順序付けるために用いられ得る他のファイル属性に基づく。再現性のある順序付けはリストをソートするために用いる。別の一実施例において、ファイルシステムエントリは再現性のある順序で取得され、ソートは要求されていない。別の一実施例では、エントリはソートされない。一実施例において、エントリはリストに置かれる。エントリリストは保存される。
【００１３】
図３Ｄは、中断されたバックアップオペレーションを再開するプロセスの一実施例を示す。図３Ｄのプロセスは、図３Ｄの３１０を実行するための一実施例で用いられる。例示したように、バックアップ記録媒体に成功して書き込まれた最後のファイルが３４０で特定される。３４２で、リカーシブルスタック（リカーシブルプロセスから生じたスタックエントリ）及び他のプロセス内容は、最後のバックアップディレクトリエントリにつながるサブディレクトリ内へリカーシブル・ファンクションコールを介して処理を進めることによって構築される。一実施例において、他のプロセス内容は１以上のトラバースリストを含む。他の実施例では、他のプロセス内容は、プロセス変数及び/又はデータ構造を含む。非リカーシブルプロセスがバックアップデータをトラバースするために用いられる。一実施例では、リカーシブルスタックは構築されない。バックアップデータはサブディレクトリを含んでいなくてもよい。プロセス内容の構築中に、リスタートポイント、即ち最後のバックアップエントリに関連する構成要素又は最後のバックアップエントリが無効であると３４４で判断された場合、再開されたバックアップオペレーションが無効であると結論付けられる（３５０）。一実施例では、３５０の結論は図３Ａの３１２での無効決定に関連する。一実施例では、最後のバックアップエントリの構成要素又は最後のバックアップエントリはファイルシステムの修正のせいで見つけられない。３４４の判断で、最後のバックアップポイントエントリ及びその構成要素の全てが存在するという場合、そのバックアップはバックアップのために次のファイルシステムエントリで再開する（３４６）。そして、再開されたバックアップオペレーションが有効であることを結論付ける（３４８）。３４８の結論は図３Ａの３１２での有効決定と関連する。別の実施例において、再開プロセス中にエラーが生じれば、再開オペレーションは無効であるという結論に達する。
【００１４】
図３Ｅは、バックアップ記録媒体に成功して書き込まれた最後のファイルシステムエントリを特定するプロセスの一実施例を示す。図３Ｃのプロセスは図３Ｄの３４０を実行するための一実施例で用いられる。この例は単になる説明のためのものに過ぎない。バックアップ記録媒体に成功して書き込まれた最後のファイルシステムエントリを決定するプロセスが用いられる。例示するように、バックアップオペレーションが中断される前にバックアップ記録媒体に成功して保存された最後の“保存集合の塊(chunk)”の最終オフセット（即ち、終点）を特定するために、３５２で、バックアップデータベースをクエリーする。一実施例において、オフセットは、保存集合の先頭（即ち、保存集合の先頭のオフセットがゼロである）からのオフセットを示す配置に関連する。“保存集合の塊”はバックアップ記録媒体に書き込まれたデータの集まりである。一実施例において、データ取得する任意のプロセスによって最後のオフセットを得ることができる。３５４で、最後のファイルシステムエントリを見つけるためにファイルインデックスを要求し、そのエントリの内容はバックアップ記録媒体に保存されたオフセット範囲に完全に存在する。一実施例において、その内容が最後のオフセット内に完全に存在する最後のファイルシステムエントリが、参照ポイントに関連するファイルシステムエントリ終了オフセットと、最後のオフセットとを比較することによって特定される。一実施例において、ファイルインデックスは、保存集合内の各エントリに関する参照ポイントに関するオフセット情報を含む。別の実施例において、ファイルに関する最後のオフセット情報は、ファイルのバックアップが開始されたときに、そのファイルについてログ記録された開始オフセット及びファイルサイズから計算される。一実施例において、ファイルインデックスはファイルシステムの一部である。別の実施例において、ファイルインデックスはバックアップデータベースと関連する。
【００１５】
図３Ｆは、プロセス内容を確立するプロセスの一実施例を示す。図３Ｆのプロセッサは、図３Ｄの３４２を実行するための一実施例で用いられる。例示するように、３４０で、リスタートポイントが受信される。リスタートポイントは最後に処理されたファイルシステムエントリに関連する任意のデータである。即ち、関連のバックアップオペレーションの中断前に、バックアップ記録媒体に対して保存が完了した最後のファイルに対応するファイルシステムパスである。一実施例において、リスタートポイントは、図３Ｄの３４０で判断された、バックアップ記録媒体に成功して書き込まれた最後のファイルシステムエントリに関連する。３５８で、第１レベルのディレクトリで始まる保存集合のトラバースを開始する。３６０で、トラバースされるべきカレント・ディレクトリ内の次のファイルシステムエントリが得られる。３６２の判断で、得られたエントリが有効でない場合、リスタートポイントは無効であるという結論に達する（３６４）。一実施例において、得られたエントリが無効であるかもしれない。なぜならトラバースされるべき現在のディレクトリ、リスタートポイントに関連するか又は影響を及ぼすエントリ、及び/又は変更、移動、削除されたリスタートパス内にどんなファイルシステムエントリも存在しなかったり、或いはファイルシステムのエラーのせいであったりするからである。一実施例において、３６４の結論は、図３Ｄの３４４での無効決定と関連する。得られたエントリが３６２で有効であると判断され、且つ３６６でリスタートポイントに一致すると判断された場合、リスタートポイントは有効であるという結論に達する（３６８）。一実施例において、３６８の結論は、図３Ｄの３４４での有効決定と関連する。３６６の判断で、得られたエントリがリスタートポイントでなく、且つ３７０の判断で、得られたエントリがディレクトリエントリである場合、得られたディレクトリエントリがリスタートポイントに繋がるかどうかが判断される（３７２）。一実施例において、ディレクトリがリスタートポイントに繋がるファイルシステムパスの一部であれば、ディレクトリはリスタートポイントに繋がる。３７２の判断で、得られたディレクトリエントリがリスタートポイントに繋がるのであれば、得られたディレクトリエントリに処理を進める（３７４）。ディレクトリへ処理を進めることはリカーシブルプロセスではない。一実施例において、ディレクトリへ処理を進めることはリカーシブルスタックを構築することを含む。一実施例において、ディレクトリへ処理を進めることは、１以上の次のものを含む。即ち、トラバースリストの構築、データのバックアップ、ファイルシステムエントリの読み出し、ディレクトリ内容の読み出し、ディレクトリのトラバース、そして１以上の変数及びデータ構造を初期化することである。ディレクトリにおいて次のシステムエントリを得る（３６０）。３７０の判断で、得られたエントリがディレクトリでなかったり、３７２の判断で、リスタートポイントに繋がっていなかった場合、トラバースされるはずのカレント・ディレクトリにある次のファイルシステムエントリが得られる（３６０）。一実施例において、ファイルシステムは再現��のある方法でトラバースされる。即ち、ファイルシステムエントリは各ディレクトリのために構築されたトラバースリストの順でトラバースされる。
【００１６】
ファイルシステムのトラバース及びバックアップが、上述した実施例で述べられる一方で、ここでのアプローチは再現性のある方法で任意のデータ構造のために適用することが可能である。
【００１７】
上述した図３Ａ、３Ｂ、３Ｃ，３Ｄ、３Ｅ及び３Ｆのプロセスは、１以上の集積回路及び/又は他のデバイス、又はファームウェアやソフトウェアなどの適した方法で実行され得るものである。
【００１８】
上記実施例は明確な理解を図る目的で少し詳しく記載されているが、本発明はその提供された詳細内容に限定されるものではない。本発明を実行する多くの代替案がある。開示された実施例は例示に過ぎず、限定的なものではない。
【図面の簡単な説明】
【００１９】
【図１】バックアップシステム環境の一実施例を示す図である。
【図２】ファイルシステムのツリー構造の一実施例を示す図である。
【図３Ａ】保存集合をバックアップするプロセスの一実施例を示す図である。
【図３Ｂ】再現性のある方法でデータをトラバースし且つバックアップするプロセスの一実施例を示す図である。
【図３Ｃ】トラバースリストを構築するためのプロセスの一実施例を示す図である。
【図３Ｄ】中断されたバックアップオペレーションを再開するプロセスの一実施例を示す図である。
【図３Ｅ】バックアップ記録媒体に首尾よく書き込まれた最後のファイルシステムエントリを決定するプロセスの一実施例を示す図である。
【図３Ｆ】処理内容を確立するプロセスの一実施例を示す図である。
【図１】
2008537229.tif 000003
【図２】
2008537229.tif 000004
【図３Ａ】
2008537229.tif 000005
【図３Ｂ】
2008537229.tif 000006
【図３Ｃ】
2008537229.tif 000007
【図３Ｄ】
2008537229.tif 000008
【図３Ｅ】
2008537229.tif 000009
【図３Ｆ】
2008537229.tif 000010
【国際調査報告】
2008537229.tif 000011