(57)【要約】【課題】改良されたリモートプロトコルによって、リモートサーバ上のファイルの効率的なおよび確かな更新を可能にすること。【解決手段】リモートプロトコルに対する収集・コピー拡張によって、クライアントがサーバに命令して、データの一部をサーバ上の既存のソースファイルから収集させ、およびデータの一部をサーバ上の新規の目的ファイル内の適切なオフセットにコピーさせることができる。収集・コピー拡張によって、クライアントは、クライアントがファイル更新中に新規データを書込むことができる、目的ファイル中の空白位置を残すことができる。収集・コピー拡張によって、クライアントは、ソースファイルから目的ファイルにコピーしないことにより、ソースファイルの一部を効果的に削除することができる。ファイル全体をクライアントからサーバに転送する必要なしに、ファイル更新を行うことができる。【選択図】図２
2006031711.tif 000002
【特許請求の範囲】
【請求項１】
リモートサーバ上のソースファイルを開くステップと、
前記リモートサーバ上の目的ファイルを開くステップと、
前記リモートサーバに命令して前記ソースファイルから前記目的ファイルにソースデータをコピーさせる収集・コピーのファイルシステム制御（ｆｓｃｔｌ）コマンドを送信するステップと
を備えたことを特徴とするファイル更新の方法。
【請求項２】
前記収集・コピーのｆｓｃｔｌコマンドを送信するステップは、どのようにソースデータを前記リモートサーバ上のソースファイルから前記リモートサーバ上の前記目的ファイルにコピーすべきかを定義するファイル領域のアレイを構築するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ファイル領域のアレイを構築するステップは、前記アレイ中の各ファイル領域に対して、前記ソースファイルからバイト数分のソースデータをコピーする前記ソースファイル内の開始位置を識別するソースオフセット、前記目的ファイルに前記バイト数分のソースデータをコピーする前記目的ファイル内の開始位置を識別する目的オフセット、および前記バイト数を定義する長さを決定するステップを含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記収集・コピーのｆｓｃｔｌコマンドを送信するステップは、
どのようにソースデータを前記リモートサーバ上の前記ソースファイルから前記リモートサーバ上の前記目的ファイルにコピーすべきかを定義する前記ファイル領域のアレイを送信するステップと、
前記ソースファイルの識別子を送信するステップと、
目的ファイルハンドルを送信するステップと
を含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記ソースファイルのコピーを前記リモートサーバから取り出すステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項６】
前記ソースファイルの識別子を前記リモートサーバに要求するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項７】
前記目的ファイルに新規データを書込むステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項８】
前記書込むステップは、前記リモートサーバが前記ソースファイルから前記目的ファイルにソースデータをコピーする場合に作成される前記目的ファイル内の空白位置に書込むべきデータを含むデータ書込命令をリモートサーバに送信するステップを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記ソースファイルから前記目的ファイルにコピーするソースデータの全バイト数を示す状態表示を受信するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項１０】
前記リモートサーバが指定された全ソースデータをソースファイルから目的ファイルにコピーする場合、前記リモートサーバから成功の状態表示を受信するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項１１】
前記リモートサーバが指定された全ソースデータを前記ソースファイルから前記目的ファイルにコピーするのに失敗する場合、前記リモートサーバから失敗の状態表示を受信するステップと、
前記指定された全ソースデータが前記ソースファイルから前記目的ファイルにコピーされなかった理由を示す状態コードを受信するステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項１２】
前記リモートサーバへの収集・コピーのｆｓｃｔｌコマンドが、いずれかのサーバ制限を越える場合、前記リモートサーバから無効パラメータの表示を受信するステップと、
サーバパラメータについて設定される最大限度を示す構成された最大限度を前記リモートサーバから受信するステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項１３】
前記構成された最大限度を前記リモートサーバから受信するステップは、
前記リモートサーバへの単一の収集・コピーのｆｓｃｔｌコマンドでコピーすることができるデータチャンクの数について構成された最大限度を受信するステップと、
単一のデータチャンクでコピーすることができるデータ量について構成された最大限度を受信するステップと、
前記リモートサーバへの単一の収集・コピーｆｓｃｔｌコマンドでコピーすることができるデータの最大量について構成された最大限度を受信するステップと、
単一の収集・コピーのｆｓｃｔｌコマンドを処理する間に経過することができる時間について構成された最大限度を受信するステップと
を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
請求項１に記載の方法を実行するために構成されるプロセッサ実行可能な命令を備えたことを特徴とするプロセッサ読取可能な媒体。
【請求項１５】
クライアントからの第１のオープン要求に応答してソースファイルを開くステップと、
前記クライアントからの第２のオープン要求に応答して目的ファイルを開くステップと、
前記ソースファイルから前記目的ファイルにコピーするデータのチャンクを指定する収集・コピーのｆｓｃｔｌコマンドをクライアントから受信することに応答して、前記ソースファイルから前記目的ファイルにソースデータをコピーするステップと
を備えたことを特徴とする方法。
【請求項１６】
前記収集・コピーｆｓｃｔｌコマンドを受信するステップは、
どのようにソースデータを前記ソースファイルから前記目的ファイルにコピーすべきかを定義するファイル領域のアレイを受信するステップと、
前記ソースファイルの識別子を受信するステップと、
目的ファイルハンドルを受信するステップと
を含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記目的ファイルに書込む新規データを含むデータ書込要求を前記クライアントから受信するステップと、
ソースファイルのデータを欠いているオフセットにおいて前記目的ファイルに前記新規データを書込むステップと
をさらに備えたことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記ソースファイルから前記目的ファイルにコピーされるソースデータの全バイト数を示す状態表示を前記クライアントに送信するステップをさらに備えたことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記収集・コピーのｆｓｃｔｌコマンドで指定される全ソースデータが前記ソースファイルから前記目的ファイルにコピーされる場合、前記クライアントに成功の状態表示を送信するステップをさらに備えたことを特徴とする請求項１５に記載の方法。
【請求項２０】
前記収集・コピーのｆｓｃｔｌコマンドで指定される全ソースデータが前記ソースファイルから前記目的ファイルにコピーされない場合、前記クライアントに失敗の状態表示を送信するステップと、
前記指定された全ソースデータが前記ソースファイルから前記目的ファイルにコピーされなかった理由を示す状態コードを送信するステップと
をさらに備えたことを特徴とする請求項１５に記載の方法。
【請求項２１】
前記収集・コピーのｆｓｃｔｌコマンドがいずれかのサーバ制限を越える場合、前記クライアントに無効パラメータの表示を送信するステップと、
サーバパラメータについて設定される最大限度を示す構成された最大限度を前記クライアントに送信するステップと
をさらに備えたことを特徴とする請求項１５に記載の方法。
【請求項２２】
前記構成された最大限度を前記クライアントに送信するステップは、
単一の収集・コピーｆｓｃｔｌコマンドでコピーすることができるデータチャンクの数について構成された最大限度を送信するステップと、
単一のデータチャンクでコピーすることができるデータ量について構成された最大限度を送信するステップと、
単一の収集・コピーのｆｓｃｔｌコマンドでコピーすることができるデータの最大量について構成された最大限度を送信するステップと、
単一の収集・コピーのｆｓｃｔｌコマンドを処理する間に経過することができる時間について構成された最大限度を送信するステップと
を含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記クライアントにソースファイル識別子を送信するステップをさらに備えたことを特徴とする請求項１５に記載の方法。
【請求項２４】
請求項１５に記載の方法を実行するために構成されるプロセッサ実行可能な命令を備えたことを特徴とするプロセッサ読取可能な媒体。
【請求項２５】
リモートサーバに命令してソースファイルを開かせ、および前記ソースファイルに少なくともデータ読取アクセスを提供するステップと、
前記ソースファイルの識別子を前記リモートサーバに要求するステップと、
前記リモートサーバに命令して目的ファイルを開かせ、および前記目的ファイルに少なくとも書込アクセスを提供するステップと、
前記ソースファイルから前記目的ファイルにコピーするデータブロックを識別するファイル領域のアレイを構築するステップと、
前記リモートサーバに命令して、前記目的ファイル中の特定のオフセットにおいて、前記ソースファイルから前記目的ファイルに前記識別されたデータブロックをコピーさせるステップと
について構成されるプロセッサ実行可能な命令を備えたことを特徴とするプロセッサ読取可能な媒体。
【請求項２６】
前記リモートサーバに命令して前記識別されたデータブロックをコピーさせるステップは、
前記リモートサーバが、識別されたデータブロック全部を前記ソースファイルから前記目的ファイルへのコピーに成功した場合に示す状態表示を前記リモートサーバから受信するステップと、
前記ソースファイルから前記目的ファイルにコピーされるデータの全バイト数を受信するステップと
を含むことを特徴とする請求項２５に記載のプロセッサ読取可能な媒体。
【請求項２７】
前記ファイル領域のアレイを構築するステップは、前記アレイ中の各ファイル領域に対して、
前記ソースファイルからバイト数分のソースデータをコピーする前記ソースファイル内の開始位置を識別するソースオフセットを決定するステップと、
前記目的ファイルに前記バイト数分のソースデータをコピーする前記目的ファイル内の開始位置を識別する目的オフセットを決定するステップと、
コピーされるソースデータの前記バイト数を決定するステップと
を含むことを特徴とする請求項２５に記載のプロセッサ読取可能な媒体。
【請求項２８】
前記リモートサーバに命令して前記識別されたデータブロックをコピーするステップは、前記ソースファイルから前記目的ファイルにコピーするデータブロックを識別する前記ファイル領域のアレイを含む、収集・コピーのファイルシステム制御（ｆｓｃｔｌ）コマンドをリモートサーバに発行するステップを含むことを特徴とする請求項２５に記載のプロセッサ読取可能な媒体。
【請求項２９】
請求項２５に記載の前記プロセッサ読取可能な媒体を備えたことを特徴とするコンピュータ。
【請求項３０】
アプリケーションプログラムと、
リモートサーバ上のデータファイルにアクセスしおよび処理することを前記アプリケーションプログラムに可能にするプロトコルと、
前記リモートサーバに命令して、前記サーバ上のソースファイルから前記サーバ上の目的ファイル内の指定された位置にソースデータのチャンクをコピーさせる、収集・コピーのファイルシステム制御（ｆｓｃｔｌ）コマンドによって、前記リモートサーバ上のデータファイルを更新することを前記アプリケーションプログラムに可能にする前記プロトコルの収集・コピー拡張と
を備えたことを特徴とするクライアントコンピュータ。
【請求項３１】
前記収集・コピーのｆｓｃｔｌコマンドは、
どのように前記ソースデータのチャンクを前記リモートサーバ上の前記ソースファイルから前記リモートサーバ上の前記目的ファイルにコピーすべきかを定義するファイル領域のアレイと、
前記ソースファイルの識別子と、
目的ファイルハンドルと
を備えたことを特徴とする請求項３０に記載のクライアントコンピュータ。
【請求項３２】
前記プロトコルは、
ＳＭＢ（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋ）プロトコルと、
ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）プロトコルと、
ＷｅｂＮＦＳプロトコルと、
ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）プロトコルと、
Ｓａｍｂａプロトコルと
を含むグループから選択されることを特徴とする請求項３０に記載のクライアントコンピュータ。
【請求項３３】
ファイル記憶と、
クライアントアプリケーションからのコマンドに応答して、前記ファイル記憶のソースファイルにアクセスしおよび目的ファイルを開くように構成されたプロトコルと、
前記クライアントアプリケーションからの収集・コピーのファイルシステム制御（ｆｓｃｔｌ）コマンドに応答して、前記ソースファイルから前記目的ファイル中の指定された位置にソースデータをコピーするように構成されたプロトコル拡張と
を備えたことを特徴とするサーバコンピュータ。
【請求項３４】
前記収集・コピーのｆｓｃｔｌコマンドは、
前記ソースファイル内のソースデータのブロックを定義し、および前記目的ファイル中の前記ソースデータのブロックをコピーする位置をサーバに命令するファイル領域のアレイと、
前記ソースファイルを識別するレジュームキーと、
目的ファイルハンドルと
を備えたことを特徴とする請求項３３に記載のサーバコンピュータ。
【請求項３５】
前記プロトコルは、
ＳＭＢプロトコルと、
ＮＦＳプロトコルと、
ＷｅｂＮＦＳプロトコルと、
ＣＩＦＳプロトコルと、
Ｓａｍｂａプロトコルと
を含むグループから選択されることを特徴とする請求項３３に記載のサーバコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、クライアント・サーバプロトコルに関し、より詳細には、確かなおよび効率的なリモートのファイル更新を可能にするようなプロトコルの拡張（ｅｘｔｅｎｓｉｏｎ）に関する。
【背景技術】
【０００２】
モバイル技術の広まりは、クライアントマシンからサーバへと移動され続ける重要なユーザデータへのネットワークアクセスをますます多くの企業に提供している。モバイルユーザがネットワークとの接続を絶たれる場合にでも、このようなネットワークデータをモバイルユーザに使用可能にすることには、かなりの有益がある。例えば、ネットワークとの接続が絶たれる間のネットワークデータへのアクセスが継続されているので、ユーザが旅行をする場合、ユーザが家において働く場合、またはネットワークがダウンの場合、ユーザはファイル上の作業をすることができる。ネットワークとの接続が絶たれている間にネットワークデータへのアクセスを有することの別の有益は、クライアントとサーバとの間のネットワークを通じて送信されるデータ量が軽減されることである。
【０００３】
クライアント側のキャッシュは、ネットワークとの接続が絶たれている間にモバイルユーザがネットワークデータへのアクセスを維持する主な方法である。クライアント側がキャッシュされているので、モバイルユーザは、例えばネットワークを通じてアクセスしたサーバ上のファイルのローカルコピーを保存することができる。ネットワークとの接続が絶たれた後でも、ユーザはファイルのコピーを編集することができる。ネットワークに再接続すると、サーバ上のファイルのコピーを更新することができる。
【０００４】
クライアント側のキャッシュを容易にし、ならびにコンピュータ上のクライアントアプリケーションが、リモートコンピュータ上のサーバプログラムによってネットワークを通じたファイル読取り、ファイル作成、ファイル更新、および他のファイルシステムのタスク実行を行うことができる、クライアント・サーバプロトコルの種々の実装が存在する。サーバメッセージブロックプロトコル（ＳＭＢプロトコル）は、ＴＣＰ／ＩＰプロトコル、またはＩＰＸ（Ｉｎｔｅｒｎｅｔｗｏｒｋ  Ｐａｃｋｅｔ  Ｅｘｃｈａｎｇｅ）およびＮｅｔＢＥＵＩなどの他のネットワークプロトコルに加えて、インターネットを通じて使用することができるようなプロトコルの一例である。このようなプロトコルを用いる典型的な動作形態は、クライアントについては要求を行うこと、サーバについては応答を送り返すことである。したがって、このようなプロトコルによって、クライアントは、リモートサーバ上のファイルシステムに関するいくつかの「ファイルシステム制御」の動作を呼出すことが可能になる。
【０００５】
クライアント側のキャッシュの現在の方法に伴う欠点の１つは、クライアントとサーバとの間でデータを転送する間に直面する待ち時間および応答時間が著しく長いことである。例えば、ファイルの編集を行いたいユーザは、まずネットワークを通じてクライアントにファイル全体をダウンロードする。次に、ユーザは、ネットワークとの接続を絶ちおよびファイルを編集することができる。ネットワークを通じてサーバに再接続すると、編集したファイル全体を同期処理でサーバにアップロードする。元のファイルに加えた変更のサイズまたは量に関係なく、編集したファイル全体をサーバにネットワークを通じてプッシュバックしなければならない。したがって、１０メガバイトのファイルに加えられた最小の変更（例えば、１キロバイトの挿入または削除）でさえ、１０メガバイトのファイル全体を、ネットワークを通じて２回転送する必要がある。このような転送に対する待ち時間および応答時間は、電話線または衛星リンクなどの遅いリンクに関しては、特有の問題となる傾向がある。
【０００６】
クライアント側のキャッシュの現在の方法に関連した別の欠点は、クライアントとサーバとの間でファイル更新中にファイルを破損する危険性があることである。ファイル同期（すなわち、クライアントからサーバへのファイル更新）中に、更新の途中で発生するネットワークの故障または障害によって、サーバ上で更新されているファイルを破損した状態のままにすることがあり、このファイルは、自動で修復されることもあればないこともある。ファイル更新の時間が長いほど、更新中に直面するネットワークの問題が多くなる可能性があり、およびファイルが破損される危険性が高くなる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、より効率的なおよび確かなリモートファイルの更新を提供するクライアント側のキャッシュを改良する方法が必要である。
【課題を解決するための手段】
【０００８】
方法およびシステムによって、改良されたリモートプロトコルを介して効率的なおよび確かなリモートファイルの更新を可能にする。リモートプロトコルの収集・コピーの拡張によって、クライアントは、サーバに対して、サーバ上に既存のソースファイル（ｓｏｕｒｃｅ  ｆｉｌｅ）のデータの一部を収集し、およびサーバ上の新規の目的ファイル（ｄｅｓｔｉｎａｔｉｏｎ  ｆｉｌｅ）内の適当なオフセットに収集したデータの一部をコピーするよう命令することを可能にする。したがって、収集・コピー拡張によって、クライアントは、目的ファイル内に空白位置（ｂｌａｎｋ  ｌｏｃａｔｉｏｎ）を残すことを可能にする。空白位置には、ファイル更新中に、クライアントが新規データを書込むことができる。また、収集・コピー拡張によって、クライアントは、ソースファイルから目的ファイルにコピーしないことにより、ソースファイルの一部を効果的に削除することも可能にする。したがって、ファイル全体をクライアントからサーバに転送せずに、ファイル更新を行うことができる。
【発明を実施するための最良の形態】
【０００９】
同一の参照符号を、構成要素および特徴として参照する図面の至る所に用いる。
【００１０】
（序）
以下の説明は、クライアントとサーバとの間で効率的なおよび確かなファイル更新を提供するシステムおよび方法に向けられる。一般的にリモートサーバ上の種々のファイルシステムのタスク（例えば、ファイルの読取り、作成、および更新）のクライアント制御を容易にするよう構成されたリモートプロトコルは、クライアントがファイル全体をクライアントからサーバに転送する必要なしにサーバ上のファイルを更新することを可能にする、拡張を含む。リモートプロトコルの拡張は、サーバに対して、既存のソースファイルからデータのブロックを収集して、および新規の目的ファイル内の適切なオフセットにデータのブロックをコピーするよう命令する、新規のファイルシステム制御（ｆｓｃｔｌ）コマンドである。収集・コピーのｆｓｃｔｌコマンドによって、クライアントは、新規データを書込むことのできる「穴（ｈｏｌｅ）」を目的ファイルに残し（または作成し）、およびソースファイルの一部を目的ファイルのコピーしないことによりソースファイルの一部を削除することを可能にする。
【００１１】
説明するシステムおよび方法の利点には、ファイル全体の大きさに比例する帯域幅を消費するより、むしろファイル変更の大きさに比例する帯域幅を消費するファイル更新を含む。これにより、ファイル更新中の待ち時間および応答時間が短縮されるとともに、更新中のネットワーク障害によってファイルが破損される危険性を低減する。
【００１２】
（例示的環境）
図１は、リモートプロトコルを介してリモートのファイル更新を実施するのに適切な例示的動作環境１００を例示する。環境１００は、適切な動作環境の一例に過ぎず、および本発明の用途または機能の範囲を何ら制限するものではない。制限はしないが、他の周知のコンピューティングシステム、環境、および／または構成には、パーソナルコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上述のシステムまたは装置のどれでも含む分散コンピューティング環境などを含むことができる。
【００１３】
例示的動作環境１００には、ネットワーク１０６を介してサーバ装置１０４（以下では一般的に「サーバ」または「サーバ装置」と呼ぶ）に連動されたクライアント装置１０２（以下では一般的に「クライアント」または「クライアント装置」と呼ぶ）を含む。ネットワーク１０６は、従来技術の種々のプロトコル（汎用および／または専用プロトコルを含む）のどれでも採用する、従来技術の種々ネットワークのトポロジーおよび型（光、有線および／または無線のネットワークを含む）のどれでも表することができる。例えば、ネットワーク１０６には、ホームネットワーク、企業ネットワーク、またはインターネットを、１つまたは複数のローカルエリアネットワーク（ＬＡＮ）および／または広域エリアネットワーク（ＷＡＮ）の少なくとも一部も同様に、含むことができる。
【００１４】
クライアント１０２およびサーバ１０４は、クライアント（クライアントプログラム）がサーバ（サーバプログラム）からのサービスを要求し、およびサーバが要求に応答する、クライアント／サーバモデルを使用して通信する。クライアント／サーバモデルは、一般にクライアントアプリケーションがリモートサーバ上のファイルにアクセスしおよび操作する（例えば、ファイルを読取り、編集し、更新し、および作成する）ことを可能にする通信プロトコルに基づく。また、このようなリモートプロトコルは、通常、プリンタ、メールスロット、および指定されたパイプなどの他のサーバリソースへのアクセスを、クライアントに提供する。このようなプロトコルには、ＳＭＢ（サーバメッセージブロック、Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋ）プロトコル、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）プロトコル、ＷｅｂＮＦＳプロトコル、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）プロトコル、Ｓａｍｂａなどを含むことができる。このようなプロトコルは、イントラネットまたはインターネット等の種々のネットワークを通じて使用することができ、およびＴＣＰ／ＩＰプロトコル、ＩＰＸ（Ｉｎｔｅｒｎｅｔｗｏｒｋ  Ｐａｃｋｅｔ  Ｅｘｃｈａｎｇｅ）プロトコル、およびＮｅｔＢＥＵＩプロトコル等の他のプロトコルに加えてまたは連動して実行することができる。本明細書において、例示的実施形態に関して以下に説明するように、このようなプロトコルの拡張によって、効率的なおよび確かなリモートファイルの更新を可能にする。以下の例示的実施形態では、ＳＭＢプロトコルに関するプロトコル拡張について説明するが、ＳＭＢプロトコルは、説明する拡張によって利益を得ることができる適切なプロトコルの単なる一例であることに注意されたい。したがって、例示的実施形態におけるＳＭＢプロトコルの使用は、拡張を適用することができる他の適切なプロトコルに関して、何ら制限を加えるものではない。
【００１５】
クライアント１０２は、通常、電子メール、予定表、仕事の編成、ワードプロセッサ、ウェブ閲覧等の普通のコンピューティング機能を実行することができる。クライアント１０２は、本願発明の特許出願人からのウインドウズ（登録商標）・オペレーティングシステムなど、オープンプラットホームのオペレーティングシステムを実行することができる。クライアント１０２は、例えば、デスクトップＰＣ、ノートブックまたはポータブルのコンピュータ、ワークステーション、メインフレームコンピュータ、インターネットアプライアンス、ゲームコンソール、ハンドヘルドＰＣ、セルラー電話または他の無線通信装置、パーソナルデジタルアシスタント（ＰＤＡ）、セットトップボックス、それらの組合せなどを含む、従来技術の種々のコンピューティング装置のどれにでも実装することができる。クライアント１０２を実装する例示的コンピューティング環境を、図９を参照して、本明細書において以下により詳細に説明する。
【００１６】
サーバ１０４は、一般に、データファイルおよび他のリソースのストレージおよび管理を提供するファイルサーバとして構成される。サーバ１０４は、ネットワーク１０６を介して、認証されたクライアントに、これらのデータおよびリソースへのアクセスを提供する。サーバ１０４は、デスクトップＰＣ、ワークステーション、メインフレームコンピュータ、インターネットアプライアンスなどの従来技術の種々のコンピューティング装置のどれにでも実装することができる。サーバ１０４を実装する例示的コンピューティング環境を、図９を参照して、本明細書において以下により詳細に記述する。
【００１７】
（例示的実施形態）
図２は、リモートプロトコルを介してリモートのファイル更新を実装するよう構成されたクライアント装置１０２およびサーバ装置１０４の例示的実施形態を例示する。クライアント１０２は、メモリ２０２に格納されたアプリケーションプログラム２０４を実行するよう構成された１つまたは複数のプロセッサ２００を含む。また、メモリ２０２は、図２ではクライアント側プロトコル２０６として引用するリモートプロトコルを格納する。本実施形態において、クライアントプロトコル２０６は、ＳＭＢプロトコルのクライアント側の構成要素として実装する。しかしながら、上述したように、クライアントプロトコル２０６を、ＳＭＢプロトコルに制限するものではなく、および例えば、ＮＦＳプロトコル、ＷｅｂＮＦＳプロトコル、ＣＩＦＳプロトコル、Ｓａｍｂａなどを含む、他の種々の適切なプロトコルとして実装することができる。クライアントプロトコル２０６の拡張を、図２において収集・コピー拡張（イニシエータ）２０８として例示し、収集・コピー拡張２０８に対するサーバ側の対応物、収集・コピー拡張（インプリメンタ）２１６に関連して、より詳細に以下で説明する。
【００１８】
サーバ１０４は、メモリ２１２に格納されたサーバプロトコル２１６を実行するよう構成された１つまたは複数のプロセッサ２１０を含む。サーバプロトコル２１４は、ＳＭＢプロトコルのサーバ側コンポーネントとして実装される。上述したように、クライアントプロトコル２０６の収集・コピーイニシエータ２０８に対する対応物は、サーバプロトコル２１４の拡張である収集・コピーインプリメンタ２１６である。また、メモリ２１２は、ファイル記憶２１８にデータファイルを格納する。
【００１９】
クライアントプロトコル２０６によって、種々のクライアントアプリケーション２０４は、ファイル記憶２１８内のファイルへのある種類のアクセスを提供する、サーバ１０４上のいくつかのファイルシステム制御操作を呼出すことを可能にする。ファイルへのアクセスは、例えば、ファイル読取り、ファイル更新および新規ファイル作成を含むことができる。サーバプロトコル２１４は、要求されたタスクを実行することによって、クライアント１０２からのファイルシステム制御に応答する。
【００２０】
リモートプロトコル（２０６、２１４）の収集・コピーのプロトコル拡張（例えば、収集・コピーイニシエータ２０８、収集・コピーインプリメンタ２１６）は、クライアントアプリケーション２０４がクライアント１０２からサーバ１０４へのリモートのファイル更新を達成するのに利用することができる、新規のファイルシステム制御（ｆｓｃｔｌ）コマンドを提供する。一般に、新規の収集・コピーのｆｓｃｔｌコマンドは、ソースデータをサーバ１０４上のソースファイルからサーバ１０４上にある目的ファイルにコピーするための方法を、サーバ１０４に命令する。一実施形態において、収集・コピーのｆｓｃｔｌコマンドは、目的ファイルハンドル、ソースファイル識別子（レジュームキー）、およびファイル領域のアレイを取込み、ならびにソースファイルから目的ファイルにコピーされるデータのエラー状態および全バイト数を戻す。ファイル領域のアレイでの各領域は、ソースファイルのオフセット、目的ファイルのオフセット、およびコピー／転送すべきデータの長さまたはバイト数を含む。したがって、各領域は、サーバ１０４上でソースファイルから目的ファイルにコピー／転送されるデータのチャンクまたはブロックを定義する。ソースファイルのオフセットは、バイト数分のソースデータ（すなわち、ソースファイルからのデータチャンク）をソースファイルからコピーする、ソースファイル内の開始位置を識別する。目的ファイルのオフセットは、バイト数分のソースデータを目的ファイルへコピーする、目的ファイル内の開始位置を識別する。長さは、ソースファイルから目的ファイルにコピーされるバイト数を定義する。
【００２１】
クライアントアプリケーション２０４は、新規の収集・コピーのｆｓｃｔｌを使用することによって、サーバ側のみのデータコピー機能を効率的に実装する。例えば、クライアントアプリケーション２０４は、このｆｓｃｔｌを利用して、例示的順序でリモートファイルを更新することができる。すなわち、以下のとおりである。
１）アプリケーションが、少なくともＲＥＡＤ＿ＤＡＴＡアクセスを用いてソースファイルを開く。
２）アプリケーションが、既存のｆｓｃｔｌ（ＦＳＣＴＬ＿ＳＲＶ＿ＲＥＱＵＥＳＴ＿ＲＥＳＵＭＥ＿ＫＥＹ）を介して、サーバからのソースファイル識別子（レジュームキー）を要求する。
３）アプリケーションが、少なくともＷＲＩＴＥ＿ＤＡＴＡアクセスを用いて目的ファイルを作成する／開く。
４）アプリケーションが、ソースファイルから目的ファイルにコピーすべきデータブロックの領域リストを構築する。
５）アプリケーションが、収集・コピーのｆｓｃｔｌコマンド（ＦＳＣＴＬ＿ＳＲＶ＿ＣＯＰＹＣＨＵＮＫ）を発行して、ならびに戻された状態およびコピーされたバイト数を検査する。
【００２２】
図３および４は、リモートサーバ１０４上のソースファイル３００および目的ファイル３０２の例、ならびにクライアント１０２上のソースファイルのクライアントコピー３０４の例を例示する。ソースファイル３００、目的ファイル３０２、およびソースファイルのコピー３０４の例は、収集・コピーのプロトコル拡張２０８、２１６（収集・コピーのｆｓｃｔｌコマンド）を用いるリモートファイル更新の例示的処理を説明するのに役立つ。図３および４の例図は、リモートのファイル更新の概念的な例を提供するものであり、および実際の機構またはこのようなリモートのファイル更新を行うことができる機構を、けっして制限するものではないことに注意されたい。図３の例において、クライアントアプリケーション２０４は、サーバ１０４へオープン要求を送信することによって、サーバ１０４上のソースファイル３００を開いている。クライアントアプリケーション２０４は、ソースファイル３００からデータを読取るのに必要なアクセスを少なくとも有し、およびソースファイルコピー３０４をクライアント１０２へ転送している。また、クライアントアプリケーション２０４は、サーバ１０４からのソースファイル識別子（レジュームキー）を要求しており、およびサーバ１０４への別のオープン要求を送信することによって、目的ファイル３０２を作成／オープンしている。クライアントアプリケーション２０４は、目的ファイル３０２にデータを書込むのに必要なアクセスを少なくとも有する。
【００２３】
サーバ１０４上のソースファイル３００と目的ファイル３０２との間の矢印は、収集・コピーのｆｓｃｔｌコマンドがクライアント１０２から送信されていて、およびサーバ１０４で実行されていることを示すことを意図する。収集・コピー処理は、通常、クライアント１０２上のアプリケーション２０４のユーザが、サーバ１０４からソースファイ３００をダウンロードし、アプリケーション２０４を用いてソースファイル３００をクライアントコピー３０４として編集し、および編集したコピーを使ってサーバ１０４を更新するファイル更新処理の一部である。
【００２４】
クライアント１０２上のソースファイルのコピー３０４に行った変更に基づいて、クライアント１０２上の収集・コピーの拡張イニシエータ２０８は、サーバ１０４に送信する収集・コピーのｆｓｃｌコマンドを生成することによって、収集・コピー処理を開始する。収集・コピーのｆｓｃｔｌコマンドは、サーバ１０４に命令して、ユーザ／アプリケーション２０４がクライアント１０２上でソースファイルのコピー３０４に行った変更と一致するように、ソースファイル３００のセクションを目的ファイル３０２にコピーさせる。サーバ１０４上の収集・コピーの拡張インプリメンタ２１６は、サーバ１０４上で収集・コピーのｆｓｃｔｌコマンドを解釈および実行する。この例では、ソースファイル３００と目的ファイル３０２との間の矢印によって、収集・コピーのｆｓｃｔｌコマンドは、ソースファイルのオフセットが１を提供しており、バイト数分のソースデータをソースファイル３００からコピーする、ソースファイル３００内の開始位置を識別することを示す。また、収集・コピーのｆｓｃｔｌコマンドは、長さ１０を提供しており、コピーされるデータのバイト数を識別する。ソースファイルのオフセットと長さとを合わせて、ソースファイル３００から目的ファイル３０２にコピーするチャンクデータを定義する。この例においては、オフセットが１から始まりオフセットが１０で終わるソースデータブロック３０６が、ソースファイル３００から目的ファイル３０２にコピーされるべきデータのブロックとして、収集・コピーのｆｓｃｔｌコマンドによって定義されている。
【００２５】
図示の目的ファイル３０２によって、収集・コピーｆｓｃｔｌコマンドは、目的ファイルのオフセットが１０も提供し、目的ファイルへ識別されたバイト数分をコピーする、目的ファイル３０２内の開始位置を識別することを示す。したがって、ソースデータブロック３０６は、長さのパラメータが１０に合わせて、オフセットが１０で開始され、およびオフセットが２０で終了するように、目的ファイル３０２へコピーされる。上述したように、収集・コピーのｆｓｃｔｌコマンドは、ソースファイル３００から目的ファイル３０２へコピーするファイル領域（データブロック）のアレイを含む、または定義することができる。したがって、上述したのと同様の方法で、図３に関して説明する収集・コピーのｆｓｃｔｌコマンドは、サーバ１０４（すなわち、収集・コピーの拡張インプリメンタ２１６）にまた命令して、ソースファイル３００から目的ファイル３０２（目的ファイルのオフセットが３０、長さが２０）へソースデータブロック３１０（ソースファイルのオフセットが２０、長さが２０）をコピーさせる。
【００２６】
収集・コピーのｆｓｃｔｌコマンドをサーバ１０４上で実行した後、目的ファイル３０２内の２つのセクションが空白のままである、すなわちデータを欠いていることが、目的ファイル３０２から明らかである。目的ファイル３０２内の空白のセクション３１２、３１４は、クライアント１０２上のソースファイルコピー３０４に行われた変更に合わせて、空白のセクション３１２、３１４に書込まれる新規データを見越して、収集・コピーのｆｓｃｔｌコマンドによって故意に作成される。クライアント１０２のソースファイルコピー３０４は、ユーザがソースファイルコピー３０４内で２つの異なる位置に加えた、２つの新規データブロック３１６、３１８を示す。第１の新規データブロック３１６は、ソースファイルコピー３０４における新規のオフセットの位置にソースデータブロック３０６を効果的に再配置し、一方第２の新規データブロック３１８は、ソースファイル３００からの元のソースデータブロック３０８に入れ替わって（すなわち、削除してまたは上書きして）いることに注意されたい。したがって、収集・コピーの拡張イニシエータ２０８は、サーバ１０４に命令して、ソースデータブロック３０６を目的ファイル３０２内の適切なオフセットの位置にコピーさせ、およびソースデータブロック３０８を全くコピーさせない、収集・コピーのｆｓｃｔｌコマンドを生成している。したがってソースデータブロック３０８は、目的ファイル３０２にコピーされないことによって、効果的に削除される。代わりに、収集・コピーのｆｓｃｔｌコマンドは、新規データを書込める、空白のセクション３１４のままにしておく。
【００２７】
図４は、クライアント１０２上のソースファイルコピー３０４からの新規データブロック３１６、３１８が、目的ファイル３０２における適切な位置に書込まれることを例示する。クライアント１０２からサーバ１０４へのデータ書込は、上述の収集・コピーのｆｓｃｔｌコマンドの実装と連動して行われる。しかし、クライアント１０２からのデータ書込は、収集・コピーのｆｓｃｔｌコマンドがサーバ１０４に送信される前または後に行うことができる。すなわち、クライアント１０２からの適切な要求に基づいて目的ファイル３０２が作成／オープンされるとすぐに、クライアント１０２からの収集・コピーのｆｓｃｔｌコマンドに応答してサーバ１０４によって目的ファイル３０２にデータをコピーすることができ、またはクライアント１０２からのデータ書込要求によって目的ファイル３０２にデータを書込むことができる。いずれの場合にも、収集・コピーのｆｓｃｔｌコマンドは、サーバのソースファイル３００からのどのデータブロックを目的ファイル３０２にコピーするのか、およびどの位置に目的ファイル３０２へのデータブロックをコピーするのかを、サーバ１０２に命令する。クライアント１０２からの新規データを目的ファイル３０２に書込む場合に、サーバ１０４が収集・コピーのｆｓｃｔｌコマンドを実行する前か後かは問題ではない。
【００２８】
収集・コピーのプロトコル拡張２０８からの収集・コピーのｆｓｃｔｌコマンドは、ＷＲＩＥＴＥ＿ＤＡＴＡアクセスで開かれるあらゆるハンドル上に発行され、および一実装に関する収集・コピーのｆｓｃｔｌコマンドのビヘイビアを、以下のように定義することができる。
【００２９】
（入力バッファ）
入力バッファは、以下のように定義する、ＳＲＶ＿ＣＯＰＹＣＨＵＮＫ＿ＣＯＰＹ型の入力バッファである。
2006031711.tif 000003
【００３０】
入力バッファにおいて、ＳｏｕｒｃｅＦｉｌｅは、少なくともＲＥＡＤ＿ＤＡＴＡアクセスを用いて開かれたファイルからのＦＳＣＴＬ＿ＱＵＥＲＹ＿ＲＥＳＵＭＵ＿ＫＥＹを使用して得られたレジュームキー（ソースファイル識別子）である。ＣｈｕｎｋＣｏｕｎｔは、ＣｈｕｎｋのアレイにおけるＳＲＶ＿ＣＯＰＹＣＨＵＮＫの構造体（ソースファイル領域）の数である。各ＳＲＶ＿ＣＯＰＹＣＨＵＮＫの構造体に対して、ＳｏｕｒｃｅＯｆｆｓｅｔは、ＳｏｕｒｃｅＦｉｌｅにおけるコピー元の位置として設定し、およびＤｅｓｔｉｎａｔｉｏｎＯｆｆｓｅｔは、目的ハンドルにおけるコピー先のオフセットとして設定する。Ｌｅｎｇｔｈは、ソースオフセットから目的オフセットに転送するバイト数を保有する。
【００３１】
（出力バッファ）
出力バッファは、以下のように定義する、ＳＲＶ＿ＣＯＰＹＣＨＵＮＫ＿ＲＥＳＰＯＮＳＥ型の出力バッファである。
【００３２】
2006031711.tif 000004
2006031711.tif 000005
【００３３】
（戻り値）
サーバが、特定のチャンク（データブロック）の全部を、ソースファイルから目的ファイルにコピーする場合、ＳＴＡＴＵＳ＿ＳＵＣＣＥＳＳ（成功状態）を戻す。この場合、出力バッファにおけるＣｈｕｎｋｓＷｒｉｔｔｅｎは、入力バッファにおけるＣｈｕｎｋＣｏｕｎｔに調和させるべきである。
【００３４】
サーバ１０４が、チャンク（データブロック）をコピーするのに失敗する場合、チャンクをコピーすることができない理由を示す状態コードを戻す。この場合、出力バッファにおけるＣｈｕｎｋｓＷｒｉｔｔｅｎは、コピーするのに成功したチャンクの数を示す。サーバ１０４は、入力バッファにおいてＣｈｕｎｋのアレイが指定した順序でチャンクを処理し、および最初の失敗で処理を停止することに注意されたい。
【００３５】
クライアント１０２の要求がサーバ１０４の制限のどれかを越えると、サーバ１０４は、ＳＴＡＴＵＳ＿ＩＮＶＡＬＩＤ＿ＰＡＲＡＭＥＴＥＲを戻す。さらに、この場合、サーバ１０４は、以下の変換を用いて、ＳＲＶ＿ＣＯＰＹＣＨＵＮＫ＿ＲＥＳＰＯＮＳＥにおけるサーバ１０４の構成される最大限度を戻す。
ＣｈｕｎｋＷｒｉｔｔｅｎ＝ＳＲＶが単一操作において許容するチャンクの最大数。
ＣｈｕｎｋＢｙｔｅｓＷｒｉｔｔｅｎ＝あらゆる別個のチャンクの最大サイズ。
ＴｏｔａｌＢｙｔｅｓＷｒｉｔｔｅｎ＝合計されたチャンク全部の最大全長。
【００３６】
特定の時間（例えば、デフォルトの２５秒）でコピーが完了しない場合に、サーバ１０４は、ＳＴＡＴＵＳ＿ＩＯ＿ＴＩＭＥＯＵＴを戻す。デフォルトをレジストリに設定することができる別の構成パラメータには、以下を含む。
ＣｈｕｎｋＭａｘ＝単一の収集・コピーのｆｓｃｔｌコマンドにおいてコピーされるチャンクの最大数。例示的デフォルトは２５６である。
ＣｈｕｎｋＷｒｉｔｅＬｉｍｉｔ＝単一のチャンクにおいてコピーされるデータの最大量であり、バイト単位で指定される。例示的デフォルトは１ＭＢである。
ＣｈｕｎｋＴｏｔａｌＷｒｉｔｅＬｉｍｉｔ＝単一の収集・コピーのｆｓｃｔｌコマンドでコピーされるデータの最大量であり、バイト単位で指定される。例示的デフォルトは１６ＭＢである。
ＣｈｕｎｋＴｉｍｅｏｕｔ＝単一の収集・コピーのｆｓｃｔｌコマンドを処理する間に経過する最大時間であり、秒単位で指定される。例示的デフォルトは２５秒である。
【００３７】
（例示的方法）
図５〜８のフローチャートを主に参照して、リモートプロトコルを介してリモートのファイル更新を実行するための方法の例を説明する。方法は、通常、図１〜４に関して上述した例示的実施形態に使用される。フローチャートおよびフローチャートのブロックに関連付けられた文章を用いて、１つまたは複数の方法を開示するが、説明する方法の要素は、必ずしも提示する順序で実行する必要はなく、および代替の順序が同様の利点を生じることできることが理解されよう。さらに、方法は、排他的ではなく、および単独または互いに組み合わせて実行することができる。説明する方法の要素は、例えば、ＡＳＩＣ上でハードウエアの論理ブロックによって、またはプロセッサ読取可能な媒体上で定義されるプロセッサ読取可能な命令の実行によって、などを含むあらゆる適切な手段によって実行される。
【００３８】
本明細書において用いる「プロセッサ読取可能な媒体」は、プロセッサによって使用または実行するために、命令を含む、格納する、通信する、伝える、または転送することができるあらゆる手段とすることができる。制限はしないが、プロセッサ読取可能な媒体は、電気、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、デバイスまたは伝搬媒体とすることができる。プロセッサ読取可能な媒体のより具体的な例には、とりわけ、１つまたは複数の線を有する電気接続（電気）、ポータブルのコンピュータディスケット（磁気）、ランダムアクセスメモリ（ＲＡＭ）（磁気）、読取専用メモリ（ＲＯＭ）（磁気）、消去することができるプログラム可能な読取専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ（光学）、書換え可能なコンパクトディスク（ＣＤ−ＲＷ）（光学）、およびポータブルのコンパクトディスク読取専用メモリ（ＣＤＲＯＭ）（光学）が含まれる。
【００３９】
方法５００のブロック５０２において、リモートサーバ１０４上でソースファイルを開く。ソースファイルを、もっと正確にはデータ読取状態で開く。ソースファイルは、クライアント１０２上で実行され、およびＳＭＢプロトコル、ＮＦＳプロトコル、ＷｅｂＮＦＳプロトコル、ＣＩＦＳプロトコル、Ｓａｍｂａなどのリモート通信プロトコルを用いるクライアントアプリケーション２０４によって開かれる。ブロック５０４において、目的ファイルを、リモートサーバ１０４上で開く。ブロック５０６において、ソースファイルのコピーを、リモートサーバ１０４からクライアント１０２に対して取出しまたはダウンロードする。ブロック５０８において、クライアント１０２は、ソースファイルを識別する識別子（すなわち、レジュームキー）を要求する。
【００４０】
ブロック５１０において、ソースファイルからソースデータを収集し、およびソースファイルから目的ファイルにソースデータをコピーすることを命令するための収集・コピーのファイルシステム制御（ｆｓｃｔｌ）コマンドをリモートサーバ１０４に送信する。リモートプロトコルの収集・コピー拡張２０８は、サーバ１０４から取出されたソースファイルのコピーに行われる変更に基づいて、収集・コピーの（ｆｓｃｔｌ）コマンドを生成する。ソースファイルのコピーに行われる変更に一致して、どのようにしてソースデータをソースファイルから目的ファイルにコピーすべきかを定義するファイル領域のアレイを構築する。ファイル領域のアレイ、ソースファイル識別子、および目的ファイルハンドルを、収集・コピーのｆｓｃｔｌコマンドで送信する。アレイを構築することには、アレイにおける領域毎に、サーバ１０４がソースファイルからのコピーを開始する、ソースファイルにおける開始位置を示すソースオフセットを決定することを含む。目的オフセットは、サーバ１０４が目的ファイルへのソースファイルデータのコピーを開始する、目的ファイルにおける開始位置を示す。ソースファイルから目的ファイルにコピーする各ソースデータブロックの長さを決定する、コピーの長さまたはバイト数も含む。
【００４１】
ブロック５１２において、クライアント１０２は、ソースファイルから目的ファイルにコピーされた指定のソースデータの全バイト数を示す状態表示を、サーバ１０４から受信する。方法は、図６のブロック５１４に続く。ブロック５１４において、サーバがソースファイルから目的ファイルへ指定された全ソースデータをコピーした場合、クライアント１０２は、サーバ１０４から成功表示を受信する。ブロック５１６において、サーバ１０４が、ソースファイルから目的ファイルへ指定された全ソースデータをコピーすることに失敗する場合、クライアント１０２は、サーバ１０４から失敗の状態表示を受信する。失敗の状態表示といっしょに、クライアント１０２は、指定された全ソースデータがソースファイルから目的ファイルにコピーされなかった理由を示す状態コードを受信する。
【００４２】
ブロック５１８において、サーバ１０４に送信される収集・コピーのｆｓｃｔｌコマンドがいずれかのサーバ制限を越える場合、クライアント１０２は、サーバ１０４から無効パラメータの表示を受信する。サーバ制限を越えている場合に、クライアント１０２は、サーバパラメータについて設定される最大制限を示す、構成された最大限度をサーバ１０４から受信する。受信する構成された最大限度は、単一の収集・コピーのｆｓｃｔｌでコピーすることができるデータチャンクの数について構成された最大限度（例えば、２５６）、単一のデータチャンクでコピーすることができるデータ量について構成された最大限度（例えば、１ＭＢ）、単一の収集・コピーのｆｓｃｔｌでコピーすることができるデータ量について構成された最大限度（例えば、１６ＭＢ）、および単一の収集・コピーのｆｓｃｔｌコマンドを処理する間に経過することができる時間について構成された最大限度（例えば、２５秒）を含む。
【００４３】
ブロック５２０において、クライアント１０２は、目的ファイルの中の空白のままである位置において、目的ファイルに新規データを（すなわち、ソースファイルデータと対比して）書込む。クライアント１０２は、書込むべき新規データが、どこにデータを書込むべきかを示す目的ファイル内のオフセットとともに、含まれる書込要求をサーバに送信する。サーバによって収集・コピーｆｓｃｔｌコマンドが実行される前または後に、目的ファイルに新規データを書込むことができることを特に言及する。
【００４４】
図７から開始して、リモートプロトコルを介してリモートのファイル更新を実行する別の方法７００を例示する。方法７００のブロック７０２において、サーバ１０４は、クライアント１０２からの第１のオープン要求に応答して、もっと正確にはデータ読取状態でソースファイルを開く。ブロック７０４において、サーバ１０４は、クライアント１０２からの第２のオープン要求に応答して、もっと正確にはデータ書込状態で目的ファイルを開く。ブロック７０６において、サーバ１０４は、クライアント１０２から受信する収集・コピーのｆｓｃｔｌコマンドに応答して、ソースファイルから目的ファイルにソースデータをコピーする。収集・コピーのｆｓｃｔｌコマンドは、どのようにソースデータをソースファイルから目的ファイルにコピーすべきかを定義するファイル領域のアレイを含む。ファイル領域のアレイは、クライアント１０２上に置かれたソースファイルのコピーに行われる変更に一致して、クライアント１０２上に構築される。アレイにおける各ファイル領域は、サーバ１０４がソースファイルからコピーを開始するソースファイルの中の開始位置を示すソースオフセット、サーバ１０４が目的ファイルにソースファイルデータのコピーを開始する目的ファイルの中の開始位置を示す目的オフセット、およびソースファイルから目的ファイルにコピーするソースファイルの各データブロックの長さを決定するコピーの長さまたはバイト数を含む。収集・コピーのｆｓｃｔｌコマンドは、ソースファイル識別子および目的ファイルハンドルをも含む。
【００４５】
ブロック７０８において、サーバ１０４は、ソースファイルから目的ファイルにコピーされた指定のソースデータの全バイト数を示す状態表示を、クライアント１０２に送信する。ブロック７１０において、サーバ１０４は、サーバが指定された全ソースデータをソースファイルから目的ファイルにコピーした場合に、成功表示をクライアント１０２に送信する。ブロック７１２において、サーバ１０４は、サーバ１０４が指定された全ソースデータをソースファイルから目的ファイルにコピーするのに失敗する場合に、失敗の状態表示を送信する。失敗の状態表示とともに、サーバ１０４は、指定された全ソースデータがソースファイルから目的ファイルにコピーされなかった理由を示す状態コードを送信する。
【００４６】
方法７００は、図８のブロック７１４に続く。ブロック７１４において、サーバ１０４は、収集・コピーのｆｓｃｔｌコマンドがいずれかのサーバ制限を越える場合に、クライアント１０２に無効パラメータの表示を送信する。サーバ制限を越えている場合に、サーバ１０４は、サーバパラメータについて設定される最大制限を示す構成された最大限度をサーバ１０４から送信する。送信される構成された最大限度は、単一の収集・コピーのｆｓｃｔｌでコピーすることができるデータチャンクの数について構成された最大限度（例えば、２５６）、単一のデータチャンクでコピーすることができるデータ量について構成された最大限度（例えば、１ＭＢ）、単一の収集・コピーのｆｓｃｔｌでコピーすることができるデータ量について構成された最大限度（例えば、１６ＭＢ）、および単一の収集・コピーのｆｓｃｔｌコマンドを処理する間に経過することのできる時間について構成された最大限度（例えば、２５秒）を含む。
【００４７】
ブロック７１６において、サーバ１０４は、目的ファイルの中の空白のままである位置において目的ファイルに書込むべき（すなわち、ソースデータと対比して）新規データを含むデータ書込要求を、クライアント１０２から受信する。ブロック７１８において、サーバ１０４は、書込要求に一致して、目的ファイルにおける空白位置に新規データを書込む。サーバによって収集・コピーのｆｓｃｔｌコマンドが実行される前または後に、目的ファイルに新規データを書込むことができることを特に言及する。
【００４８】
（例示的コンピューティング環境）
図９は、図１〜８を参照して本明細書において上述したクライアント装置１０２およびサーバ装置１０４などのコンピュータ装置を実装するのに適した例示的コンピューティング環境を例示する。図９には、１つの具体的な構成を示すが、このようなコンピューティング装置は、他のコンピューティング構成で実装してもよい。
【００４９】
コンピューティング環境９００は、コンピュータ９０２の形式で汎用コンピューティングシステムを含む。制限はしないが、コンピュータ９０２の構成要素は、１つもしくは複数のプロセッサまたは処理ユニット９０４、システムメモリ９０６、およびプロセッサ９０４を含む種々のシステム構成要素をシステムメモリ９０６に連結するシステムバス９０８を含むことができる。
【００５０】
システムバス９０８は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックポート（ＡＧＰ）、およびいろいろなバスアーキテクチャのうちのいずれかを使用するプロセッサまたはローカルバスを含む、数種類のバス構造のいずれかのうちの１つまたは複数を表す。システムバス９０８の例は、メザニンバスとしても知られるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスであろう。
【００５１】
コンピュータ９０２は、いろいろなコンピュータ読取可能な媒体を含む。このような媒体は、コンピュータ９０２によってアクセス可能であり、および揮発性媒体と不揮発性媒体との、取外し可能な媒体と固定媒体との両方を含む、あらゆる使用可能な媒体とすることができる。システムメモリ９０６は、ランダムアクセスメモリ（ＲＡＭ）９１０などの揮発性メモリ、および／または読取専用メモリ（ＲＯＭ）９１２などの不揮発性メモリの形式でのコンピュータ読取可能な媒体を含む。基本入出力システム（ＢＩＯＳ）９１４は、起動中などに、コンピュータ９０２内の要素間で情報を転送するのを援助する基本ルーチンを含んでおり、ＲＯＭ９１２に格納される。ＲＡＭ９１０は、処理ユニット９０４によって、直にアクセス可能でありおよび／または現時点で処理されている、データおよび／またはプログラムモジュールを含む。
【００５２】
コンピュータ９０２は、他の取外し可能／固定の、揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。一例として、図９には、固定の不揮発性磁気媒体（図示せず）に対して読取りおよび書込むためのハードディスクドライブ９１６、取外し可能な不揮発性磁気ディスク９２０（例えば、「フロッピー（登録商標）ディスク」）に対して読取りおよび書込むための磁気ディスクドライブ９１８、ならびにＣＤ−ＲＯＭ，ＤＶＤ−ＲＯＭ、または他の光媒体などの取外し可能な不揮発性光ディスク９２４に対して読取りおよび／または書込むための光ディスクドライブ９２２を例示する。ハードディスクドライブ９１６、磁気ディスクドライブ９１８、および光ディスクドライブ９２２を、各々、１つまたは複数のデータ媒体インターフェイス９２５によって、システムバス９０８に接続する。あるいはまた、ハードディスクドライブ９１６、磁気ディスクドライブ９１８、および光ディスクドライブ９２２を、ＳＣＳＩインターフェイス（図示せず）によってシステムバス９０８に接続することができる。
【００５３】
ディスクドライブおよびディスクドライブに関連するコンピュータ読取可能な媒体は、コンピュータ読取可能な命令、データ構造体、プログラムモジュール、および他のデータの不揮発性記憶装置を、コンピュータ９０２に提供する。例では、ハードディスク９１６、取外し可能な磁気ディスク９２０、および取外し可能な光ディスク９２４を例示するが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光記憶装置、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、電気的に消去することができるプログラム可能な読取専用メモリ（ＥＥＰＲＯＭ）など、コンピュータによりアクセス可能なデータを格納することができる他の種類のコンピュータ読取可能な媒体を使用することによって、例示的コンピューティングシステムおよび環境を実装することができることを理解すべきである。
【００５４】
一例として、オペレーティングシステム９２６、１つまたは複数のアプリケーションプログラム９２８、他のプログラムモジュール９３０、およびプログラムデータ９３２を含む、ハードディスク９１６、磁気ディスク９２０、光ディスク９２４、ＲＯＭ９１２、および／またはＲＡＭ９１０に、あらゆる数のプログラムモジュールを格納することができる。このようなオペレーティングシステム９２６、１つまたは複数のアプリケーションプログラム９２８、他のプログラムモジュール９３０、およびプログラムデータ９３２（またはそれらの何らかの組合わせ）の各々は、ユーザのネットワークアクセス情報に関するキャッシュ機構の実施形態を含むことができる。
【００５５】
コンピュータ９０２は、通信媒体として識別されるいろいろなコンピュータ／プロセッサ読取可能な媒体を含むことができる。通信媒体は、コンピュータ読取可能な命令、データ構造体、プログラムモジュール、または搬送波もしくは他の転送機構などの変調データ信号中の他のデータを包含し、およびあらゆる情報伝送媒体を含む。用語の「変調データ信号」とは、信号中の情報をエンコードするような方法で設定されまたは変更された信号特性のうちの１つまたは複数を有する信号を意味する。一例として、および制限はしないが、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線および他の無線媒体などの無線媒体を含む。上述のいずれかの組み合わせでも、コンピュータ読取可能な媒体の範囲内に含まれる。
【００５６】
キーボード９３４およびポインティング装置９３６（例えばマウス）などの入力装置によって、ユーザは、コマンドおよび情報をコンピュータシステム９０２に入力することができる。他の入力装置９３８（具体的に図示せず）は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、シリアルポート、スキャナなどを含むことができる。これらおよび他の入力装置を、システムバス９０８に連結された入出力インターフェイス９４０によって処理ユニット９０４に接続するが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）など、他のインターフェイスおよびバス構造によって接続することができる。
【００５７】
モニタ９４２または他の種類の表示装置を、ビデオアダプタ９４４など、インターフェイスによってシステムバス９０８に接続することもできる。モニタ９４２に加え、他の周辺出力装置は、入出力インターフェイス９４０によってコンピュータ９０２に接続することができるスピーカ（図示せず）およびプリンタ９４６などの構成要素を含むことができる。
【００５８】
コンピュータ９０２は、リモートコンピューティング装置９４８など、１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーキング環境において動作することができる。一例として、リモートコンピューティング装置９４８は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイスまたは他の一般のネットワークノードなどとすることができる。リモートコンピューティング装置９４８は、本明細書において説明したコンピュータシステム９０２の関連要素および特徴のうちの多くまたは全部を含むことができるポータブルコンピュータとして例示する。
【００５９】
コンピュータ９０２とリモートコンピュータ９４８との間の論理接続は、ローカルエリアネットワーク（ＬＡＮ）９５０および一般的な広域エリアネットワーク（ＷＡＮ）９５２として表す。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてはどこにでもある。ＬＡＮのネットワーク環境で実施する場合、コンピュータ９０２は、ネットワークインターフェイスまたはアダプタ９５４によってローカルネットワーク９５０に接続される。ＷＡＮのネットワーク環境で実施する場合、コンピュータ９０２は、モデム９５６または広域エリアネットワーク９５２を通じて通信を確立する他の手段を含む。モデム９５６は、コンピュータ９０２に対して内蔵または外付けとすることができ、入出力インターフェイス９４０または他の適切な機構によってシステムバス９０８に接続することができる。例示したネットワーク接続は、例示的であること、およびコンピュータ９０２と９４８との間に通信リンクを確立する他の手段を採用することができることを理解されたい。
【００６０】
コンピューティング環境９００で例示した環境など、ネットワーク化された環境において、説明したコンピュータ９０２の関連プログラムモジュール、またはその一部を、リモートのメモリ記憶装置に格納することができる。一例として、リモートアプリケーションプログラム９５８は、リモートコンピュータ９４８のメモリ装置上に常駐する。説明の目的のために、オペレーティングシステムなど、アプリケーションプログラムおよび他の実行可能なプログラムの構成要素を、本明細書において別個のブロックとして例示するが、これらのプログラムおよび構成要素は、様々な時間にコンピューティングシステム９０２の異なる記憶装置の構成要素において常駐し、およびコンピュータのデータプロセッサによって実行されることが認識される。
【００６１】
（結び）
構造的特徴および／または方法論的な動作に特定の言語で本発明を説明しているが、添付した特許請求の範囲で明示される本発明は、説明した特定の特徴または動作に必ずしも制限されないことを理解すべきである。むしろ特定の特徴または動作は、請求する発明を実施する例示的形態として開示する。
【図面の簡単な説明】
【００６２】
【図１】リモートプロトコルを介してリモートのファイル更新を実施するのに適した例示的動作環境を例示する図である。
【図２】リモートプロトコルを介してリモートのファイル更新を実施するよう構成されたクライアント装置およびサーバ装置の例示的実施形態を例示する図である。
【図３】リモートサーバ上のソースファイルおよび目的ファイルの例、ならびにクライアント上のソースファイルのクライアントコピーの例を例示する図である。
【図４】リモートサーバ上のソースファイルおよび目的ファイルの例、ならびにクライアント上のソースファイルのクライアントコピーの例を例示する図である。
【図５】リモートプロトコルを介してリモートのファイル更新を実施する例示的方法を例示するフローチャートである。
【図６】リモートプロトコルを介してリモートのファイル更新を実施する例示的方法を例示するフローチャートである。
【図７】リモートプロトコルを介してリモートのファイル更新を実施する例示的方法を例示するフローチャートである。
【図８】リモートプロトコルを介してリモートのファイル更新を実施する例示的方法を例示するフローチャートである。
【図９】図１〜８を参照して説明するなどクライアントコンピュータ装置およびサーバコンピュータ装置を実施するのに適した例示的コンピューティング環境を例示する図である。
【符号の説明】
【００６３】
１０２  クライアント装置
１０４  サーバ装置
２００  プロセッサ
２０２  メモリ
２０４  アプリケーション
２０６  クライアント側プロトコル
２０８  収集・コピー拡張（イニシエータ）
２１０  プロセッサ
２１２  メモリ
２１４  サーバ側プロトコル
２１６  収集・コピー拡張（インプリメンタ）
２１８  ファイル記憶
【図１】
2006031711.tif 000006
【図２】
2006031711.tif 000007
【図３】
2006031711.tif 000008
【図４】
2006031711.tif 000009
【図５】
2006031711.tif 000010
【図６】
2006031711.tif 000011
【図７】
2006031711.tif 000012
【図８】
2006031711.tif 000013
【図９】
2006031711.tif 000014
【外国語明細書】
2006031711000001.pdf