(57)【要約】【課題】データ構造として編成されたファイル・システムをソース・サーバからターゲット・サーバへ複製するための、方法およびシステムを提供すること。【解決手段】この複製プロセスは、複製プロセスのすべての段階で、ターゲット・ファイル・システム内のｉノード・テーブル・エントリの順序、ならびにターゲット・サーバ上のデータ構造の複製の内部整合性を保持する。【選択図】  図４
2009522677.tif 000002
【特許請求の範囲】
【請求項１】
データ構造として編成されたソース・ファイル・システムをツリー順にスキャンするステップと、
前記ソース・ファイル・システム内のディレクトリおよびディレクトリ・インデックスを識別するステップと、
ターゲット・ファイル・システム内でディレクトリ・インデックスを含む前記ソース・ファイル・システムからディレクトリを作成するステップと、
前記ソース・ファイル・システム内のディレクトリから、前記ターゲット・ファイル・システム内の対応するディレクトリへと、コンテンツを再帰的にコピーするステップと、
を含み、前記ターゲット・ファイル・システム内の前記ディレクトリ・インデックスは前記ソース・ファイル・システム内の前記ディレクトリ・インデックスと同じである、
ファイル・システムを複製するための方法。
【請求項２】
ディレクトリ・コンテンツの複製に続いて、前記ソース・ファイル・システムのテーブル内にビットを設定するステップをさらに含む、請求項１に記載の方法。
【請求項３】
ディレクトリ・エントリなしのオブジェクトに関する前記ソース・ファイル・システム内のノード・テーブルを検索するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記ディレクトリ・エントリなしの前記オブジェクトを、前記ソース・ファイル・システムから、前記識別インデックスで、前記ターゲット・ファイル・システムにコピーするステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記ソース・ファイル・システム内のディレクトリからコンテンツを再帰的にコピーするステップが、前記ソース・ファイル・システム内の各オブジェクトに関する前記識別インデックスを、前記ターゲット・ファイル・システム内の前記識別インデックスでの各オブジェクトの属性として、前記ターゲット・ファイル・システムに伝送するステップを含む、請求項１に記載の方法。
【請求項６】
プロセッサと、
メモリと、
を備えるコンピュータ・システムであって、
前記プロセッサは前記メモリに結合され、前記プロセッサは、
データ構造として編成されたファイル・システムをツリー順にスキャンする操作と、
前記スキャン済みファイル・システム内のディレクトリおよびディレクトリ・インデックスを識別する操作と、
ディレクトリ・インデックスを含む前記スキャン済みファイル・システムから、ディレクトリを作成する操作であって、前記作成されたディレクトリが前記スキャン済みディレクトリからリモートの異なるファイル・システム内にある、作成する操作と、
前記スキャン済みファイル・システム内のディレクトリから、前記異なるファイル・システム内の対応するリモート・ディレクトリへと、コンテンツを再帰的にコピーする操作と、を含む、操作を実行するように動作可能である、コンピュータ・システム。
【請求項７】
コンテンツの複製完了後に、前記スキャン済みファイル・システム内の前記配置されたテーブル内に設定されるように適合されたビットをさらに備える、請求項６に記載のシステム。
【請求項８】
ディレクトリ・エントリなしに前記スキャン済みファイル・システム内にオブジェクトを配置するように適合されたオブジェクト・レプリケータをさらに備える、請求項７に記載のシステム。
【請求項９】
前記再帰的コピー操作が、前記オブジェクトが再作成されている場合、前記スキャン済みファイル・システム内の各オブジェクトに関する識別番号を、その識別番号での各オブジェクトの属性として伝送する、請求項７に記載のシステム。
【請求項１０】
ファイル・システムを複製するための操作を実行するためにコンピュータによって実行可能な命令を確実に記録するコンピュータによって読み取り可能な、プログラム・ストレージ・デバイスであって、前記操作が、
データ構造として編成されたソース・ファイル・システムをツリー順にスキャンする操作と、
前記ソース・ファイル・システム内のディレクトリおよびディレクトリ・インデックスを識別する操作と、
ターゲット・ファイル・システム内でディレクトリ・インデックスを含む前記ソース・ファイル・システムからディレクトリを作成する操作と、
前記ソース・ファイル・システム内のディレクトリから、前記ターゲット・ファイル・システム内の対応するディレクトリへと、コンテンツを再帰的にコピーする操作と、
を含み、前記ターゲット・ファイル・システム内の前記ディレクトリ・インデックスは前記ソース・ファイル・システム内の前記ディレクトリ・インデックスと同じである、プログラム・ストレージ・デバイス。
【請求項１１】
ディレクトリ・コンテンツの複製に続いて、前記ソース・ファイル・システムのテーブル内にビットを設定するための操作をさらに含む、請求項１０に記載のプログラム・ストレージ・デバイス。
【請求項１２】
ディレクトリ・エントリなしのオブジェクトに関する前記ソース・ファイル・システム内のノード・テーブルを検索するための操作をさらに含む、請求項１１に記載のプログラム・ストレージ・デバイス。
【請求項１３】
前記ディレクトリ・エントリなしの前記オブジェクトを、前記ソース・ファイル・システムから、前記識別インデックスで、前記ターゲット・ファイル・システムにコピーするための操作をさらに含む、請求項１２に記載のプログラム・ストレージ・デバイス。
【請求項１４】
前記ソース・ファイル・システム内のディレクトリからコンテンツを再帰的にコピーするための操作が、前記ソース・ファイル・システム内の各オブジェクトに関する前記識別インデックスを、前記ターゲット・ファイル・システム内の前記識別インデックスでの各オブジェクトの属性として、前記ターゲット・ファイル・システムに伝送する操作を含む、請求項１０に記載のプログラム・ストレージ・デバイス。
【請求項１５】
ファイル・システムを複製するための操作を実行するためにコンピュータによって実行可能な命令を確実に記録するコンピュータによって読み取り可能な、プログラム・ストレージ・デバイスであって、前記操作が、
データ構造として編成されたソース・ファイル・システムをノード順にスキャンする操作と、
前記スキャンで見つけられた各ディレクトリのコンテンツを銘記する操作と、
ディレクトリに関する数値識別子が、前記ディレクトリ内の各オブジェクトに関する識別子に先行するように、ターゲット・ファイル・システムへノードを報告する操作と、
を含む、プログラム・ストレージ・デバイス。
【請求項１６】
ディレクトリおよびファイルに関する前記識別子を、オブジェクトが複製されている間に各オブジェクトの属性として、前記ソース・ファイル・システムから前記ターゲット・ファイル・システムへと伝送するための操作をさらに含む、請求項１５に記載のプログラム・ストレージ・デバイス。
【請求項１７】
ターゲット・ファイル・システムに関するディレクトリを、それらディレクトリのコンテンツを作成する前に作成するための操作をさらに含む、請求項１５に記載のプログラム・ストレージ・デバイス。
【請求項１８】
ソース・ファイル・システムをノード順にスキャンするための、非再帰的ルーチンである操作をさらに含む、請求項１５に記載のプログラム・ストレージ・デバイス。
【請求項１９】
前記ソース・ファイル・システム内の複製されたデータを、前記ターゲット・ファイル・システムに報告されている間に再順序付けするための操作をさらに含む、請求項１５に記載のプログラム・ストレージ・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル・システムの複製（replication）に関する。とりわけ本発明は、ソース・ファイル・システムからターゲット・ファイル・システムへデータを複製しながら、テーブル・エントリを保持するための方法およびツールに関する。
【背景技術】
【０００２】
ファイルとは、ユーザにとっては、ストレージ・メディア内に保持されたデータの単一の連続ブロックとして見える、関連情報の名前付き集合である。データ・ブロックとは、ファイル用の実際のデータを格納するために使用される構造体である。ファイル・システムとは、ストレージ・メディア上のデータおよびメタデータの構造であり、それらメディア上でのデータの読み取り／書き込みを可能にする。一実施形態では、ファイル・システムは、コンピュータ上でファイルを編成するために使用されるディレクトリの階層、すなわちディレクトリ・ツリーである。ｉノードとは、メタデータなどのファイルに関する情報を格納するために使用されるファイル・システム上のデータ構造体である。ｉノードに含まれる情報は、ファイルの所有権、ファイルへのアクセス許可、ファイルのサイズ、ファイル・タイプ、および、ファイルに関するデータ・ブロックのディスク上の場所への参照を含むことができる。ｉノードは、しばしばディスク・メディア上の連続テーブル内に格納され、ファイルのｉノード番号は整数であって、これはこのテーブル内のそのｉノードのインデックスである。ファイルが作成されると、名前およびｉノード番号の両方が割り当てられる。ファイルは、ｉノード内にルートを持っていることからｉノード番号を有し、何らかのディレクトリ内にファイル用に作成されたエントリを持っていることから名前を有する。ディレクトリ内のデータは、最小限、ファイル名のペアならびにそれらの対応するｉノード番号のリストであり、ディレクトリそれ自体は親ディレクトリ内にエントリを有することになり、すなわち、ほとんどのディレクトリは何らかの他のディレクトリのサブディレクトリであることに留意されたい。ファイル・システム内に明示的な親ディレクトリを持たないのは、ファイル・システムのルート・ディレクトリのみである。ユーザまたはプログラムが名前によってファイルを参照する場合は必ず、システムはその名前を使用してファイル・システム内のディレクトリを検索する。検索はルートから始まり、ファイルの完全な名前が使用され、検索によってそのファイルに関するｉノードが見つかるまで、引き続いてサブディレクトリを読み取りおよび検索し、これによってシステムは、さらなる動作を実行するためにファイルに関して必要な情報、すなわちメタデータを取得することができる。
【０００３】
ファイル・システムは、カプセル化されたｉノード・テーブル・インデックスへの参照をファイル・システムのクライアントに渡すことによって、ソース位置からターゲット位置へとネットワークを横切ってエクスポートすることができる。本明細書で使用される場合、「ソース」という用語は、本発明の対象データの移動元である場所として広義に定義することが可能であり、「ターゲット」という用語は、データの移動先である場所として定義することが可能である。図１は、ソース・ファイル・サーバ（２０）およびターゲット・ファイル・サーバ（４０）を含む、相互接続されたファイル・サーバのペアを含む、ストレージ・システム環境を示すブロック図（１０）である。ソースおよびターゲットのファイル・サーバ（２０）および（４０）は、それぞれ、ローカルまたはワイドのエリア・ネットワークを備えることが可能なネットワーク（３０）を介してリンクされる。それぞれがネットワーク接続（２２）、（４２）を介してネットワーク（３０）と通信する各ファイル・サーバ（２０）および（４０）と通信しながらその内部に常駐する、適切なネットワーク・アダプタ（３２）、（５２）が、ネットワーク（３０）を介した通信を容易にする。ソースおよびターゲットのファイル・サーバ（２０）および（４０）は、それぞれ、プロセッサ（２６）、（４６）、メモリ（２８）、（４８）、ならびにネットワーク・アダプタ（３２）、（５２）を含む。各ファイル・サーバ（２０）、（４０）は、ストレージ・メディア上のディレクトリおよびファイルの階層構造として情報を論理的に編成するためにファイル・システムを実装する、ストレージ・オペレーティング・システム（図示せず）も含む。
【０００４】
ネットワーク全体にわたってファイル・システムを複製するための方法は、いくつか知られている。ファイル・システムを複製するための従来技術の方法の１つは、ソース・ファイル・システムのディレクトリ・ツリーを複製する。ソース・ファイル・システム側のアプリケーションは、提示されたディレクトリ・ツリーをトラバースし、各ファイルおよびディレクトリを宛先ファイル・システムにコピーする。図２は、ソース・ファイル・システムのサンプルｉノード・テーブルを示す従来技術のブロック図（１００）である。図に示されるように、ｉノード・テーブル内には、ルート・ディレクトリ（１０２）に加えて３つのエントリがあり、そのエントリはそれぞれ、４（１０４）、６（１０６）、および７（１０８）のインデックスにある。この例では、インデックス１（１０２）がルート・ディレクトリであり、インデックス４（１０４）は編集プログラム用の実行可能イメージに関するエントリを有し、インデックス６（１０６）はサブディレクトリであり、インデックス７（１０８）は読み取り可能なテキスト・ファイルを有する。図に示されるように、インデックス２（１１０）、３（１１２）、および５（１１４）にはエントリがない。この空インデックスの理由は様々である。たとえば、あるインデックスは、かつてはインデックス内に常駐したファイルが削除された可能性があるため、空である場合がある。
【０００５】
図３は、前述の従来技術のｉノード・テーブル複製プロセスを使用して、図２のサンプル・ソースｉノード・テーブルから解釈された、ターゲット・ファイル・システムでのサンプルｉノード・テーブルを示すブロック図（１５０）である。図に示されるように、ソース・ファイル・システムからのノード・テーブル・インデックスの順序は複製プロセス時には保持されず、空インデックスは保持されなかった。ノード・テーブル・インデックスの順序は特有ではなく、アルファベット順、番号順などで表すことができる。したがって、たとえターゲット・ファイル・システムでの所与のファイルが、ソース・ファイル・システムでの同じファイルのコピーであっても、それらのネットワーク・ファイル参照は交換可能ではない。
【０００６】
ファイル・システムを複製するための他の従来技術の方法は、ｉノード・テーブル内の各ファイルおよびディレクトリを番号順に複写することによって、ファイル・システムをコピーする。たとえば、第１ノードに対応するファイルは、ソース・ファイル・システムからターゲット・ファイル・システムへとコピーされる。この後に、第２ノードに対応するファイルが続き、それぞれのファイルは、ソース・ファイル・システムのノード・テーブル内にあるそれぞれの連続ノードに対応する。しかしながら、この方法に関連付けられる欠点の１つは、ファイルが親ディレクトリによって参照されることに関連した任意の順序でコピーされるため、ターゲット・ファイル・システムの中間状態がそれ自体と整合しなくなることである。たとえば、ファイルへの参照としての働きをするディレクトリ・エントリが、ファイル自体がコピーされる前にターゲット・ファイル・システムにコピーされた場合、ファイルに関するディレクトリ・エントリはまだ存在しないことになり、非整合状態（inconsistent state）が生成される。これとは逆に、あるファイルに関するディレクトリ・エントリがソース・ファイル・システムからターゲット・ファイル・システムへとコピーされる前に、そのファイルがソース・ファイル・システムからターゲット・ファイル・システムへとコピーされた場合、別の非整合状態が生成される可能性がある。この中間状態が、存在し、スペースを消費するが、いかなるディレクトリ・エントリによっても指示されない、すなわち名前を持たない、ファイルを生成する。コピーが割り込みなしに完了した場合、ソースおよびターゲットのファイル・システム内のファイルが同じｉノード番号を有することになり、すべてのファイルがディレクトリ・エントリを有することになり、ソース・ファイル・システムの場合と同様に、すべてのディレクトリ・エントリがファイルに対応することになるため、これらの中間状態はどちらも実際的には意味のないものである（moot）。しかしながら、２つの識別された中間状態に関連付けられた重大な欠点があり、これは、ターゲット・ファイル・システム内に第１のエントリが作成された後に、複製プロセスで割り込みが発生した場合に生じる。従来技術の複製プロセスにおける割り込みは、結果として、自己非整合型(self-inconsistent)であり復活不可能（not salvageable）な部分的ターゲット・ファイル・システムを生じさせる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、すべての中間段階を含む複製プロセスのすべての段階でｉノード・テーブル・エントリの順序を保持する、ファイル・システムを複製するための方法が求められている。このソリューションは、複製プロセス中に割り込みが発生した場合、ターゲット・ファイル・システムの残余部が復活可能である。
【課題を解決するための手段】
【０００８】
本発明は、ネットワークを横切ってファイル・システムを複製するため、および、複製プロセス全体の間、ファイル・システム内で関連付けられたテーブルの順序を保持するための、方法およびシステムを有する。
【０００９】
本発明の一態様では、ファイル・システムを複製するための方法が提供される。データ・構造として編成されたソース・ファイル・システムは、ツリー順にスキャンされる。ソース・ファイル・システムの各ディレクトリおよびディレクトリ・インデックスが識別される。同様に、ソース・ファイル・システムからのディレクトリおよびディレクトリ・インデックスは、ターゲット・ファイル・システム内でも作成される。ターゲット・ファイル・システム内でのインデックスおよびディレクトリの作成に続き、ソース・ファイル・システム内のディレクトリからのコンテンツが、ソース・ファイル・システム内で保持されているものと同じ識別インデックスと共に、ターゲット・ファイル・システム内の対応するディレクトリにコピーされる。ディレクトリ・コンテンツのコピー・プロセスは、再帰的に実行される。
【００１０】
本発明の他の態様では、プロセッサがメモリに結合され、操作を実行するように動作可能な、プロセッサおよびメモリを備えたコンピュータ・システムが提供される。こうしたプロセッサ操作は、データ構造として編成されたファイル・システムをツリー順にスキャンすること、スキャン済みファイル・システム内のディレクトリおよびディレクトリ・インデックスを識別すること、異なるファイル・システム内で、ディレクトリ・インデックスを含むスキャン済みファイル・システムからディレクトリを作成すること、ならびに、スキャン済みファイル・システム内のディレクトリから、異なるファイル・システム内の対応するリモート・ディレクトリへと、コンテンツを再帰的にコピーすること、を含む。作成されたディレクトリは、当該スキャン済みディレクトリからリモートの異なるファイル・システム内にある。
【００１１】
本発明の他の態様では、コンピュータによって読み取り可能なプログラム・ストレージ・デバイスが提供される。このコンピュータは、ファイル・システムを複製するための操作を実行するために、コンピュータによって実行可能な命令を確実に記録する。この操作は、データ構造として編成されたソース・ファイル・システムをツリー順にスキャンすることを含む。ソース・ファイル・システム内のディレクトリおよびディレクトリ・インデックスが識別され、ソース・ファイル・システムからのディレクトリおよびディレクトリ・インデックスがターゲット・ファイル・システム内で作成される。ソース・ファイル・システム内のディレクトリからのコンテンツが、ターゲット・ファイル・システム内の対応するディレクトリに再帰的にコピーされる。ターゲット・ファイル・システム内のディレクトリ・インデックスは、ソース・ファイル・システム内のディレクトリ・インデックスと同じである。
【００１２】
本発明の他の態様では、コンピュータによって読み取り可能なプログラム・ストレージ・デバイスが提供される。このコンピュータは、ファイル・システムを複製するための操作を実行するためにコンピュータによって実行可能な命令を確実に記録する。この命令は、データ構造として編成されたソース・ファイル・システムをノード順にスキャンすることを含む。スキャン中、見つけられた各ディレクトリのコンテンツが銘記（remember）され、ターゲット・ファイル・システムへ報告されるため、結果としてディレクトリに関する数値識別子が、ディレクトリ内の各オブジェクトに関する識別子に先行する。
【００１３】
本発明の他の特徴および利点は、添付の図面に関連した、現時点で好ましい本発明の実施形態についての以下の詳細な説明から明らかとなろう。
【００１４】
次に、本発明について、添付の図面を参照しながら単なる例として説明する。
【発明を実施するための最良の形態】
【００１５】
２つのサーバがネットワークを横切って相互接続される。第１のサーバは１つのファイル・システムと通信し、第２のサーバは第２のファイル・システムと通信する。各ファイル・システムは、階層様式でデータ構造に編成される。ファイル・システムは、データ構造内のテーブルの順序を保持するように、一方のサーバから他方のサーバへとネットワークを横切って複製することができる。
【００１６】
本発明の以下の説明は、本発明のシステムおよび方法を実施するための現時点で好ましい実施形態の構造または処理のいずれかを説明するために、流れ図を使用することによって提示される。本発明を提示するためにこのようにして図を使用することは、本発明の範囲を限定するものと解釈されるべきではない。
【００１７】
本明細書では、ネットワークを横切ってファイル・システムを複製するための方法が開示される。この方法には、２つのセグメントを有する第１の部分を備えた、２つの部分がある。図４は、ディレクトリによって指示されたオブジェクトを報告する前にツリー内のディレクトリを報告する、ツリー順に編成されたソース・ファイル・システムをスキャンする、第１の複製方法の第１の部分の第１のセグメントを示す、流れ図（２００）である。ルート・ディレクトリが変数ＮＡＭＥに割り当てられ（２０２）、複製プロセスに使用されるビットマップは消去される（２０４）。名前インデックスをコピーするための機能ＮＩＳＣＡＮが呼び出される（２０６）。この機能は、１つのパラメータ、ＮＡＭＥを有する。図５は、第１の複製方法の第１の部分の第２のセグメントを示す流れ図（２２０）である。このセグメントでは、ＮＩＳＣＡＮ機能が詳細に示される。ビットマップで使用するためのビットが、ソース・ファイル・システム内の変数ＮＡＭＥに設定される（２２２）。その後、第１のテストで、コピー機能に対する引数ＮＡＭＥがソース・ファイル・システム内のディレクトリであるかどうかを判別する（２２４）。ステップ（２２４）で、このテストに対する応答が肯定であれば、結果として、ソース・ファイル・システム内にあるのと同じインデックスで、ターゲット・ファイル・システム内に空のディレクトリＮＡＭＥが作成される（２２６）。ディレクトリをコピーするための機能ＮＩＳＣＡＮは、ディレクトリＮＡＭＥ内のすべての要素Ｅをコピーするために再帰的に呼び出され、すなわち、ＮＩＳＣＡＮ（ＮＡＭＥ／Ｅ）である（２２８）。ＮＩＳＣＡＮの各呼び出しは、各ディレクトリのサブファイルを含む１つのファイルについてビットを設定する。ビットマップ内のビットの設定は、特定のｉノード、すなわち特定のファイルあるいはディレクトリまたはその両方がターゲット・ファイル・システム内で複製されたことの、インジケータとしての働きをする。ステップ（２２４）で、テストに対する応答が否定であれば、ファイル、すなわちＮＡＭＥは、ソース・ファイル・システム内にあるのと同じ、ターゲット・ファイル・システム内のインデックスで、ソース・ファイル・システムからターゲット・ファイル・システムへとコピーされる。ソース・ファイル・システムからのディレクトリのすべてのコンテンツがターゲット・ファイル・システムにコピーされると、名前インデックス・コピー機能は完了する。万一複製が完了する前に割り込みが発生しても、複製された部分のあらゆるファイルおよびディレクトリはある名前で作成されているため、複製されたターゲット・ファイル・システム・ディレクトリの整合性は損なわれないままである。
【００１８】
ターゲット・ファイル・システム内のディレクトリおよびそのエントリの複製に続いて、ディレクトリ・エントリを持たないソース・ファイル・システム内の任意のオブジェクトを報告するために、第２の機能が呼び出される。図５は、この第２の機能を示す流れ図（２５０）である。インデックス変数が１に設定される（２５２）。その後、インデックス変数がソースｉノード・テーブルよりも大きいかどうかを判別するためのテストが実行される（２５４）。ステップ（２５４）で、テストに対する応答が肯定の場合、インデックスがソースｉノード・テーブルよりも大きく、ソース・ファイル・システム内のすべてのｉノードがスキャンされたことを示しているため、ソースｉノード・テーブルに関するコピー・プロセスは完了する（２５６）。しかしながら、ステップ（２５４）で、テストに対する応答が否定の場合、ソース・ファイル・システムのｉノード・テーブルのインデックスにファイルがあるかどうかを判別するためのテストが実行される（２５８）。ステップ（２５８）で、テストに対する応答が肯定の場合は、インデックス内のファイルをターゲット・ファイル・システム内で複製する必要がある可能性があることを示している。しかしながら、ステップ（２５８）で、テストに対する応答が否定の場合は、インデックス変数が増分される（２６０）。その後、プロセスはステップ（２５４）に戻る。ステップ（２５８）で、テストに対する応答が肯定の場合、ｉノード・テーブル内の設定インデックスのファイルが、ターゲット・ファイル・システムで複製されたかどうかを判別するために次のテストが実行される（２６２）。一実施形態では、ビットマップ内にビットが設定されることになり、このビットマップは、複製されていればこのファイルに対応するソース・ファイル・システム内で最初からずっと一時構造である。ステップ（２６２）で、テストに対する応答が肯定の場合は、ステップ（２６０）に戻り、インデックス変数が増分される。同様に、ステップ（２６２）で、テストに対する応答が否定の場合は、そのインデックスで、ソース・ファイル・システムからターゲット・ファイル・システムへｉノード・テーブル内のインデックスのファイルが複製されることになり、その後、インデックス変数の増分のためにステップ（２６０）に戻る。スイープ（sweep）・プロセスは、テーブルの終わりに達したことを示す、ステップ（２５４）でのテストの肯定応答が戻されるまで続行される。したがって本明細書に示されるように、オブジェクトは、ソース・ファイル・システムと同じノード・インデックスで、ソース・ファイル・システムからターゲット・ファイル・システムへと複製される。
【００１９】
図４、図５、および図６で上述されたプロセスは、コピーされる要素を保持しながら、ツリー順でソース・ファイル・システムをスキャンすることによって、ファイル・システムを複製するための再帰的方法である。他の実施形態では、再帰的関数を呼び出さずに、コピーされる要素のｉノード・インデックスを保持しながら、ソース・ファイル・システムからのテーブルをターゲット・ファイル・システムに複製することができる。この複製プロセスに含まれる３つの主なルーチンがある。図７は、ノード順にファイル・システムを複製するための、単一パスの非再帰的方法における第１のルーチンを示す流れ図（３００）である。第１のルーチンの開始に先立ち、ターゲット・ファイル・システム内にマッピングの空テーブルが作成される（３０２）。この空テーブルは一時構造である。ステップ（３０２）に続いて、インデックス変数が１に設定される（３０４）。その後、インデックス変数が、スキャンされるソース・テーブルの終わりを超えているかどうかを判別するために、テストが実行される（３０６）。一実施形態では、ターゲット・ファイル・システム内で複製されるテーブルは、ソース・ファイル・システムのｉノード・テーブルである。ステップ（３０６）で、テストに対する応答が肯定の場合、第１のルーチンは完了し、ステップ（４０２）で第２のルーチンが開始される。しかしながら、ステップ（３０６）で、テストに対する応答が否定の場合、複製されるソース・テーブル内の設定インデックスにオブジェクトがあるかどうかを判別するために、テストが実行される（３０８）。ステップ（３０８）で、テストに対する応答が肯定の場合、続いて、ソース・ファイル・システム内のオブジェクトがディレクトリであるかどうかを判別するためのテストが実行されることになる（３１０）。ステップ（３１０）で、テストに対する応答が否定の場合、ターゲット・テーブルに空白のエントリが追加され、これによって、その後の時点で使用されることになるスペース用にテーブル・エントリが作成される（３１２）。同様に、ステップ（３１０）で、テストに対する応答が肯定の場合、ソース・ファイル・システム・テーブル・ディレクトリのディレクトリ内の各エントリに関するデリミッタおよびノード番号と共に、一時ターゲット・テーブルにエントリが追加されることになる（３１４）。ステップ（３１２）または（３１４）のいずれかに続いて、あるいは、ステップ（３０８）でのテストに対する否定応答に続いて、インデックス変数が増分され（３１６）、その後ステップ（３０６）に戻る。ステップ（３０６）から（３１６）に示されたルーチンは、ソース・ファイル・システム・テーブルをスキャンするため、および一時複製済みテーブルを作成するための、プロセスを示す。
【００２０】
図８は、図２に示されたソース・ファイル・システムのサンプルｉノード・テーブルに基づく、ターゲット・ファイル・システム内の一時テーブルを示すブロック図（３５０）である。図に示されるように、４つのエントリがある。各エントリが、ソースｉノード・テーブル内のインデックス１、４、６、および７を表し、各エントリは、それぞれが「；」文字で表される２つのデリミッタを有する。図に示されるように、インデックス２、３、および５は空のインデックスであるため、これらを表す場所にはエントリがない。
【００２１】
一時テーブルの各エントリは、第１のデリミッタの前のオプション整数Ｘ、２つのデリミッタの間のオプション文字列Ｙ、および第２のデリミッタの後のオプションのｐａｉｒｌｉｓｔという、オプションの値を備えた、いくつかのフィールドを含む。ｐａｉｒｌｉｓｔとは、ｔｉｘと呼ばれるそれぞれの整数の後に名前が続く、ペアのシーケンスである。
【００２２】
ソース・ファイル・システム・テーブルのスキャンおよび複製プロセスの完了に続き、図７で作成された一時テーブルをソートするための第２のルーチンが開始される。一実施形態では、ソート・ルーチンには２つの別々のアルゴリズムが含まれる。図９は、図７で作成された一時テーブルをソートするための第１のアルゴリズムを示す流れ図（４００）である。初期ステップで、一時テーブルへのインデックスＰに、整数１が割り当てられる（４０２）。その後、一時テーブルへのインデックスが一時ターゲット・テーブルのサイズよりも大きいかどうかを判別するために、テストが実行される（４０４）。ステップ（４０４）で、テストに対する応答が肯定である場合、一時テーブルの第１のアルゴリズムは完了し、図１１の第２のアルゴリズムの開始へと進むことになる。しかしながら、ステップ（４０４）で、テストに対する応答が否定である場合、たとえば（ｉｘ  ａ  ；  ；  ｐａｉｒｌｉｓｔ）のように、変数Ｐに関する一時テーブル・エントリからフィールドを引き出し（４０６）、このインデックスを一時テーブルに割り当て（４０８）、フィールドから抽出されたオブジェクトのリストにｐａｉｒｌｉｓｔを割り当てる（４１０）。リストｐａｉｒｌｉｓｔ内の各要素について、要素ｉｘに関するテーブル・エントリ内のｉｘに割り当てられた値が、その要素の一時テーブル・フィールドに関する一時テーブル・エントリに追加され、ｔｉｘとなる（４１２）。すなわち、ｔｉｘフィールド値は更新するエントリを選択するために使用され、ｉｘ値はエントリのＸフィールドに挿入される。同様に、ｐａｉｒｌｉｓｔ内のそのｔｉｘ値とペアになっている名前が、修正されるエントリのＹフィールドに挿入される。ステップ（４１２）に続いて、変数Ｐ、すなわち一時テーブルへのインデックスが増分され（４１４）、ルーチンはステップ（４０４）に戻る。したがって、ステップ（４０２）〜（４１４）に示された第１のソート・ルーチンは、ステップ（４０４）でのテストに関して肯定応答が受け取られるまで続行される。
【００２３】
図１０は、図８に示された一時テーブルに基づく複製プロセスの第２の段階での一時テーブルを示す、図７で作成された一時テーブルをソートするための第１のアルゴリズムの完了に続くブロック図（４５０）である。図に示されるように、４つのエントリがある。それぞれのエントリは、ソースｉノード・テーブル内の１、４、６、および７のインデックスを表し、４、６、および７に関連付けられたエントリは、図９に示されたアルゴリズムの完了に従って修正されている。
【００２４】
図１０は、図９のステップ（４０４）でのテストに対する肯定応答に続いて開始される、一時テーブルをソートするための第２のアルゴリズムを示す流れ図（５００）である一時テーブルへのインデックスを表す変数Ｐに、整数１が割り当てられる（５０２）。その後、Ｐが一時テーブルのサイズよりも大きいかどうかを判別するためにテストが実行される（５０４）。ステップ（５０４）で、テストに対する応答が肯定の場合、一時テーブルをソートするための第２のアルゴリズムは完了することになる。しかしながら、ステップ（５０４）で、テストに対する応答が否定の場合、ｉｘおよびｐａｉｒｌｉｓｔを変数Ｐのテーブル・エントリに割り当てることによって、一時テーブルが行ごとに更新されることになる（５０６）。ステップ（５０６）での割り当てに続き、ステップ（５０６）から割り当てられたリストである、ｐａｉｒｌｉｓｔが空であるかどうかを判別するためにテストが実行される（５０８）。ステップ（５０８）で、テストに対する応答が肯定である場合、ステップ（５１０）で変数Ｐが増分され、ステップ（５０４）に戻る。しかしながら、ステップ（５０８）で、テストに対する応答が否定である場合、抽出されたリスト、ｐａｉｒｌｉｓｔ内のすべての要素の一時テーブル・インデックス・フィールド（ｔｉｘ）内の最小値が計算され、この最小値が変数Ｂに割り当てられる（５１２）。その後、変数Ｂが一時ターゲット・テーブルへのインデックスｉｘよりも小さいかどうかを判別するためのテストが実行される（５１４）。ステップ（５１４）で、テストに対する応答が肯定である場合、変数Ｐが増分され、ステップ（５０４）に戻ることになる。同様に、ステップ（５１４）で、テストに対する応答が否定である場合、続いて、一時テーブルからｉｘに関するテーブル・エントリが除去され、抽出されたリスト、ｐａｉｒｌｉｓｔのエントリ内のそれぞれのｔｉｘ変数に関連付けられたすべてのエントリの前に、ｉｘに関するテーブル・エントリが挿入される（５１８）。このステップ（５１６）および（５１８）での除去および挿入は、それぞれ、一時テーブル内での順序付けの変更、すなわち、データ構造の更新をサポートする。ステップ（５１８）での挿入に続いて、プロセスは変数Ｐの増分のためにステップ（５１０）に戻る。したがって、一時テーブルをソートするための第２のアルゴリズムは、一時テーブルの再順序付けを実行する。
【００２５】
図１２は、図１０に示されたソース・ファイル・システムのサンプル一時テーブルに基づく一時テーブルを示し、図７で作成された一時テーブルをソートするための第２のアルゴリズムの完了に基づくテーブルの再順序付けに従った、ブロック図（５５０）である。図に示されるように、４つのエントリがある。それぞれのエントリは、ソースｉノード・テーブル内の１、４、６、および７のインデックスを表す。図に示されるように、一時テーブル内のインデックスの順序付けは、図１１に示されたアルゴリズムの実行完了に従って修正されている。
【００２６】
図１１に示されたような第２ソート・ルーチンの完了に続いて、ソース・ファイル・システムからテーブルを複製するための最終ルーチンが開始される。図１３および図１４は、ソース・ファイル・システムからターゲット・ファイル・システムへテーブルを複製するための最終ルーチンを示す流れ図（６００）である。一時テーブルへのインデックスＰに整数１が割り当てられる（６０２）。その後、一時テーブルへのインデックスＰが、図１１に示された第２のソート・アルゴリズムで再編成された一時テーブルのサイズよりも大きいかどうかを判別するためのテストが実行される（６０４）。ステップ（６０４）で、テストに対する応答が肯定である場合、ファイル・システムの複製が完了することになる（６０６）。しかしながら、ステップ（６０４）で、テストに対する応答が否定である場合、たとえば（ｉｘ  ａ  Ｘ  ；  Ｙ  ；  ｐａｉｒｌｉｓｔ）のように、変数Ｐに関する一時テーブル・エントリからフィールドを引き出し（６０８）、変数ｉｘと共に一時テーブルにインデックスを割り当て（６１０）、第１のデリミッタの前の整数を変数Ｘに割り当て（６１２）、デリミッタ間の文字列を変数Ｙに割り当て（６１４）、フィールドから抽出されたオブジェクトのリストにｐａｉｒｌｉｓｔを割り当てる（６１６）。ステップ（６１６）での割り当てに続いて、変数ｉｘに対応するソース・インデックス内のオブジェクトがディレクトリであるかどうかを判別するためのテストが実行される（６１８）。ステップ（６１８）で、テストに対する応答が否定である場合、一時テーブル内のインデックスｉｘでオブジェクトが作成され（６２０）、インデックスｉｘのディレクトリがあれば、そこにオブジェクトが作成され、これに名前Ｙが与えられ（６２２）、ソース・インデックスｉｘからターゲット・インデックスｉｘへとファイル・コンテンツがコピーされることになる（６２４）。同様に、ステップ（６１８）で、テストに対する応答が肯定である場合、ターゲット・ファイル・システム内のインデックスｉｘで、またはインデックスＸに配置されたディレクトリのサブディレクトリとして、空のディレクトリが作成されるか、一時ターゲット・テーブルがインデックスＸを有する場合、名前Ｙでサブディレクトリが作成されることになる（６２６）。一時テーブルが変数Ｘに関するエントリを有する場合、インデックスＸのディレクトリのサブディレクトリとして、名前Ｙで空のディレクトリが作成される。ステップ（６２４）および（６２６）の完了に続いて、変数Ｐが増分され（６２８）、プロセスはステップ（６０４）に戻る。したがって、コピー・ルーチンが完了すると、ターゲット・ファイル・システム内のソース・テーブルが複写される。
【００２７】
本発明は、階層構造データの複製に関する方法およびシステムを企図する。本発明は、完全なハードウェア実施形態、完全なソフトウェア実施形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施形態の形を取ることができる。図１５は、ソース・ファイル・システム内のディレクトリからターゲット・ファイル・システム内の対応するディレクトリへ、すべてのコンテンツをコピーするための、再帰的プロセスを呼び出すように構成された、ハードウェア環境におけるマネージャを示すブロック図（７００）である。図に示されるように、ソース・ファイル・サーバ（７２０）は、プロセッサ（７２６）、メモリ（７２８）、およびネットワーク・アダプタ（７３２）を含む。同様に、ターゲット・ファイル・サーバ（７４０）は、プロセッサ（７４６）、メモリ（７４８）、およびネットワーク・アダプタ（７５２）を含む。ソースおよびターゲットのファイル・サーバ（７２０）および（７４０）は、それぞれ、ローカルまたはワイドのエリア・ネットワークを備えることが可能なネットワーク接続（７２２）および（７４２）を通じたネットワーク（７３０）を介してリンクされる。ソース・ファイル・サーバは、マネージャ（７６０）も含む。テーブル・ロケータ（７６２）、配置されたソース・ファイル・システムのテーブルの各ディレクトリをターゲット・ファイル・システム内に作成するためのツール（７６４）、および、ソース・テーブルのディレクトリ内のコンテンツをターゲット・ファイル・システム内の対応するディレクトリに再帰的にコピーするためのディレクタ（７６６）も含む。一実施形態では、そのテーブル・ロケータ（７６２）、ツール（７６４）、およびディレクタ（７６６）を備えたマネージャ（７６０）を、ターゲット・ファイル・サーバ（７４０）内、またはプロセッサ、メモリ、およびネットワーク・アダプタを備えた代替処理ユニット内で、具体化することができる。
【００２８】
好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されることのない、ソフトウェアに実装される。ソフトウェア要素に関して、ソース・ファイル・システムおよびターゲット・ファイル・システムの両方が、それぞれ、それぞれのファイル・システム内のファイル・システム・サーバのメモリ内に常駐するマネージャを有することができる。ソース・ファイル・システム・マネージャは、上記で概説および考察したアルゴリズムを呼び出すための、命令あるいはプログラム・コードまたはその両方を含むことができる。同様に、ハードウェア環境では、ソースおよびターゲットのファイル・システム・マネージャは、それぞれのファイル・システム内のファイル・システム・サーバのメモリ外部に常駐することができる。
【００２９】
さらに本発明は、コンピュータまたは任意の命令実行システムによって、あるいはそれらに関連して、使用するためのプログラム・コードを提供する、コンピュータ使用可能またはコンピュータ読み取り可能な媒体からアクセスできる、コンピュータ・プログラム製品の形を取ることができる。この説明の目的で、コンピュータ使用可能またはコンピュータ読み取り可能な媒体は、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して、使用するためのプログラムを含む、格納する、通信する、伝播する、または移送することができる、任意の装置とすることができる。
【００３０】
本発明の範囲内の諸実施形態は、内部に符号化されたプログラム・コードを有するプログラム・ストレージ手段を備える製品も含む。こうしたプログラム・ストレージ手段は、汎用または特定用途向けのコンピュータによってアクセス可能な、任意の使用可能媒体とすることができる。例を挙げると、こうしたプログラム・ストレージ手段は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、または他の光ディスク・ストレージ、磁気ディスク・ストレージ、または他の磁気ストレージ・デバイス、あるいは、所望なプログラム・コード手段を格納するために使用可能であり、汎用または特定用途向けのコンピュータによってアクセス可能な、任意の他の媒体を含むことができるが、これらに限定されるものではない。前述の組み合わせも、プログラム・ストレージ手段の範囲に含まれるものとする。
【００３１】
媒体は、電子、磁気、光、電磁、赤外線、または半導体のシステム（あるいは装置またはデバイス）、あるいは伝播媒体とすることができる。コンピュータ読み取り可能媒体の例には、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、剛性磁気ディスク、および光ディスクが含まれる。光ディスクの現行の例には、コンパクト・ディスクＢ読み取り専用（ＣＤ−ＲＯＭ）、コンパクト・ディスクＢ読み取り／書き込み（ＣＤ−Ｒ／Ｗ）、およびＤＶＤが含まれる。
【００３２】
プログラム・コードの格納あるいは実行またはその両方に好適なデータ処理システムには、システム・バスを介してメモリ要素に直接または間接的に結合された、少なくとも１つのプロセッサが含まれることになる。メモリ要素は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、および、実行中に大容量ストレージからコードを取り出さなければならない回数を減らすために少なくともいくつかのプログラム・コードの一時ストレージを提供するキャッシュ・メモリを、含むことができる。
【００３３】
入力／出力またはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、これらに限定されない）を、直接、またはＩ／Ｏコントローラの介入を通じて、システムに結合することができる。
【００３４】
ネットワーク・アダプタをシステムに結合して、専用または公衆のネットワークの介入を通じて、他のデータ処理システム、あるいはリモートのプリンタまたはストレージ・デバイスに、データ処理システムを結合できるようにすることもできる。モデム、無線、およびイーサネット（登録商標）のアダプタは、現在使用可能なネットワーク・アダプタ・タイプの一部に過ぎない。
【００３５】
以上、本明細書では、本発明の特定の実施形態について例示の目的で説明してきたが、本発明の範囲を逸脱することなく様々な修正が実行可能であることを理解されよう。とりわけ、本発明は、ソース・ファイル・システムからターゲット・ファイル・システムへのｉノード・テーブルの複製に限定されるべきではない。むしろ、本明細書に示されたアルゴリズムは、任意のデータ構造および関連するテーブルの複製を含むように拡張することができる。
【図面の簡単な説明】
【００３６】
【図１】従来技術のコンピュータ・システムを示すブロック図である。
【図２】ソース・ファイル・システムからの従来技術のｉノード・テーブルを示すブロック図である。
【図３】図２のソース・ファイル・システムから複製された場合の、ターゲット・ファイル・システムでの従来技術のｉノード・テーブルを示すブロック図である。
【図４】本発明の好ましい実施形態に従った、ネットワークを横切ってファイル・システムを複製するための第１の方法の第１の部分を示す流れ図である。
【図５】本発明の好ましい実施形態に従った、ネットワークを横切ってファイル・システムを複製するための第１の方法の第１の部分を示す流れ図である。
【図６】ネットワークを横切ってファイル・システムを複製するための第１の方法の第２の部分を示す流れ図である。
【図７】ネットワークを横切ってファイル・システムを複製するための第２の方法の第１の部分を示す流れ図である。
【図８】複製プロセスにおける第１の段階での一時ｉノード・テーブルを示すブロック図である。
【図９】ネットワークを横切ってファイル・システムを複製するための第２の方法の第２の部分を示す流れ図である。
【図１０】複製プロセスにおける第２の段階での一時ｉノード・テーブルを示すブロック図である。
【図１１】ネットワークを横切ってファイル・システムを複製するための第２の方法の第３の部分を示す流れ図である。
【図１２】複製プロセスにおける第３の段階での一時ｉノード・テーブルを示すブロック図である。
【図１３】ネットワークを横切ってファイル・システムを複製するための第２の方法の第４の部分を示す流れ図である。
【図１４】ネットワークを横切ってファイル・システムを複製するための第２の方法の第４の部分を示す流れ図である。
【図１５】本発明の一実施形態に従ったマネージャの配置を示すコンピュータ・システムを示すブロック図である。
【図１】
2009522677.tif 000003
【図２】
2009522677.tif 000004
【図３】
2009522677.tif 000005
【図４】
2009522677.tif 000006
【図５】
2009522677.tif 000007
【図６】
2009522677.tif 000008
【図７】
2009522677.tif 000009
【図８】
2009522677.tif 000010
【図９】
2009522677.tif 000011
【図１０】
2009522677.tif 000012
【図１１】
2009522677.tif 000013
【図１２】
2009522677.tif 000014
【図１３】
2009522677.tif 000015
【図１４】
2009522677.tif 000016
【図１５】
2009522677.tif 000017
【手続補正書】
【提出日】平成21年3月18日(2009.3.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ構造として編成されたソース・ファイル・システムをツリー順にスキャンするステップと、
前記ソース・ファイル・システム内のディレクトリおよびディレクトリ・インデックスを識別するステップと、
ターゲット・ファイル・システム内でディレクトリ・インデックスを含む前記ソース・ファイル・システムからディレクトリを作成するステップと、
前記ソース・ファイル・システム内のディレクトリから、前記ターゲット・ファイル・システム内の対応するディレクトリへと、コンテンツを再帰的にコピーするステップと、
を含み、前記ターゲット・ファイル・システム内の前記ディレクトリ・インデックスは前記ソース・ファイル・システム内の前記ディレクトリ・インデックスと同じである、
ファイル・システムを複製するための方法。
【請求項２】
ディレクトリ・コンテンツの複製に続いて、前記ソース・ファイル・システムのテーブル内にビットを設定するステップをさらに含む、請求項１に記載の方法。
【請求項３】
ディレクトリ・エントリなしのオブジェクトに関する前記ソース・ファイル・システム内のノード・テーブルを検索するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記ディレクトリ・エントリなしの前記オブジェクトを、前記ソース・ファイル・システムから、前記識別インデックスで、前記ターゲット・ファイル・システムにコピーするステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記ソース・ファイル・システム内のディレクトリからコンテンツを再帰的にコピーするステップが、前記ソース・ファイル・システム内の各オブジェクトに関する前記識別インデックスを、前記ターゲット・ファイル・システム内の前記識別インデックスでの各オブジェクトの属性として、前記ターゲット・ファイル・システムに伝送するステップを含む、請求項１に記載の方法。
【請求項６】
プロセッサと、
メモリと、
を備えるコンピュータ・システムであって、
前記プロセッサは前記メモリに結合され、前記プロセッサは、
データ構造として編成されたファイル・システムをツリー順にスキャンする操作と、
前記スキャン済みファイル・システム内のディレクトリおよびディレクトリ・インデックスを識別する操作と、
ディレクトリ・インデックスを含む前記スキャン済みファイル・システムから、ディレクトリを作成する操作であって、前記作成されたディレクトリが前記スキャン済みディレクトリからリモートの異なるファイル・システム内にある、作成する操作と、
前記スキャン済みファイル・システム内のディレクトリから、前記異なるファイル・システム内の対応するリモート・ディレクトリへと、コンテンツを再帰的にコピーする操作と、を含む、操作を実行するように動作可能である、コンピュータ・システム。
【請求項７】
コンテンツの複製完了後に、前記スキャン済みファイル・システム内の前記配置されたテーブル内に設定されるように適合されたビットをさらに備える、請求項６に記載のシステム。
【請求項８】
ディレクトリ・エントリなしに前記スキャン済みファイル・システム内にオブジェクトを配置するように適合されたオブジェクト・レプリケータをさらに備える、請求項７に記載のシステム。
【請求項９】
前記再帰的コピー操作が、前記オブジェクトが再作成されている場合、前記スキャン済みファイル・システム内の各オブジェクトに関する識別番号を、その識別番号での各オブジェクトの属性として伝送する、請求項７に記載のシステム。
【請求項１０】
ファイル・システムを複製するための操作を実行するためにコンピュータに、
データ構造として編成されたソース・ファイル・システムをツリー順にスキャンする操作と、
前記ソース・ファイル・システム内のディレクトリおよびディレクトリ・インデックスを識別する操作と、
ターゲット・ファイル・システム内でディレクトリ・インデックスを含む前記ソース・ファイル・システムからディレクトリを作成する操作と、
前記ソース・ファイル・システム内のディレクトリから、前記ターゲット・ファイル・システム内の対応するディレクトリへと、コンテンツを再帰的にコピーする操作であって、
前記ターゲット・ファイル・システム内の前記ディレクトリ・インデックスは前記ソース・ファイル・システム内の前記ディレクトリ・インデックスと同じである、前記コンテンツを再帰的にコピーする操作と、
を実行させるプログラム。
【請求項１１】
ファイル・システムを複製するための操作を実行するためにコンピュータに、
データ構造として編成されたソース・ファイル・システムをノード順にスキャンする操作と、
前記スキャンで見つけられた各ディレクトリのコンテンツを銘記する操作と、
ディレクトリに関する数値識別子が、前記ディレクトリ内の各オブジェクトに関する識別子に先行するように、ターゲット・ファイル・システムへノードを報告する操作と、
を実行させるプログラム。
【請求項１２】
ディレクトリおよびファイルに関する前記識別子を、オブジェクトが複製されている間に各オブジェクトの属性として、前記ソース・ファイル・システムから前記ターゲット・ファイル・システムへと伝送するための操作をさらに含む、請求項１１に記載のプログラム。
【請求項１３】
前記ターゲット・ファイル・システムに関するディレクトリを、それらディレクトリのコンテンツを作成する前に作成するための操作をさらに含む、請求項１１に記載のプログラム。
【請求項１４】
前記ソース・ファイル・システムをノード順にスキャンするための、非再帰的ルーチンである操作をさらに含む、請求項１１に記載のプログラム。
【請求項１５】
前記ソース・ファイル・システム内の複製されたデータを、前記ターゲット・ファイル・システムに報告されている間に再順序付けするための操作をさらに含む、請求項１１に記載のプログラム。
【国際調査報告】
2009522677.tif 000018
2009522677.tif 000019