(57)【要約】ファイルバージョン管理システム及びその動作に関する対応する方法が開示される。ファイルバージョン管理システムは、ファイルシステム又はそのアイテムに対する変更があるたびに、ファイルシステムのスナップショットを作成することを可能にする。スナップショットは、直前の先行スナップショットにリンクされ得る。いくつかのより古いスナップショットは、複数の基準に基づいて、間引きプロセスに従って破棄され得る。スナップショットは、所望のバージョンを選択しやすくする形で、ユーザに表示され得る。
2016539401.tif 000002
【特許請求の範囲】
【請求項１】
ファイルバージョン管理システムを維持するための方法であって、
１以上のプロセッサにより、ファイルシステムの変更を判別するステップと、
前記１以上のプロセッサにより、前記判別に基づいて、前記ファイルシステムのスナップショットを作成するステップと、
前記１以上のプロセッサにより、前記スナップショットを、複数の先行スナップショットのうちの少なくとも１つの先行スナップショットにリンクするステップと、
前記１以上のプロセッサにより、１以上の予め定められた基準に基づいて、前記複数の先行スナップショットのうちの１以上のスナップショットを動的に破棄するステップと、
を含む方法。
【請求項２】
前記ファイルシステムの前記変更は、新たなファイルの作成、既存ファイルのコンテンツの変更、既存ファイルの削除、既存ファイルの１以上の属性の変更、新たなフォルダの作成、既存フォルダのコンテンツの変更、既存フォルダの削除、及び既存フォルダの１以上の属性の変更のうちの１つを含む、請求項１記載の方法。
【請求項３】
前記スナップショットは、変更されたファイル、作成されたファイル、変更されたフォルダ、及び作成されたフォルダのうちの１以上を含む、請求項１記載の方法。
【請求項４】
前記スナップショットは、前記スナップショットの識別子、前記変更に関連付けられている日付及び時間、前記変更に関する情報、前記変更に関連付けられている時点における前記ファイルシステムの状態に関する情報、及び、前記複数の先行スナップショットのうちの少なくとも１つの先行スナップショットへの少なくとも１つのリンクを含む、請求項１記載の方法。
【請求項５】
前記スナップショットを説明する情報、前記複数の先行スナップショット、及び、前記スナップショットと前記複数の先行スナップショットのうちの少なくとも１つの先行スナップショットとの間のリンクを、データベースに記憶するステップ
をさらに含む、請求項１記載の方法。
【請求項６】
前記ファイルシステムのルートに追加された仮想フォルダを介して、前記スナップショットにアクセスするステップ
をさらに含み、
前記仮想フォルダは、前記複数の先行スナップショットへのアクセスを提供する、請求項５記載の方法。
【請求項７】
前記仮想フォルダにおける前記複数の先行スナップショットは、日付、又は、日付及び時間によりラベリングされたサブフォルダのツリーに分割され、前記日付及び前記時間は、前記スナップショットを作成した日付及び時間である、請求項６記載の方法。
【請求項８】
前記１以上のスナップショットを動的に破棄しながら、削除されたスナップショットの後続スナップショットを、前記削除されたスナップショットの直前の先行スナップショットにリンクするステップ
をさらに含む、請求項１記載の方法。
【請求項９】
前記１以上の予め定められた基準は、前記１以上のスナップショットを作成した時点に基づく、請求項１記載の方法。
【請求項１０】
予め定められた時点から、前記ファイルシステムの最後の変更の時点までに経過した時間を、２以上の時間期間に分割するステップと、
前記２以上の時間期間の各特定の時間期間に、前記ファイルシステムに保持されている、前記特定の時間期間内に作成された複数のスナップショットを割り当てるステップと、
をさらに含む、請求項１記載の方法。
【請求項１１】
前記２以上の時間期間のうち、前記最後の変更の前記時点のより近くに位置する時間期間は、前記ファイルシステムに保持されている、より多くのスナップショットを含む、請求項１０記載の方法。
【請求項１２】
前記１以上の予め定められた基準は、１以上のスナップショットに関連付けられているコンテンツに基づく、請求項１記載の方法。
【請求項１３】
前記１以上の予め定められた基準は、１以上のスナップショットに関連付けられている変更のタイプに基づく、請求項１記載の方法。
【請求項１４】
ファイルバージョン管理システムを維持するためのシステムであって、
１以上のプロセッサと、
前記１以上のプロセッサに通信可能に接続されているメモリであって、前記メモリは、命令を記憶しており、前記命令は、前記１以上のプロセッサにより実行されたときに、
前記１以上のプロセッサにより、ファイルシステムの変更を判別するステップと、
前記１以上のプロセッサにより、前記判別に基づいて、前記ファイルシステムのスナップショットを作成するステップと、
前記１以上のプロセッサにより、前記スナップショットを、複数の先行スナップショットのうちの少なくとも１つの先行スナップショットにリンクするステップと、
前記１以上のプロセッサにより、１以上の予め定められた基準に基づいて、前記複数の先行スナップショットのうちの１以上のスナップショットを動的に破棄するステップと、
を含む方法を実行する、メモリと、
を備えたシステム。
【請求項１５】
前記ファイルシステムの前記変更は、新たなファイルの作成、既存ファイルのコンテンツの変更、既存ファイルの削除、既存ファイルの１以上の属性の変更、新たなフォルダの作成、既存フォルダのコンテンツの変更、既存フォルダの削除、及び既存フォルダの１以上の属性の変更のうちの１つを含む、請求項１４記載のシステム。
【請求項１６】
前記スナップショットは、変更されたファイル、作成されたファイル、変更されたフォルダ、及び作成されたフォルダのうちの１以上を含む、請求項１４記載のシステム。
【請求項１７】
前記スナップショットは、前記スナップショットの識別子、前記変更に関連付けられている日付及び時間、前記変更に関する情報、前記変更に関連付けられている時点における前記ファイルシステムの状態に関する情報、及び、前記複数の先行スナップショットのうちの少なくとも１つの先行スナップショットへの少なくとも１つのリンクを含む、請求項１４記載のシステム。
【請求項１８】
前記スナップショットを説明する情報、前記複数の先行スナップショット、及び、前記スナップショットと前記複数の先行スナップショットのうちの少なくとも１つの先行スナップショットとの間のリンクを、データベースに記憶すること
をさらに含む、請求項１４記載のシステム。
【請求項１９】
前記ファイルシステムのルートに追加された仮想フォルダを介して、前記スナップショットにアクセスすること
をさらに含み、
前記仮想フォルダは、前記複数の先行スナップショットへのアクセスを提供する、請求項１８記載のシステム。
【請求項２０】
前記仮想フォルダにおける前記複数の先行スナップショットは、日付、又は、日付及び時間によりラベリングされたサブフォルダのツリーに分割され、前記日付及び前記時間は、前記スナップショットを作成した日付及び時間である、請求項１９記載のシステム。
【請求項２１】
１以上のスナップショットを動的に破棄しながら、削除されたスナップショットの後続スナップショットを、前記削除されたスナップショットの直前の先行スナップショットにリンクすること
をさらに含む、請求項１４記載のシステム。
【請求項２２】
前記１以上の予め定められた基準は、前記１以上のスナップショットを作成した時点に基づく、請求項１４記載のシステム。
【請求項２３】
予め定められた時点から、前記ファイルシステムの最後の変更の時点までに経過した時間を、２以上の時間期間に分割することと、
前記２以上の時間期間の各特定の時間期間に、前記ファイルシステムに保持されている、前記特定の時間期間内に作成された複数のスナップショットを割り当てることと、
をさらに含む、請求項１４記載のシステム。
【請求項２４】
前記２以上の時間期間のうち、前記最後の変更の前記時点のより近くに位置する時間期間は、前記ファイルシステムに保持されている、より多くのスナップショットを含む、請求項２３記載のシステム。
【請求項２５】
前記１以上の予め定められた基準は、１以上のスナップショットに関連付けられているコンテンツに基づく、請求項１４記載のシステム。
【請求項２６】
前記１以上の予め定められた基準は、１以上のスナップショットに関連付けられている変更のタイプに基づく、請求項１４記載のシステム。
【請求項２７】
命令を記憶しているプロセッサ読み取り可能な記憶媒体であって、前記命令は、１以上のプロセッサにより実行されたときに、ファイルバージョン管理システムを維持するための方法を前記１以上のプロセッサに実行させ、前記方法は、
前記１以上のプロセッサにより、ファイルシステムの変更を判別するステップと、
前記１以上のプロセッサにより、前記判別に基づいて、前記ファイルシステムのスナップショットを作成するステップと、
前記１以上のプロセッサにより、前記スナップショットを、複数の先行スナップショットのうちの少なくとも１つの先行スナップショットにリンクするステップと、
前記１以上のプロセッサにより、１以上の予め定められた基準に基づいて、前記複数の先行スナップショットのうちの１以上のスナップショットを動的に破棄するステップと、
を含む、プロセッサ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、データ処理に関し、より詳細には、階層的データアーカイビングに関する。
【０００２】
（関連出願の相互参照）
本出願は、２０１３年１０月１１日に出願された米国仮特許出願第６１／８８９８６６号の優先権を主張する。
【背景技術】
【０００３】
このセクションに記載されるアプローチは、追求され得るアプローチであるが、必ずしも以前に着想又は追求されたアプローチではない。したがって、別途明示されない限り、このセクションに記載されるアプローチのいずれも、単にこのセクションに含まれるからといって、従来技術とみなされるものと考えられるべきではない。
【０００４】
従来のファイルシステムは、一般に、そのファイルの最新バージョンのみを保持する。ユーザが、同じファイルの複数のバージョンを保持したいと望む場合、ユーザは、それらを手動で記憶させ得る。不必要な中間バージョンのクリーンアップも、手動で実行される。従来のファイルシステムにファイルの複数のバージョンを保持することは、多くのリソースを必要とし得る。
【０００５】
ファイルシステム全体が、予め定められた時間にバックアップされるように、予め定められた時間基準に基づいてファイルシステムの複数のファイルバージョンを保持するための様々なソフトウェアソリューションが開発されている。このアプローチは、演算コストが高いものであり得る。
【０００６】
時間に基づいてではなく、ファイルが変更されるとファイルを記憶することを可能にするバージョン管理（versioning）ソリューションも存在する。そのようなバージョン管理ソリューションは、同じファイルの複数のバージョンの存在を同時に提供する。しかしながら、従来のバージョン管理ソリューションは、現バージョンに関連付けられているグローバルネームスペースの部分ではない別のリソース上に、ファイルの前のバージョンをアーカイブする。したがって、ユーザが、ファイルのより古いバージョンにアクセスする必要がある場合、ファイルシステム管理者は、自分のツール及びクレデンシャルを使用して、別のリソース上に配置されているアーカイブを手動で検索することがあり、これは、そのようなバージョン管理ソリューションの使用を面倒なものにする。
【発明の概要】
【０００７】
この発明の概要は、発明を実施するための形態において以下でさらに説明するコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この発明の概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を決定する際の助けとして使用されることを意図するものでもない。
【０００８】
本開示の一態様に従うと、ファイルバージョン管理システムを維持するための方法が提供される。本方法は、１以上のプロセッサにより、ファイルシステムに対する変更がなされたかを判別するステップを含み得る。本方法は、１以上のプロセッサにより、この判別に基づいて、ファイルシステムのスナップショットを実行し得る。さらに、本方法は、１以上のプロセッサにより、スナップショットを、複数の先行スナップショットのうちの少なくとも１つの先行スナップショットに仮想的にリンクするステップを含み得る。本方法はまた、１以上のプロセッサにより、１以上の予め定められた基準に基づいて、複数の先行スナップショットのうちの１以上のスナップショットを動的に破棄するステップを含み得る。
【０００９】
所定の実施形態において、ファイルシステムの変更は、既存ファイルに対する変更、新たなファイルの作成、既存ファイルの削除、及び、同様に、既存フォルダの変更、新たなフォルダの作成、既存フォルダの削除、又は、ファイルシステムに対する任意の他の変更を含み得る。様々な実施形態において、変更に基づいて作成される、ファイルシステムのスナップショットは、変更に関連付けられている特定の時点におけるファイルシステムの状態を含み得る。各スナップショットは、変更されたファイル若しくはフォルダ（又は、新たに作成されたファイル若しくはフォルダ）に加えて、ファイルシステム全体に関する情報を含み得る。ユーザが、特定のファイル又はフォルダの複数のバージョンを保存する必要がある場合、本開示は、そのようなファイルバージョン又はフォルダバージョンの自動的記憶を提供するので、ユーザは、そのようなファイルバージョン又はフォルダバージョンを、容易且つ効率的に検索することができる。
【００１０】
所定の実施形態において、ファイルシステムの新たなスナップショットが作成されるたびに、新たに作成されたスナップショットが、直前の先行スナップショットに仮想的にリンクされ得る。仮想的リンクは、参照、リンク、ファイルパス、又は、相互参照スナップショットに適した任意の他の情報を含み得る。所定の実施形態において、スナップショットは、時間順にリンクされる。所定の実施形態において、全てのスナップショットが記憶され、どのスナップショットも削除されない。さらに、所定の実施形態において、スナップショット及びファイルバージョン管理システム一般が、ユーザに提示されるファイルネームスペースに関連付けられる。
【００１１】
所定の実施形態において、本技術は、ガベージ収集プロセス又は「間引き（thinning  out）」プロセスを使用して、予め定められた間引き基準に基づいて価値がより低いとみなされた中間スナップショットを動的に破棄し得る。スナップショットの価値の評価は、タイミング情報に基づき得る。所定の実施形態において、全ての最近のスナップショット（例えば、最近の１時間以内に作成されたスナップショット）が保持され、時間期間（例えば、２４時間以上前であるが４８時間前より後）に応じた予め定められた数のより古いスナップショットのみが保持されるように、スナップショットは、時間に基づいて間引きされ得る。したがって、スナップショットは、より古くなるにつれて間引きされ得る。スナップショットが、システムによりもはや保持されない（間引かれた）場合、間引かれたスナップショットに続くスナップショットが、間引かれたスナップショットの直前のスナップショットに再リンクされ得る。
【００１２】
本開示のさらなる例示的な実施形態において、上記の方法ステップを実行するよう構成されたファイルバージョン管理システムが提供される。本開示のさらに別の例示的な実施形態において、上記の方法ステップは、命令を含むマシン読み取り可能な媒体に記憶される。この命令が、１以上のプロセッサにより実行されたときに、この命令は、上記の方法ステップを実行する。さらに別の例示的な実施形態において、ハードウェアシステム又はデバイスが、上記の方法ステップを実行するよう適合され得る。他の特徴、実施例、及び実施形態も、以下で説明される。
【図面の簡単な説明】
【００１３】
実施形態が、限定ではなく例として、添付の図面に示される。図面において、同様の参照符号は、類似する要素を示す。
【図１Ａ】ファイルシステム及び時間の経過に伴うその変更の高レベル図。
【図１Ｂ】ファイルシステム及び時間の経過に伴うその変更の高レベル図。
【図１Ｃ】ファイルシステム及び時間の経過に伴うその変更の高レベル図。
【図１Ｄ】ファイルシステム及び時間の経過に伴うその変更の高レベル図。
【図１Ｅ】ファイルシステム及び時間の経過に伴うその変更の高レベル図。
【図１Ｆ】ファイルシステム及び時間の経過に伴うその変更の高レベル図。
【図２】スナップショット及びファイルバージョンを記憶するための専用スナップショットディレクトリを含むファイルシステムの例示的な実施形態を示す図。
【図３】スナップショットディレクトリにおいて保持されるスナップショットのタイムスタンプを含む例示的なタイムラインを示す図。
【図４】本開示の実施形態を実施するのに適したネットワークアーキテクチャの高レベルブロック図。
【図５】例示的な実施形態に従った、ファイルバージョン管理システムを維持するための方法を示すプロセスフロー図。
【図６】例示的な電子的形態のコンピュータシステムのマシンを表すコンピューティングデバイスであって、このコンピュータシステム内で、本明細書に記載の方法のうちの任意の１以上の方法をマシンに実行させる命令のセットが実行され得る、コンピューティングデバイスの概略表現の図。
【発明を実施するための形態】
【００１４】
以下の詳細な説明は、この詳細な説明の一部を形成する添付の図面に対する参照を含む。図面は、例示的な実施形態に従った例示を示している。本明細書において「実施例」とも呼ばれるこのような例示的な実施形態は、当業者が本主題を実施できるようにするのに十分なほど詳細に記載されている。特許請求されるものの範囲から逸脱することなく、実施形態を組み合わせることもできるし、他の実施形態を利用することもできるし、あるいは、構造的変更、論理的変更、及び電子的変更を加えることもできる。以下の詳細な説明は、したがって、限定として解釈されるべきではなく、範囲は、請求項及びその均等の構成により定められる。本文書において、「ａ」及び「ａｎ」という用語が使用される。これらの用語は、特許文書では一般的であるように、１以外に、１以上を含む。本文書において、「又は、あるいは（or）」という用語は、非排他的な「又は、あるいは」を指すものとして使用される。したがって、「Ａ又はＢ」は、別途明示されない限り、「ＢではなくＡ」、「ＡではなくＢ」、及び「Ａ及びＢ」を含む。
【００１５】
本明細書で開示する実施形態の技術は、多様なテクノロジを用いて実装することができる。例えば、本明細書に記載の方法は、コンピュータシステム上で実行されるソフトウェアにより実装されてもよいし、マイクロプロセッサの組合せ若しくは他の特別に設計された特定用途向け集積回路（ＡＳＩＣ）の組合せ、プログラマブルロジックデバイス、又はこれらの様々な組合せを利用するハードウェアにより実装されてもよい。詳細には、本明細書に記載の方法は、ディスクドライブ等の記憶媒体又はコンピュータ読み取り可能な記憶媒体に存在する一連のコンピュータ実行可能な命令により実装することができる。本明細書で開示する方法は、コンピュータ（例えば、デスクトップコンピュータ、タブレットコンピュータ、ラップトップコンピュータ、及びサーバ）、ゲームコンソール、ハンドヘルドゲームデバイス、携帯電話機、スマートフォン、スマートテレビジョンシステム、ストレージアプライアンス等により実施され得ることに留意されたい。
【００１６】
本明細に記載の技術は、ファイルバージョン管理システム及びその動作に関する対応する方法に関する。本開示の様々な実施形態に従うと、ファイルバージョン管理システムは、ファイルシステム（若しくはファイルディレクトリ）又はそのアイテム（ファイル、フォルダ）に変更があるたびにファイルシステムのスナップショットを作成することを提供する。スナップショットは、特定の時点におけるファイルシステムの状態に関する情報、特定の変更に関する情報、及び、任意的に、（適用可能である場合には）１以上の他のスナップショットへのリンクを含み得る。所定の実施形態において、スナップショットは、ファイルシステム状態に関する一般情報に加えて、変更されたファイルシステムアイテムを含み得る。様々な実施形態に従うと、スナップショットは、ユーザの関心のあるバージョンを選択しやすいように、ユーザに表示され得る。この点に関して、スナップショットは、時系列形式でソートされて表示され得る。これは、例えば、スナップショットが、日付及び時間情報（タイムスタンプ）を有するファイル名に関連付けられる場合に、可能であり得る。
【００１７】
図１Ａ〜図１Ｆは、ファイルシステム１００及び時間の経過に伴うその変更の高レベル図を示している。詳細には、図１Ａは、第１の時間インスタンスにおけるファイルシステム１００を示しており、図１Ａにおいて、ファイルシステム１００は、１つのファイルフォルダＦ００を含むルートを含む。図１Ｂは、別のフォルダＦ０１をフォルダＦ００に追加することにより変更されたファイルシステム１００を示している。さらに、図１Ｃは、別のフォルダＦ１０をルートに追加することにより変更されたファイルシステム１００を示している。図１Ｄは、別のフォルダＦ１１をフォルダＦ１０に追加することにより変更されたファイルシステム１００を示している。図１Ｅは、フォルダＦ１１にファイルＡを記憶することにより変更されたファイルシステム１００を示している。図１Ｆは、ファイルＡを変更する（図１ＦではファイルＡ’と表記されている）ことにより変更されたファイルシステム１００を示している。様々な実施形態に従うと、図１Ａ〜図１Ｆに示されるように、ファイルシステム１００が変更されるたびに、スナップショットが作成される。これらのスナップショットは、互いに仮想的にリンクされ得る。例えば、ファイルＡ’（図１Ｆ）は、ファイルＡ（図１Ｅ）にリンクされ得、図１Ｅに示されるファイルシステムは、図１Ｄに示されるファイルシステムにリンクされ得る、等である。すなわち、スナップショットは、その直前の先行スナップショットにリンクされ得る。
【００１８】
本開示の実施形態に従うと、スナップショットは、ファイルシステム１００のルートに追加される仮想ディレクトリに記憶され得る。図２は、スナップショット及びファイルバージョンを記憶するための専用スナップショットディレクトリ２００を含むファイルシステム１００の例示的な実施形態を示している。所定の実施形態において、ディレクトリ２００は、仮想的であり、ハードディスク上の対応する構造を有し得ない。代わりに、ディレクトリ２００は、ランタイムソフトウェア構造体（construct）を指し得る。しかしながら、このディレクトリを構成する基礎となる機構（mechanics）は、エンドユーザに透過的である。なぜならば、このディレクトリは、「実在するもの（real）」に見え、ユーザがこのディレクトリに記憶されているスナップショットを検索するのを可能にするからである。
【００１９】
ディレクトリ２００は、複数のフォルダを含み得、スナップショットは、以下で説明するように、予め定められた基準に従って、ディレクトリ２００のフォルダにおいてソートされ得る。例えば、ディレクトリ２００は、２つのメインフォルダを含み得る。それらのうちの一方が、「最近（Recent）」と称され、それらのうちの他方が、「日付（Date）」と称される。「最近」フォルダは、現在時間から予め定められた時間期間以内に作成されたスナップショットを記憶することができる。例えば、「最近」フォルダは、動作の最近の１時間以内の、最大で１秒当たり１個のスナップショットを記憶することができる。「最近」フォルダは、「最近」フォルダに記憶されるスナップショットの数に対する制限を有し得る。「日付」フォルダは、最近の１時間の間に作成される、「最近」フォルダに記憶されるスナップショットを含め、全てのスナップショットを保持することができる。
【００２０】
さらに、これらのフォルダに記憶されるスナップショットは、日付及び／又は時間ごとにツリーに分割され得る。図２に示される例示的な実施形態において、ツリーは、年、月、日、時、分、秒、ミリ秒、マイクロ秒、ナノ秒等に対応するフォルダを含み得る。したがって、月用の１２個のフォルダ、各年につき日レベルの３６５個のフォルダ、時レベルで作成される８７６０個のフォルダ等が存在し得る。さらに、スナップショットの名前は、スナップショットが作成された日付及び／又は時間を含み得る。例えば、スナップショット名は、次のように形成され得る：「ｙｙｙｙ−ｍｍ１−ｄｄ＿ｈｈ−ｍｍ２−ｓｓ」。ここで、「ｙｙｙｙ」は、４桁の年の数字を表し、「ｍｍ１」は、２桁の月の数字を表し、「ｄｄ」は、２桁の日の数字を表し、「ｈｈ」は、２桁の時の数字を表し、「ｍｍ２」は、２桁の分の数字を表し、「ｓｓ」は、２桁の秒の数字を表す。したがって、スナップショットは、対応するフォルダに選択的に記憶され得る。本明細書に記載の階層的ツリー構造は、複数のスナップショットの間での容易な検索及びナビゲーションを可能にし、それにより、ユーザが所望のファイルバージョンを見つけ出すのに便利なものになることが、当業者には明らかであろう。上述したように、スナップショットディレクトリ２００は、提示の目的のための、エンドユーザによりアクセスされると動的に作成され得るランタイム仮想構造体を指す。
【００２１】
様々な実施形態に従うと、スナップショットディレクトリ２００は、「ｓｎａｐｓｈｏｔｓ．ｔｘｔ」及び「ｒｓｎａｐｓｈｏｔｓ．ｔｘｔ」といった２つの実用ファイル（utility  file）を含み得る。これらのファイルも仮想的であり得、これらのファイルは、ディレクトリ２００に記憶されている全てのスナップショットの一覧用に使用される。所定の実施形態において、これらのファイルは、大型ディレクトリにおける情報を解析するのを容易にするテキストファイルであるが、他のフォーマットも可能である。
【００２２】
「ｓｎａｐｓｈｏｔｓ．ｔｘｔ」ファイル及び「ｒｓｎａｐｓｈｏｔｓ．ｔｘｔ」ファイルの例示的な構造が、以下の表１に提供される：
【表１】
2016539401.tif 000003
【００２３】
この表に示されるように、これらのファイルは、日付、スナップショット識別子（ＩＤ）、ルートハッシュ、及び動作の列を有するデータベースを含み得る。ファイルシステム１００に対する全ての変更が、これらのファイルに記憶される対応する文字列（string）で反映され得る。「日付」フィールドは、日付及び時間の両方を含み得る。「スナップショットＩＤ」は、変更の一意な識別番号を含み得る。「ルートハッシュ」は、ファイルシステム１００のバージョンに関連付けられ得、ＳＨＡ暗号化アルゴリズムのうちの１つ等といった任意の適切なハッシュアルゴリズムにより生成され得る。「動作」列は、スナップショットを作成させた変更情報を含み得、例えば、書き込み動作、適正設定動作（set  rights  operation）、スプライシング（splicing）動作等を指し得る。
【００２４】
スナップショット識別子は、ファイル変更が生じたときと実質的に同時に生成され得る。例示的な実施形態において、スナップショットを作成するプロセスは、クライアントから変更リクエストを受信することで開始し得る。最後のスナップショット識別子が、最後のルートｉノードからフェッチされ得る。新たなスナップショット識別子が、最後のスナップショット識別子をインクリメントすることにより算出され得る。さらに、変更が実行され得、新たなスナップショット識別子が、変更により影響が及ぼされるｉノードに含められ得る。変更が、既存ｉノードの新たなバージョンをもたらす場合、新たなバージョンが、古いバージョンにリンクされ得、古いバージョンが、新たなバージョンにリンクされ得る（すなわち、双方向にリンクされたリストが作成され得る）。新たなルートｉノードが、開始ルートｉノードを複製し、新たなスナップショット識別子を新たなルートｉノードに挿入し、新たなルートｉノードと前のルートｉノードとを双方向にリンクすることにより、作成され得る。変更プロセスは、変更動作が完了したことをクライアントに通知することで終了する。
【００２５】
所定の実施形態において、新たなスナップショットが作成されるたびに、新たな構造体が生成され、ここで、そのルートが、その直前の先行バージョンを指し示す。そのルートは、識別子（例えば、ＳＨＡアルゴリズムがそのファイルバージョンのコンテンツに対して実行された結果として生じるハッシュ値）により識別され得る。したがって、「ｓｎａｐｓｈｏｔｓ．ｔｘｔ」ファイルが、対応する識別子／ハッシュにより識別される、スナップショットのルートを横断する（traverse）ことにより、生成され得る。
【００２６】
「ｓｎａｐｓｈｏｔｓ．ｔｘｔ」に記憶されるスナップショットは、昇順にソートされ得るが、「ｒｓｎａｐｓｈｏｔｓ．ｔｘｔ」ファイルにおいては、降順にソートされ得る。逆の順序でスナップショットをリストする２つの異なるファイルを有する理由は、リストを最初にソートする必要なく、異なる解析のより高いパフォーマンスを提供することである。例えば、ユーザが、最新バージョンのみに関心がある場合、「ｓｎａｐｓｈｏｔｓ．ｔｘｔ」は、リストの先頭にある最新バージョンにアクセスすることを可能にする。
【００２７】
本開示の様々な実施形態において、スナップショットディレクトリ２００は、ファイルシステム１００の全てのバージョンを保持するよう意図される。このために、ファイルシステムアイテムに対する全ての変更が追跡されて記憶されるように、継続的データ保護（ＣＤＰ）原理が適用され得る。
【００２８】
本開示の様々な実施形態において、いくつかのスナップショットが、「間引き」と呼ばれるプロセスにより破棄され得る。スナップショットの間引きは、ファイルの削除と等価ではない。なぜならば、ファイルのあるバージョンのみが削除されるからである。
【００２９】
「間引き」プロセスに従って、ファイルシステム１００の特定のバージョン（すなわち、スナップショット）が破棄された場合、ファイルシステム１００の後続バージョンが、その直前の先行バージョンに再リンクされる。例えば、スナップショット１、２、３、４、５、及び６が存在し、スナップショット６がスナップショット５に続き、スナップショット５がスナップショット４に続く、等である場合、スナップショット５が破棄された後、スナップショット６が、スナップショット４に続くようになる。
【００３０】
さらに、本開示の様々な実施形態に従うと、ファイルシステム１００のスナップショットは、タイミング情報に基づいて破棄され得る。詳細には、スナップショットは、過去の様々な時間期間に従って時系列で分類され得る。図３は、スナップショットディレクトリ２００においてスナップショットがどのように保持されるかを示す例示的なタイムライン３００を示している。図３に示されるように、タイムライン３００は、３つの時間期間に分割されている。最後の変更動作（例えば、ファイルの書き込み）の直前の第１の時間期間３０２は、現在時間から５分間の時間期間を指し得る。第２の時間期間３０４は、５分前から６０分前までの期間を構成し得、第３の時間期間３０６は、残りの時間を含み得る。
【００３１】
所定の実施例において、各時間期間は、限られた数Ｎのスナップショットを保持し得る。例えば、第１の時間期間３０２に関して、全ての作成されたスナップショット（例えば、変更のたびに１つのスナップショット）が記憶され得る。さらに、第２の時間期間３０４に関して、予め定められた限られた数（例えば、Ｎ＝４）のスナップショットが保持され得るが、第２の時間期間３０４に関するスナップショットは、タイムラインにわたってむらなく分散され得、最も早いスナップショット（すなわち、この時間期間の右側境界に最も近いスナップショット）を含み得る。最後に、第３の時間期間３０６に関して、別の予め定められた限られた数（例えば、Ｎ＝１）のスナップショットが保持され得る。上記は、例示的な実施形態に過ぎず、スナップショットがどのように保持されるか、及び中間スナップショットがどのように破棄されるかに、任意の他の適切なルール又は基準が適用され得ることが、当業者であれば理解されよう。
【００３２】
一般に、どのスナップショットが保持されるべきであるか、及びどのスナップショットが破棄されるべきであるかを決定するために、様々な基準が使用され得る。所定の実施形態において、これは、最後の動作以降に経過した時間に依拠し得るが、特定の動作に基づく基準や動作の回数に基づく基準等といった他の基準が使用されてもよい。上述した時間期間の数は、４以上であってもよいし、２以下であってもよいことも明らかであろう。
【００３３】
例示的な実施形態において、最新のスナップショットは、常に保持されるべきである。したがって、１つのスナップショットのみを保持する期間では、最後のスナップショットが保持されるべきであり、２以上のスナップショットが保持される期間では、これは、最新のスナップショットであるべきであり、他のスナップショットは、その時間期間にわたってむらなく分散されるべきである。特定の時間期間において保持されるべき予め定められた数のスナップショットよりも少ないスナップショットが存在する場合、全てのスナップショットが保持される。全てのスナップショットが、一緒にまとめられる場合、分散は、それに応じて変わるべきである。
【００３４】
様々な実施形態において、スナップショットの破棄は、常に時間情報に依拠するわけではなく、代わりに、変更されたファイルのコンテンツを解析して、特定のスナップショットが保持されるべきか否かに関する決定を行ってもよい。例えば、コンテンツスニッフィング（content  sniffing）を利用して、ファイル自体を調べ、そのコンテンツに基づいて決定を行ってもよい。決定を行うのに十分なデータがまだ存在しない場合には、データを書き込んだアプリケーションの記憶されているデータとリモートデータとの間の同期後に生成されたスナップショットを保持することが有用であり得る。
【００３５】
上記をまとめると、「間引き」プロセスは、１以上の予め定められたポリシーに従って、どのスナップショットがスナップショットディレクトリ２００に保持されるべきであるかを決定することができる。ポリシーは、最後のファイルシステム変更以降に経過した時間、変更タイプ、ファイルシステムに対する変更、動作タイプ、コンテンツ、継続期間、粒度等に基づき得る。
【００３６】
図４は、本開示の実施形態を実施するのに適したネットワークアーキテクチャ４００の高レベルブロック図を示している。詳細には、ネットワークアーキテクチャ４００は、グローバルネームスペースの全て又は一部を管理するために配備され得、例えば、クライアント４２０によりアクセスされ得るネットワークリソース４１０（例えば、データオブジェクトへのアクセスを提供するストレージアプライアンス）のリングを含み得る。図示される実施例において、３つのクライアント４２０が存在し、３つのクライアント４２０の各々は、このリングに関連付けてられているファイルシステムをブラウズすることができる。さらに、各クライアント４２０は、他のクライアント４２０によりなされた変更に関連付けられているスナップショットを確認することができ、これは、エンドユーザのグループが、同じファイルシステムを使用し、アーキテクチャ４００のユーザのうちのいずれかにより作成されたファイルバージョンへのアクセスを可能にするグローバルファイルバージョン管理システムの使用を活用することを可能にする。
【００３７】
アーキテクチャ４００は、本明細書に記載の技術を実装するよう構成されるバージョン管理モジュール（図示せず）を含み得る。バージョン管理モジュールは、仮想コンポーネント（例えば、ソフトウェアコード）及び／又はハードウェアコンポーネント（例えば、ロジック、プロセッサ、メモリ）を含み得る。
【００３８】
図５は、例示的な実施形態に従った、ファイルバージョン管理システムを維持するための方法５００を示すプロセスフロー図である。方法５００は、ハードウェア（例えば、意思決定ロジック、専用ロジック、プログラマブルロジック、及びマイクロコード）、ソフトウェア（汎用コンピュータシステム又は専用マシン上で実行されるソフトウェア等）、又はこれらの組合せを含み得る処理ロジックにより実行され得る。
【００３９】
図５に示されるように、方法５００は、動作５１０において、バージョン管理モジュールが、ファイルシステム１００をモニタリングし、ファイルシステム１００の変更を判別することで開始し得る。変更は、書き込み動作、ファイルの変更、ファイル又はフォルダの作成又は削除、ファイル又はフォルダの属性の変更等を含み得る。
【００４０】
動作５１０において変更が判別されると、動作５２０において、バージョン管理モジュールは、ファイルシステムのスナップショットを作成する。動作５３０において、複数の（例えば、少なくとも２つの）スナップショットが、一緒にリンクされる。例えば、新たに作成されたスナップショットとその直前の先行スナップショットとが、双方向に一緒にリンクされ得る。
【００４１】
動作５４０において、バージョン管理モジュールは、ファイルシステム１００の最後の変更の時間に関連付けられているタイミング情報等といった１以上の予め定められた基準に基づいて、１以上の以前に作成されたスナップショットを動的に破棄することにより、「間引き」プロセスを実施する。動作５４０は、方法５００の他の動作とは非同期に実行され得る。「間引き」プロセスの後、間引かれたスナップショットに続くスナップショットと間引かれたスナップショットの直前のスナップショットとが、双方向に再リンクされ得る。
【００４２】
図６は、例示的な電子的形態のコンピュータシステム６００のマシンを表すコンピューティングデバイスであって、コンピュータシステム６００内で、本明細書に記載の方法のうちの任意の１以上の方法をマシンに実行させる命令のセットが実行され得る、コンピューティングデバイスの概略表現を示している。様々な例示的な実施形態において、マシンは、スタンドアロンデバイスとして動作する、又は、他のマシンに接続され得る（例えば、ネットワーク接続され得る）。ネットワーク化された配備において、マシンは、サーバ−クライアントネットワーク環境では、サーバ又はクライアントマシンとして動作することができる、又は、ピアツーピアネットワーク環境（又は、分散ネットワーク環境）では、ピアマシンとして動作することができる。マシンは、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、携帯電話機、ポータブル音楽プレーヤ（例えば、ＭＰ３プレーヤ等のポータブルハードドライブオーディオデバイス）、ゲームパッド、ポータブルゲームコンソール、車両内コンピュータ、スマートホームコンピュータ、又は、マシンにより取られるべきアクションを指定する命令のセット（シーケンシャル又はその他）を実行することができる任意のマシンとすることができる。さらに、１つのマシンのみが図示されているが、「マシン」という用語は、本明細書に記載の方法のうちの任意の１以上を実行するための命令のセット（又は、複数のセット）を個々に又は一緒に実行するマシンのあらゆる集合体を含むものと解釈されるべきである。
【００４３】
例示的なコンピュータシステム６００は、１つのプロセッサ又は複数のプロセッサ６０５（例えば、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、又はこれららの両方）と、バス６２０を介して互いと通信するメインメモリ６１０及びスタティックメモリ６１５と、を含む。コンピュータシステム６００は、ビデオディスプレイユニット６２５（例えば、液晶ディスプレイ）をさらに含み得る。コンピュータシステム６００はまた、英数字入力デバイス（例えば、キーボード）、カーソル制御デバイス（例えば、マウス）、マイクロフォン、デジタルカメラ、ビデオカメラ等といった少なくとも１つの入力デバイス６３０を含み得る。コンピュータシステム６００はまた、ディスクドライブユニット６３５、信号生成デバイス６４０（例えば、スピーカ）、及びネットワークインタフェースデバイス６４５を含み得る。
【００４４】
ディスクドライブユニット６３５は、本明細書に記載の方法又は機能のうちの任意の１以上を具現化する又は本明細書に記載の方法又は機能のうちの任意の１以上により利用される命令の１以上のセット及びデータ構造（例えば、命令６５５）を記憶するコンピュータ読み取り可能な媒体６５０を含む。命令６５５はまた、コンピュータシステム６００により実行されている間には、メインメモリ６１０及び／又はプロセッサ６０５内に、全て又は少なくとも一部が存在し得る。メインメモリ６１０及びプロセッサ６０５はまた、マシン読み取り可能な媒体を構成する。
【００４５】
命令６５５は、さらに、複数の周知の転送プロトコル（例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ＣＡＮ、Ｓｅｒｉａｌ、及びＭｏｄｂｕｓ）のうちのいずれか１つを利用して、ネットワークインタフェースデバイス６４５を介し、ネットワーク６６０を介して、送信又は受信され得る。例えば、ネットワーク６６０は、次のうちの１以上を含み得る：インターネット、ローカルイントラネット、ＰＡＮ（パーソナルエリアネットワーク）、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）、ＭＡＮ（メトロポリタンエリアネットワーク）、仮想プライベートネットワーク（ＶＰＮ）、ストレージエリアネットワーク（ＳＡＮ）、フレームリレー接続、アドバンストインテリジェントネットワーク（ＡＩＮ）接続、同期光ネットワーク（ＳＯＮＥＴ）接続、デジタルＴ１、Ｔ３、Ｅ１、又はＥ３回線、デジタルデータサービス（ＤＤＳ）接続、ＤＳＬ（デジタル加入者回線）接続、Ｅｔｈｅｒｎｅｔ（登録商標）接続、ＩＳＤＮ（統合サービスデジタル通信網）回線、ケーブルモデム、ＡＴＭ（非同期転送モード）接続、ＦＤＤＩ（ファイバ分散データインタフェース）接続、ＣＤＤＩ（銅線分散データインタフェース）接続。さらに、通信はまた、ＧＰＲＳ（汎用パケット無線サービス）、ＧＳＭ（登録商標）、ＣＤＭＡ（符号分割多重接続）若しくはＴＤＭＡ（時分割多重接続）、セルラ電話網、全地球測位システム（ＧＰＳ）、ＣＤＰＤ（セルラデジタルパケットデータ）、ＲＩＭ（登録商標）（リサーチインモーションリミテッド）デュプレックスページングネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線ネットワーク、又はＩＥＥＥ８０２．１１ベースの無線周波数ネットワークを含む多様な無線ネットワークのうちの任意のものへのリンクを含み得る。
【００４６】
コンピュータ読み取り可能な媒体６５０が、例示的な実施形態では、１つの媒体として図示されているが、「コンピュータ読み取り可能な媒体」という用語は、命令の１以上のセットを記憶する１つの媒体若しくは複数の媒体（例えば、中央データベース若しくは分散データベース、並びに／又は関連キャッシュ及びサーバ）を含むものと解釈されるべきである。「コンピュータ読み取り可能な媒体」という用語はまた、マシンにより実行される命令のセットであって、マシンに、本出願の方法のうちの任意の１以上の方法を実行させる命令のセットを記憶、符号化、又は搬送することができる任意の媒体、又は、そのような命令のセットにより利用されるデータ構造若しくはそのような命令のセットに関連付けられるデータ構造を記憶、符号化、又は搬送することができる任意の媒体を含むものと解釈されるべきである。したがって、「コンピュータ読み取り可能な媒体」という用語は、次のものに限定されないが、ソリッドステートメモリ、光媒体、及び磁気媒体を含むものと解釈されるべきである。そのような媒体はまた、ハードディスク、フロッピディスク、フラッシュメモリカード、デジタルビデオディスク（ＤＶＤ）、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）等を含み得るが、これらに限定されるものではない。
【００４７】
本明細書に記載の例示的な実施形態は、コンピュータにインストールされるコンピュータ実行可能な命令（例えば、ソフトウェア）を含む動作環境、ハードウェア、又はソフトウェアとハードウェアとの組合せにより実装することができる。コンピュータ実行可能な命令は、コンピュータプログラミング言語で記述されてもよいし、ファームウェアロジックで具現化されてもよい。認識されている標準に従うプログラミング言語で記述される場合、そのような命令は、多様なハードウェアプラットフォーム上で、多様なオペレーティングシステムへのインタフェースのために実行され得る。本方法を実装するためのコンピュータソフトウェアプログラムは、例えば、ハイパーテキストマークアップ言語（ＨＴＭＬ）、動的ＨＴＭＬ、拡張マークアップ言語（ＸＭＬ）、拡張スタイルシート言語（ＸＳＬ）、文書スタイル意味指定言語（ＤＳＳＳＬ）、カスケーディングスタイルシート（ＣＳＳ）、同期マルチメディア統合言語（ＳＭＩＬ）、ワイヤレスマークアップ言語（ＷＭＬ）、Ｊａｖａ（登録商標）、Ｊｉｎｉ（登録商標）、Ｃ、Ｐｙｔｈｏｎ、Ｇｏ、Ｃ＋＋、Ｐｅｒｌ、ＵＮＩＸ（登録商標）  Ｓｈｅｌｌ、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）  Ｓｃｒｉｐｔ、仮想現実マークアップ言語（ＶＲＭＬ）、ＣｏｌｄＦｕｓｉｏｎ（登録商標）、若しくは、他のコンパイラ、アセンブラ、インタープリタ、又は、他のコンピュータ言語若しくはプラットフォーム等といった任意の数の適切なプログラミング言語で記述することができるが、これらに限定されるものではない。
【００４８】
このように、階層的データアーカイビングのための方法が開示されている。特定の例示的な実施形態を参照して実施形態について説明したが、本出願のより広範な主旨及び範囲から逸脱することなく、これらの例示的な実施形態に様々な変更及び変化を加えることができることが明らかであろう。したがって、本明細書及び図面は、限定ではなく例示と考えられるべきである。
【図１Ａ】
2016539401.tif 000004
【図１Ｂ】
2016539401.tif 000005
【図１Ｃ】
2016539401.tif 000006
【図１Ｄ】
2016539401.tif 000007
【図１Ｅ】
2016539401.tif 000008
【図１Ｆ】
2016539401.tif 000009
【図２】
2016539401.tif 000010
【図３】
2016539401.tif 000011
【図４】
2016539401.tif 000012
【図５】
2016539401.tif 000013
【図６】
2016539401.tif 000014
【手続補正書】
【提出日】平成28年6月10日(2016.6.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ファイルバージョン管理のための方法であって、
１以上のプロセッサが、ファイルシステムの変更を判別するステップと、
前記１以上のプロセッサが、前記判別に基づいて、前記ファイルシステムのスナップショットを作成するステップと、
前記１以上のプロセッサが、前記スナップショットを、複数の先行スナップショットのうちの少なくとも１つの先行スナップショットにリンクするステップと、
前記１以上のプロセッサが、１以上の予め定められた基準に基づいて、前記複数の先行スナップショットのうちの１以上のスナップショットを動的に破棄するステップと、
を含む方法。
【請求項２】
前記ファイルシステムの前記変更は、新たなファイルの作成、既存ファイルのコンテンツの変更、既存ファイルの削除、既存ファイルの１以上の属性の変更、新たなフォルダの作成、既存フォルダのコンテンツの変更、既存フォルダの削除、及び既存フォルダの１以上の属性の変更のうちの１つを含む、請求項１記載の方法。
【請求項３】
前記スナップショットは、変更されたファイル、作成されたファイル、変更されたフォルダ、及び作成されたフォルダのうちの１以上を含む、請求項１記載の方法。
【請求項４】
前記スナップショットは、前記スナップショットの識別子、前記変更に関連付けられている日付及び時間、前記変更に関する情報、前記変更に関連付けられている時点における前記ファイルシステムの状態に関する情報、及び、前記複数の先行スナップショットのうちの少なくとも１つの先行スナップショットへの少なくとも１つのリンクを含む、請求項１記載の方法。
【請求項５】
前記１以上のプロセッサが、前記スナップショットを説明する情報、前記複数の先行スナップショット、及び、前記スナップショットと前記複数の先行スナップショットのうちの少なくとも１つの先行スナップショットとの間のリンクを、データベースに記憶するステップ
をさらに含む、請求項１記載の方法。
【請求項６】
前記１以上のプロセッサが、前記ファイルシステムのルートに追加された仮想フォルダを介して、前記スナップショットにアクセスするステップ
をさらに含み、
前記仮想フォルダは、前記複数の先行スナップショットへのアクセスを提供する、請求項５記載の方法。
【請求項７】
前記仮想フォルダにおける前記複数の先行スナップショットは、日付、又は、日付及び時間によりラベリングされたサブフォルダのツリーに分割され、前記日付及び前記時間は、前記スナップショットを作成した日付及び時間である、請求項６記載の方法。
【請求項８】
前記１以上のプロセッサが、前記１以上のスナップショットを動的に破棄しながら、削除されたスナップショットの後続スナップショットを、前記削除されたスナップショットの直前の先行スナップショットにリンクするステップ
をさらに含む、請求項１記載の方法。
【請求項９】
前記１以上の予め定められた基準は、前記１以上のスナップショットを作成した時点に基づく、請求項１記載の方法。
【請求項１０】
前記１以上のプロセッサが、予め定められた時点から、前記ファイルシステムの最後の変更の時点までに経過した時間を、２以上の時間期間に分割するステップと、
前記１以上のプロセッサが、前記２以上の時間期間の各特定の時間期間に、前記ファイルシステムに保持されている、前記特定の時間期間内に作成された１以上のスナップショットを割り当てるステップと、
をさらに含む、請求項１記載の方法。
【請求項１１】
前記２以上の時間期間のうち、前記最後の変更の前記時点のより近くに位置する時間期間は、前記ファイルシステムに保持されている、より多くのスナップショットを含む、請求項１０記載の方法。
【請求項１２】
前記１以上の予め定められた基準は、１以上のスナップショットに関連付けられているコンテンツに基づく、請求項１記載の方法。
【請求項１３】
前記１以上の予め定められた基準は、１以上のスナップショットに関連付けられている変更のタイプに基づく、請求項１記載の方法。
【請求項１４】
ファイルバージョン管理のためのシステムであって、
１以上のプロセッサと、
前記１以上のプロセッサに通信可能に接続されているメモリであって、前記メモリは、命令を記憶しており、前記命令は、前記１以上のプロセッサにより実行されたときに、
前記１以上のプロセッサが、ファイルシステムの変更を判別するステップと、
前記１以上のプロセッサが、前記判別に基づいて、前記ファイルシステムのスナップショットを作成するステップと、
前記１以上のプロセッサが、前記スナップショットを、複数の先行スナップショットのうちの少なくとも１つの先行スナップショットにリンクするステップと、
前記１以上のプロセッサが、１以上の予め定められた基準に基づいて、前記複数の先行スナップショットのうちの１以上のスナップショットを動的に破棄するステップと、
を含む方法を前記１以上のプロセッサに実行させる、メモリと、
を備えたシステム。
【請求項１５】
前記ファイルシステムの前記変更は、新たなファイルの作成、既存ファイルのコンテンツの変更、既存ファイルの削除、既存ファイルの１以上の属性の変更、新たなフォルダの作成、既存フォルダのコンテンツの変更、既存フォルダの削除、及び既存フォルダの１以上の属性の変更のうちの１つを含む、請求項１４記載のシステム。
【請求項１６】
前記スナップショットは、変更されたファイル、作成されたファイル、変更されたフォルダ、及び作成されたフォルダのうちの１以上を含む、請求項１４記載のシステム。
【請求項１７】
前記スナップショットは、前記スナップショットの識別子、前記変更に関連付けられている日付及び時間、前記変更に関する情報、前記変更に関連付けられている時点における前記ファイルシステムの状態に関する情報、及び、前記複数の先行スナップショットのうちの少なくとも１つの先行スナップショットへの少なくとも１つのリンクを含む、請求項１４記載のシステム。
【請求項１８】
前記方法は、
前記１以上のプロセッサが、前記スナップショットを説明する情報、前記複数の先行スナップショット、及び、前記スナップショットと前記複数の先行スナップショットのうちの少なくとも１つの先行スナップショットとの間のリンクを、データベースに記憶するステップ
をさらに含む、請求項１４記載のシステム。
【請求項１９】
前記方法は、
前記１以上のプロセッサが、前記ファイルシステムのルートに追加された仮想フォルダを介して、前記スナップショットにアクセスするステップ
をさらに含み、
前記仮想フォルダは、前記複数の先行スナップショットへのアクセスを提供する、請求項１８記載のシステム。
【請求項２０】
前記仮想フォルダにおける前記複数の先行スナップショットは、日付、又は、日付及び時間によりラベリングされたサブフォルダのツリーに分割され、前記日付及び前記時間は、前記スナップショットを作成した日付及び時間である、請求項１９記載のシステム。
【請求項２１】
前記方法は、
前記１以上のプロセッサが、前記１以上のスナップショットを動的に破棄しながら、削除されたスナップショットの後続スナップショットを、前記削除されたスナップショットの直前の先行スナップショットにリンクするステップ
をさらに含む、請求項１４記載のシステム。
【請求項２２】
前記１以上の予め定められた基準は、前記１以上のスナップショットを作成した時点に基づく、請求項１４記載のシステム。
【請求項２３】
前記方法は、
前記１以上のプロセッサが、予め定められた時点から、前記ファイルシステムの最後の変更の時点までに経過した時間を、２以上の時間期間に分割するステップと、
前記１以上のプロセッサが、前記２以上の時間期間の各特定の時間期間に、前記ファイルシステムに保持されている、前記特定の時間期間内に作成された１以上のスナップショットを割り当てるステップと、
をさらに含む、請求項１４記載のシステム。
【請求項２４】
前記２以上の時間期間のうち、前記最後の変更の前記時点のより近くに位置する時間期間は、前記ファイルシステムに保持されている、より多くのスナップショットを含む、請求項２３記載のシステム。
【請求項２５】
前記１以上の予め定められた基準は、１以上のスナップショットに関連付けられているコンテンツに基づく、請求項１４記載のシステム。
【請求項２６】
前記１以上の予め定められた基準は、１以上のスナップショットに関連付けられている変更のタイプに基づく、請求項１４記載のシステム。
【請求項２７】
命令を記憶しているプロセッサ読み取り可能な記憶媒体であって、前記命令は、１以上のプロセッサにより実行されたときに、ファイルバージョン管理のための方法を前記１以上のプロセッサに実行させ、前記方法は、
前記１以上のプロセッサが、ファイルシステムの変更を判別するステップと、
前記１以上のプロセッサが、前記判別に基づいて、前記ファイルシステムのスナップショットを作成するステップと、
前記１以上のプロセッサが、前記スナップショットを、複数の先行スナップショットのうちの少なくとも１つの先行スナップショットにリンクするステップと、
前記１以上のプロセッサが、１以上の予め定められた基準に基づいて、前記複数の先行スナップショットのうちの１以上のスナップショットを動的に破棄するステップと、
を含む、プロセッサ読み取り可能な記憶媒体。
【国際調査報告】
2016539401.tif 000015