JP4285679B2 - 差分転送方法、プログラム及びシステム - Google Patents
差分転送方法、プログラム及びシステム Download PDFInfo
- Publication number
- JP4285679B2 JP4285679B2 JP2002242901A JP2002242901A JP4285679B2 JP 4285679 B2 JP4285679 B2 JP 4285679B2 JP 2002242901 A JP2002242901 A JP 2002242901A JP 2002242901 A JP2002242901 A JP 2002242901A JP 4285679 B2 JP4285679 B2 JP 4285679B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- file
- old
- old file
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、新旧2つのファイルから抽出した差分データを転送して転送先の旧ファイルから新ファイルを展開する差分転送方法、プログラム及びシステムに関し、特に転送先での差分展開中にトラブルにより処理が中断したときに再転送を行う差分転送方法、プログラム及びシステムに関する。
【0002】
【従来の技術】
従来、プログラムやデータなどのファイルを新しいファイルへと更新する場合、新しいファイルを全部置き換える方法と、ファイルの更新情報として差分データのみを与えて更新する方法がある。差分データによる更新方法は、ファイルを全部置き換える方法よりも少ない情報量で更新を行うことが可能であるという利点があり、更新情報を旧ファイルの存在する場所へ転送する場合に情報量が小さいほどコスト面で有利となる。
【0003】
従来の差分転送の基本システムとしては、図56のものがある。例えば無線回線を介した差分転送システムの場合、送信装置200は基地局に相当し、受信装置210は携帯電話となる。
【0004】
送信装置200には、旧ファイル蓄積部202、新ファイル蓄積部204、差分抽出部206、データ圧縮部208が設けられる。また受信装置210には、データ解凍部212、差分展開部214、旧ファイル蓄積部216及び新ファイル蓄積部218が設けられる。
【0005】
送信装置200は、差分抽出部206において、旧ファイルと新ファイルの差分データを抽出した後に、データ圧縮部208で圧縮して送信している。一般に新旧2つのファイルとの差分を抽出することで差分データを約1/10〜1/100程度に小さくすることができ、更に圧縮により1/2〜1/3程度に送信する差分データのデータ量を少なくすることができる。
【0006】
受信装置210は、データ解凍部212で圧縮された情報を解凍して差分データを復元し、差分展開部214により差分データに基づき旧ファイルのデータから新ファイルのデータを展開する。
【0007】
【発明が解決しようとする課題】
しかしながら、このような差分転送システムで差分転送中に受信装置としての携帯電話の電源パワーが落ちて処理が中断されると、次に再度転送する場合、受信側の旧ファイルと新ファイルを蓄積保存する不揮発メモリの形態により次の問題がある。
【0008】
まず図46のように、受信装置に設けた旧ファイル蓄積部216と新ファイル蓄積部218に新旧両ファイルを記憶できる十分な容量の不揮発メモリを設けた形態にあっては、電源パワーの低下で差分転送が中断しても旧ファイルが失われることないため、中断後の受信装置210からの再転送要求に対し送信装置200は、新旧2つのファイルの参照により最初から差分データを抽出して再転送する。
【0009】
しかし、差分転送を最初から行っているため、途中まで送っていたデータは無駄となり、時間がかかる問題がある。特に無線回線を使用した携帯電話システムのよう帯域の狭い通信路を使用している場合、最初からの再転送はユーザに対し通信コストの増加を強いることになる。
【0010】
また図57のように、受信装置210に設けることのできる不揮発メモリの容量が少なく、旧ファイルと新ファイルの蓄積を兼用する新旧ファイル兼用格納部220を不揮発メモリに設ける形態がある。
【0011】
このように受信装置で新旧ファイル兼用の不揮発メモリとした場合には、受信解凍した差分データにより一定サイズの新ファイルデータを展開する毎に、参照済みの旧ファイルデータ部分に新ファイルデータを上書きして蓄積する。
【0012】
このため受信側での電源パワーの低下で差分転送が中断すると、新ファイルデータにより上書きされた分の旧ファイルデータが失われ、差分転送を再度実行することはできない。このため再転送要求に対しては、最初から新ファイルのみを圧縮して再送することになり、差分転送に対し単なる圧縮転送となるため、データ量があまり削減できず、更なる通信コストの増加につながる。
【0013】
また従来の差分データ抽出は、新旧2つのファイルを先頭から比較し、一致しない部分を更新された部分として図58(A)〜(D)の複写、置換、挿入及び削除のカテゴリに分類し、差分データとして
(1)更新のカテゴリ(種別)を示すコード
(2)置換または挿入のカテゴリによる更新後の値
を記述する方法がある(特開平4-163626号)。
【0014】
しかしながら、このような従来の差分データ抽出方法では、図59(A)(B)のように、旧ファイルのデータBが新ファイル上で移動している場合(移動)、図59(C)のように旧ファイルのデータBが新ファイル上に2回連続して複写されている場合(複数複写)、更に図59(D)のように旧ファイルのデータBに近似したデータB'が新ファイル上で2回連続して複写されている場合(複数置換)については、図58の複写、置換、挿入又は削除のいずれのカテゴリにも該当しないため、新旧ファイルで位置のずれているデータB又はデータB'は全て不一致部分と判定され、置換のカテゴリのみで書き出してしまい、差分データ量が増加する問題がある。
【0015】
本発明は、旧ファイルのデータが新ファイル上で移動しているような特殊パターンも効率良く差分抽出すると共に、転送中断に対し中断個所からの差分転送を再開して伝送負担を軽減する差分転送方法、プログラム及びシステムを提供することを目的とする。
【0016】
【課題を解決するための手段】
図1は本発明の原理説明図である。
【0017】
本発明は、送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法を対象とする。
【0018】
このような差分転送方法において本発明は、送信側で、旧ファイルと新ファイルの差分データを抽出する際に採取した旧ファイルの参照情報を差分データと共に受信側に転送し、受信側では、旧ファイルと差分データから新ファイルを展開する際に、差分展開の進捗の状況で変化する前記旧ファイルの参照情報及び新ファイルの更新情報を、新ファイルのデータと共に蓄積することを特徴とする。
【0019】
また本発明の差分転送方法は、送信側或いは受信側のトラブルで差分転送が途中で途絶えた場合に、受信側では、転送が途絶えるまで、旧ファイルと差分データから新ファイル展開する際に蓄積していた旧ファイルの参照情報及び新ファイルの更新情報を送信側に送って途中からの差分展開を依頼し、送信側では、受信側から送られた旧ファイルの参照情報及び新ファイルの更新情報を基に、再送するための旧ファイル及び新ファイルのスタートポイントを設定した後、差分転送を再開行することを特徴とする。
【0020】
ここで旧ファイルの参照情報を、旧ファイルの分割データ毎に参照される参照回数及び最後に参照された旧ファイルの最終参照アドレスとし、新ファイルの更新情報を、新ファイル分割データの更新回数及び最終に更新された新ファイル最終更新アドレスとする。
【0021】
このように本発明は、送信側で作られた差分データの旧ファイル参照情報をもとに、受信側での旧ファイルの参照状況及び新ファイルの更新状況を不揮発メモリに格納し、どこまで差分展開が実行されたのかを逐次把握しておくことで、トラブルにより転送が中断しても、前回の転送途中から差分転送を再開可能とする。
【0022】
更に本発明による差分転送方法の具体的な形態として、図1(A)のように、旧ファイルと新ファイルを一定サイズの分割データD1〜Dnに分けて蓄積するファイル蓄積ステップと、
旧ファイルと新ファイルを読出し、図1(B)のように、処理対象としている新ファイル分割データD1',D2',D3',D4'・・・に対し同一位置および前後に隣接する位置の少なくとも3つの旧ファイル分割データD1,D2,D3,D4,・・・・を参照することにより差分データSD1,SD2,SD3,SD4,・・・・を抽出する差分抽出ステップと、
差分データを抽出する際に旧ファイルを参照した参照回数N1〜Nnを旧ファイル分割データD1,D2,D3,D4,・・・・毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備える。
【0023】
また受信側は、
旧ファイルを一定メモリサイズの分割データD1〜Dnに分けて蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を確保する蓄積ステップと、
差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する旧ファイル参照回数N1〜Nnを減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報N1〜Nn、旧ファイル最終参照アドレスA1〜An、新ファイル分割データの更新回数N1'〜Nm'及び新ファイル最終更新アドレスA1'〜Am'を蓄積する新ファイル蓄積ステップと、
を備えたことを特徴とする。
【0024】
また本発明の差分転送方法は中断後の再転送実行のための具体的な形態として次の手順を備える。
【0025】
まず受信側は、差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報N1〜Nn、旧ファイル最終参照アドレスAi及び新ファイル最終更新アドレスAiを読み出して送信側に再転送を要求する再転送要求ステップを備える。
【0026】
また送信側は、受信側からの再転送要求で送られてきた減算が行われている旧ファイル参照情報N1〜Nnにより中断前の旧ファイル参照情報(初期情報)を更新し、旧ファイル最終参照アドレスAiにより旧ファイル再開位置(制御ポインタのスタート位置)を設定し、新ファイル最終更新アドレスA1'〜Am'により新ファイル再開位置(制御ポインタのスタート位置)を設定した後に、差分転送を再開する再転送ステップとを備える。
【0027】
本発明の差分転送方法において、再転送が行われた場合、受信側は、送信側から再転送された差分データに基づく旧ファイルの参照で再転送による最初の新ファイル分割データを展開した場合、中断前の最後に蓄積された新ファイル分割データ更新回数と新ファイル最終更新アドレスに基づく蓄積再開位置に再送により最初に展開された新ファイル分割データを蓄積する蓄積再開ステップを備える。
【0028】
更に本発明の差分転送方法は、受信側に外部に送信する差分データを圧縮する圧縮ステップを備え、送信側は受信した圧縮差分データを解凍する解凍ステップを備える。
【0029】
ここで差分転送方法における送信側の差分データ生成ステップは、新ファイルに旧ファイルデータの複数複写、異なる位置への移動等の特殊パターンに対応するため、次の手順を備える。
【0030】
即ち、送信側の差分データ生成ステップは、
新旧2つのファイル分割データに対して分割データ先頭から所定データ単位に順次比較する比較ステップと、
順次比較でデータ一致を判定した場合、旧ファイルの位置とデータ長を表した転送情報を出力する転送情報生成ステップと、
順次比較でデータ不一致を判定した場合、旧ファイルの不一致と判定されたデータ位置から少なくとも前後の隣接した旧ファイル分割データの位置となる両方向に探索を行って新ファイルのデータに一致する部分を探索する探索ステップと、
探索ステップで一致部分を探索できた場合は、旧ファイル上での一致部分までの移動情報を出力する移動情報生成ステップと、
探索ステップで一致部分を探索できなかった場合は、一致部分を探索できるまでの旧ファイルの不一致部分のデータ長を表した転送置換情報に旧データと新データとの差分データを付加して出力する置換情報生成ステップと、
を備えたことを特徴とする。
【0031】
このように本発明は、新旧ファイルの順次比較で不一致となった場合には、旧ファイルを前後両方向に探索して一度参照した旧ファイル中のデータを再度参照することができ、従来の置換、挿入及び削除というカテゴリを超えて、それ以外の特殊パターンにも対応でき、冗長な差分データの生成を低減し、差分データのサイズを小さくする。
【0032】
本発明の差分転送方法の手順は、送信側と受信側のメモリの形態により決まる。このメモリ形態は、次表の条件1〜4に分類される。
【0033】
【表1】
【0034】
(条件1での差分転送)
本発明は、送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法であり、
送信側に、条件1のメモリ形態として、
旧ファイルを格納する第1不揮発メモリ、
新ファイルを格納する第2不揮発メモリ、
旧ファイルのデータを一括して一時蓄積する第1揮発メモリ、
新ファイルのデータを分割データ単位で順次読み出し一時蓄積する第2揮発メモリ、
を少なくとも設けた場合、送信側は、
旧ファイルと新ファイルを一定サイズの分割データに分けて第1及び第2不揮発メモリに別々に蓄積するファイル蓄積ステップと、
旧ファイルを一括して読み出して第1揮発メモリに一時蓄積すると共に新ファイルを分割データ単位に順次読出して順次第2揮発メモリに一時蓄積し、第2揮発メモリに一時蓄積している処理対象の新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備える。
【0035】
また受信側に、条件1のメモリ形態として、
旧ファイルを格納する第3不揮発メモリ、
新ファイルを格納する第4不揮発メモリ、
旧ファイルのデータを一括して一時蓄積する第3揮発メモリを、
少なくとも設けた場合、受信側は、
旧ファイルを一定メモリサイズの分割データに分けて第3不揮発に蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を第4不揮発メモリに確保する蓄積ステップと、
差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、第3揮発メモリに一時蓄積している同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する旧ファイル参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを第4不揮発メモリに蓄積する新ファイル蓄積ステップと、
を備えたことを特徴とする。
【0036】
また転送中断後の再転送を実行するため、受信側は、更に、差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを第4不揮発メモリから読み出して送信側に再転送を要求する再転送要求ステップを備える。
【0037】
また送信側は、更に、受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより第1揮発メモリにおける旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより第2揮発メモリにおける新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップとを備える。
【0038】
(条件2での差分転送)
本発明は、送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法であり、
送信側に、条件2のメモリ形態として、
旧ファイルを格納する第1不揮発メモリ、
新ファイルを格納する第2不揮発メモリ、
旧ファイルのデータを分割データ単位で順次読み出して一時蓄積する第1揮発メモリ、
新ファイルのデータを分割データ単位で順次読み出し一時蓄積する第2揮発メモリを、
少なくとも設けた場合、送信側は、
旧ファイルと新ファイルを一定サイズの分割データに分けて第1及び第2不揮発メモリに別々に蓄積するファイル蓄積ステップと、
旧ファイルを分割データ単位に順次読み出して前記第1揮発メモリに一時蓄積すると共に新ファイルを分割データ単位に順次読み出して第2揮発メモリに一時蓄積し、第2揮発メモリに一時蓄積している処理対象の新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備える。
【0039】
また受信側に、条件2のメモリ形態として、
旧ファイルを格納する第3不揮発メモリ、
新ファイルを格納する第4不揮発メモリ、
旧ファイルのデータを分割データ単位で順次読み出して一時蓄積する少なくとも4分割データ分の容量を備えた小容量の第3揮発メモリ、
を少なくとも設けた場合、受信側は、
旧ファイルを一定メモリサイズの分割データに分けて第3不揮発メモリに蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を第4不揮発メモリに確保する蓄積ステップと、
差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、第3揮発メモリに一時蓄積している同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを第4不揮発メモリに蓄積する新ファイル蓄積ステップと、
を備える。
【0040】
ここで受信側の旧ファイル揮発メモリの書換え制御として、受信側の差分展開ステップは、展開中に旧ファイル参照回数がゼロとなった旧ファイル分割データを第3揮発メモリから消去し、新たな旧ファイル分割データを第3不揮発メモリから読出して一時蓄積する。
【0041】
このため旧ファイルのデータが新ファイル上の左右の異なる位置に移動して存在するような特殊パターンの場合でも、参照に必要な分割データのみを残すように第3揮発メモリの書き換えを行うことで、メモリリソースの節約を図る。
【0042】
また中断の再転送を実行するため、受信側は、差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを第4不揮発メモリから読み出して送信側に再転送を要求する再転送要求ステップを備える。
【0043】
これに対応して送信側は、受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより第1揮発メモリにおける旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより第2揮発メモリにおける新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップとを備える。
【0044】
(条件3での差分転送)
本発明は、送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法であって、
送信側の条件3のメモリ形態として、
ファイルを格納する第1不揮発メモリ、
新ファイルを格納する第2不揮発メモリ、
旧ファイルのデータを一括して一時蓄積する第1揮発メモリ、
新ファイルのデータを分割データ単位で順次読み出し一時蓄積する第2揮発メモリを少なくとも設けた場合(条件1と同じ)、送信側は、
旧ファイルと新ファイルを一定サイズの分割データに分けて第1及び第2不揮発メモリに別々に蓄積するファイル蓄積ステップと、
旧ファイルを一括して読み出して第1揮発メモリに一時蓄積すると共に新ファイルを分割データ単位に順次読出して第2揮発メモリに一時蓄積し、第2揮発メモリに一時蓄積している処理対象の新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備える。これは条件1の手順と同じである。
【0045】
また受信側に条件3のメモリ形態として、
旧ファイルを格納すると共に新ファイルを旧ファイルの上書きにより格納する新旧ファイル兼用の第3不揮発メモリ、
旧ファイルのデータを一括して一時蓄積する第3揮発メモリ、
を少なくとも設けた場合、受信側は、
旧ファイルを一定メモリサイズの分割データに分けて第3不揮発メモリに蓄積する蓄積ステップと、
差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、第3揮発メモリに一時蓄積している同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する旧ファイル参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データを第3不揮発メモリの参照済みの旧ファイル分割データに上書きして蓄積すると共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを前記第3不揮発メモリに蓄積する新ファイル蓄積ステップと、
を備える。
【0046】
また転送中断後の再転送を実行するため、受信側は、差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを第3不揮発メモリから読み出して送信側に再転送を要求する再転送要求ステップを備える。
【0047】
これに対応して送信側は、受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより第1揮発メモリにおける旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより第2揮発メモリにおける新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップとを備える。
【0048】
(条件4での差分転送)
本発明は、送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法であって、
送信側に条件4のメモリ形態として、
旧ファイルを格納する第1不揮発メモリ、
新ファイルを格納する第2不揮発メモリ、
旧ファイルのデータを分割データ単位で順次読み出して一時蓄積する第1揮発メモリ、
新ファイルのデータを分割データ単位で順次読み出し一時蓄積する第2揮発メモリ、
を少なくとも設けた場合(条件2と同じ)、送信側は、
旧ファイルと新ファイルを一定サイズの分割データに分けて前記不揮発メモリに別々に蓄積するファイル蓄積ステップと、
旧ファイルを分割データ単位に順次読み出して第1揮発メモリに一時蓄積すると共に新ファイルを分割データ単位に順次読み出して第2揮発メモリに一時蓄積し、第2揮発メモリに一時蓄積している処理対象の新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備える。
【0049】
また受信側に条件4のメモリ形態として、
旧ファイルを格納すると共に新ファイルを旧ファイルの上書きにより格納する新旧ファイル兼用の第3不揮発メモリ(条件3と同じ)、
旧ファイルのデータを一括して一時蓄積する少なくとも4分割データ分の容量を備えた第3揮発メモリ(条件2と同じ)
を少なくとも設けた場合、受信側は、
旧ファイルを一定メモリサイズの分割データに分けて第3不揮発に蓄積する蓄積ステップと、
差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、第3揮発メモリに一時蓄積している同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する旧ファイル参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データを第3不揮発メモリの参照済みの旧ファイル分割データに上書きして蓄積すると共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを前記第3不揮発メモリに蓄積する新ファイル蓄積ステップと、
を備える。
【0050】
ここで条件2の場合と同様に、受信側の旧ファイル揮発メモリの書換え制御のため、受信側の差分展開ステップは、展開中に旧ファイル参照回数がゼロとなった旧ファイル分割データを第3揮発メモリから消去し、新たな旧ファイル分割データを第3不揮発メモリから読出して一時蓄積する。
【0051】
また転送中断後の再転送を実行するため、受信側は、差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを第3不揮発メモリから読み出して送信側に再転送を要求する再転送要求ステップを備える。
【0052】
これに対応して送信側は、受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより第1揮発メモリにおける旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより前記第2揮発メモリにおける新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップとを備える。
【0053】
(差分送信方法)
本発明は、新旧2つのファイルから差分データを生成して送信する方法として、
旧ファイルと新ファイルを一定サイズの分割データに分けて蓄積するファイル蓄積ステップと、
旧ファイルと新ファイルを読出し、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
転送先での処理中断後の再転送要求により送られてきた中断までの進捗状態を示す旧ファイル参照情報で旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップと、
を備えたことを特徴とする。
【0054】
(差分受信方法)
また本発明は、送信側から、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより生成された差分データと、差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を受信し、予め蓄積している旧ファイルから受信した差分データ及び旧ファイル参照情報に基づいて新ファイルを展開する方法であって、
旧ファイルを一定メモリサイズの分割データに分けて蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を確保する蓄積ステップと、
差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを蓄積する新ファイル蓄積ステップと、
差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを読み出して送信側に再転送を要求して中断時点からの差分データ及び旧ファイル参照情報を再転送させる再転送要求ステップと、
を備えたことを特徴とする。
【0055】
(送信側プログラム)
本発明は、差分転送のための送信側のプログラムを提供する。このプログラムは、新旧2つのファイルから差分データを生成して送信するコンピュータに、
旧ファイルと新ファイルを一定サイズの分割データに分けて蓄積するファイル蓄積ステップと、
旧ファイルと新ファイルを読出し、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
転送先での処理中断後の再転送要求により送られてきた中断までの進捗状態を示す旧ファイル参照情報で前記旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップと、
を実行させることを特徴とする。
【0056】
(受信側プログラム)
また本発明は、差分転送のための受信側のプログラムを提供する。このプログラムは、送信側から、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより生成された差分データと、差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を受信し、予め蓄積している旧ファイルから受信した差分データ及び旧ファイル参照情報に基づいて新ファイルを展開するコンピュータに、
旧ファイルを一定メモリサイズの分割データに分けて蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を確保する蓄積ステップと、
差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを蓄積する新ファイル蓄積ステップと、
差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを読み出して送信側に再転送を要求して中断時点からの差分データ及び旧ファイル参照情報を再転送させる再転送要求ステップと、
を実行させることを特徴とする。
【0057】
(システム)
本発明は、送信装置で新旧2つのファイルから差分データを生成して送信し、受信装置で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送システムであって、
送信装置は、
旧ファイルと新ファイルを一定サイズの分割データに分けて蓄積するファイル蓄積部と、
旧ファイルと新ファイルを読出し、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成部と、
差分データ及び旧ファイル参照情報を外部に送信する送信部と、
を備え、
受信装置は、
旧ファイルを一定メモリサイズの分割データに分けて蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を確保する蓄積部と、
差分データ及び旧ファイル参照情報を受信する受信部と、
処理対象としている新ファイル分割データの差分データに対し、同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開部と、
新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する参照回数を減算して更新する参照情報更新部と、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを蓄積する新ファイル蓄積部と、
を備えたことを特徴とする。
【0058】
差分転送システムの受信装置は、更に、差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを読み出して送信側に再転送を要求する再転送要求部を備える。
【0059】
また送信装置は、受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより新ファイル再開位置を設定した後に、差分転送を再開する再転送部とを備える。
【0060】
(区画単位の差分データの抽出と復元)
本発明の別の形態にあっては、条件4のメモリ形態を対象とする。即ち、受信装置側のメモリ容量の制約に対応して新ファイルを同一サイズの複数個の区画に分け、各区画毎に旧ファイルと新ファイルの差分データを抽出し、受信装置側では、新ファイルを差分データと旧ファイルから各区画毎に復元して旧ファイルの該当部分に上書きする。
【0061】
この場合、区画毎に復元された新ファイルは、旧ファイルの該当部分に上書きされるため、上書きが済んだ部分の旧ファイルは失われ、もし、上書きが済んだ旧ファイルの中に、後続する差分データにより参照したい旧ファイルの一致データ列が存在していても、この参照ができず、参照できる旧ファイルの範囲が制限されることで、差分データのサイズが増加してしまう。
【0062】
そこで本発明にあっては、受信装置側で復元した新ファイルの区画で上書きする際に、もし後続する差分データで参照する場合には、その旧ファイルの該当部分を退避し、上書き後にも参照可能とする。
【0063】
このため本発明にあっては、送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法に於いて、
送信側装置により、新ファイルを同一サイズの複数個の区画に分け、各区画毎に旧ファイルと新ファイルの差分データを抽出する際に、区画中のデータ列と一致するデータ列を旧ファイルの探索で発見した場合、発見された位置が対象区画の先頭位置に相当する旧ファイルの位置より前方か後方かを判断し、前方と判断した場合は、発見位置と一致長を前方の対象区画の差分データに記述し、後方と判断した場合は、発見位置と一致長を前記対象区画の差分データに記述する。
【0064】
これに対応して受信側装置により、旧ファィルと差分データから各区画毎に新ファイルを復元して旧ファイルの該当部分に上書きする際に、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、参照されるデータ列を退避させた後に上書きを行い、退避データに対し後続する区画の差分データによる旧ファイルの該当部分を参照させることを特徴とする。
【0065】
これにより受信側装置が携帯電話のように利用できるワークメモリが少なく通信速度も低速な環境であっても、一定サイズの区画単位で差分データと旧ファイルから新データを復元できる。
【0066】
また新ファイルの上書きで旧ファイルが失われても、後続する差分データで旧ファイルのデータ列を参照する場合には、上書きに先立って旧ファイルの参照部分を退避しておくことで、受信側装置で新ファイルと旧ファイルを個別に保存している場合と同等な新ファイルのデータ列に一致する旧ファイルのデータ列の参照による復元ができ、これによって送信側装置で抽出する差分データのサイズを小さくし、通信速度が低速であっても、効率良く新ファイルへの更新ができる。
【0067】
ここで送信側装置により、新ファイルの対象区画中のデータ列と一致するデータ列の探索を、旧ファイルの全範囲について行い、受信側装置により、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、旧ファイルの参照されるデータ列の部分のみを退避させる。
【0068】
また送信側装置により、新ファイルの対象区画中のデータ列と一致するデータ列の探索を、対象区画の先頭位置に相当する旧ファイルの位置よりもnバイト前方から旧ファイルの最後尾までの範囲について行い、受信側装置により、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、次の区画との境界位置から前方nバイト分に相当する旧ファイルのデータ列を退避させる。
【0069】
このように前方に対する一致検索範囲をnバイトに固定することで、受信側装置で使用する退避用のメモリ容量が一義的に決まり、旧ファイルの退避データが多くなりすぎて参照不可となる事態を未然に防止し、受信側装置のメモリ容量に適合した新ファイルの復元を保証する。
【0070】
受信側装置により、各区画毎に復元した新ファイルを旧ファイルの該当部分に上書きする直前に、旧ファイルの該当部分のデータ列を退避させる。これに対し受信側装置により、各区画毎に新ファイルの復元を開始する前に、旧ファイルの該当部分のデータ列を退避させても良い。
【0071】
受信側装置により、新ファイルの区画中のデータ列と一致するデータ列を旧ファイルの探索で複数発見した場合、最も後方の一致データを選択して発見位置と一致長を差分データに記述する。これによって受信側装置での可能な限り旧ファイルのデータ列を退避して参照する必要性を最小限に抑え、ワークメモリ上の退避データ領域を低減する。
【0072】
本発明は、区画単位に処理する差分抽出プログラムを提供するものであり、
新旧2つのファイルから差分データを生成して送信する送信側のコンピュータに、
新ファイルを同一サイズの複数個の区画に分けるステップと、
各区画毎に旧ファイルと新ファイルの差分データを抽出する際に、区画中のデータ列と一致するデータ列を旧ファイルの探索で発見するステップと、
一致データ列を発見した場合、発見された位置が対象区画の先頭位置に相当する旧ファイルの位置より前方か後方かを判断するステップと、
前方と判断した場合は、発見位置と一致長を前方の対象区画の差分データに記述し、後方と判断した場合は、発見位置と一致長を前記対象区画の差分データに記述するステップと、
を実行させることを特徴とする。
【0073】
本発明は、区画単位に処理する復元プログラムを提供するものであり、蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開するコンピュータに、
旧ファィルと差分データから各区画毎に新ファイルを復元するステップと、
復元した各区画の新ファイルを復旧ファイルの該当部分に上書きする際に、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、参照される前記データ列を退避させた後に上書きを行い、退避データに対し後続する区画の差分データによる旧ファイルの該当部分を参照させるステップと、
を実行させることを特徴とする。
【0074】
本発明は、送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送システムであって、
新ファイルを同一サイズの複数個の区画に分け、各区画毎に旧ファイルと新ファイルの差分データをする際に、前記区画中のデータ列と一致するデータ列を旧ファイルの探索で発見した場合、発見された位置が対象区画の先頭位置に相当する旧ファイルの位置より前方か後方かを判断し、前方と判断した場合は、発見位置と一致長を前方の対象区画の差分データに記述し、後方と判断した場合は、発見位置と一致長を対象区画の差分データに記述する送信側装置と、
旧ファィルと差分データから各区画毎に新ファイルを復元して部分に上書きする際に、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、参照されるデータ列を退避させた後に上書きを行い、退避データに対し後続する区画の差分データによる旧ファイルの該当部分を参照させる受信側装置と、
を備えたことを特徴とする。
【0075】
【発明の実施の形態】
<目次>
1.条件1のメモリ形態による差分転送
2.移動を伴う差分データ抽出処理
3.条件1に対応した差分転送動作
4.条件2のメモリ形態による差分転送
5.条件3のメモリ形態による差分転送
6.条件4のメモリ形態による差分転送
7.区画単位の差分転送
本発明による差分転送の実施形態は、受信側におけるメモリ容量の制約から、前記表1に示している4つの条件1〜条件4に分けて説明する。
【0076】
(1.条件1のメモリ形態による差分転送)
図2は条件1のメモリ形態に対応した本発明による差分転送の第1実施形態のシステムブロック図である。
【0077】
ここで条件1のメモリ形態とは、差分転送システムにおける受信側のメモリ形態が次の条件の場合である。
(A)格納用不揮発メモリは新旧別ファイルとする。
(B)ワーク用揮発メモリは旧ファイルが一括蓄積される。
【0078】
そこで、図2のシステム構成のブロック図について条件1のメモリ形態に対応した構成を説明すると次のようになる。
【0079】
図2の実施形態は伝送路として無線回線を使用した携帯電話システムを例にとっており、送信側は基地局10であり、受信側は携帯電話12である。送信側となる基地局10には、ハードディスクドライブHDDなどの不揮発メモリを使用した旧ファイル格納部14−1、同じく不揮発メモリを使用した新ファイル格納部16−1、揮発メモリを使用したワークメモリ18、同じく揮発メモリを使用したワークメモリ20、差分抽出部22、データ圧縮部26、送信部30が設けられる。
【0080】
一方、受信側の携帯電話12には、受信部34、データ解凍部36、差分展開部44、DRAM等の揮発メモリを用いたワークメモリ42、SRAMなどの不揮発メモリを使用した旧ファイル格納部48−1、及び同じく不揮発メモリを用いた新ファイル格納部50−1を設けている。
【0081】
即ち、図2の条件1に対応した受信側となる携帯機器12にあっては、不揮発メモリを用いて旧ファイル格納部48−1と新ファイル格納部50−1が別々に設けられており、且つ揮発メモリを用いたワークメモリ42には旧ファイル格納部48−1より読み出された旧ファイルが一括蓄積できるメモリ形態を持っている。
【0082】
図3は、図2の条件1のメモリ形態に対応した実施形態の機能構成のブロック図である。
【0083】
図3において、送信側の基地局10には、不揮発メモリに格納された旧ファイル14と新ファイル16が存在する。旧ファイル14は揮発性のワークメモリ18に一括して読み出される。
【0084】
ここで旧ファイル14は所定のデータサイズごとにブロック分けされた分割データD1〜Dnで構成されており、ワークメモリ18に一括して分割データD1〜Dnとして読み出されて、一時的に蓄積される。
【0085】
この旧ファイル14における分割データD1〜Dnの分割サイズは、例えばワークメモリ18として使用している揮発メモリ、例えばDRAMのメモリブロックサイズである例えば256キロバイト単位に分割される。
【0086】
新ファイル16も旧ファイル14と同様、例えば256キロバイト単位に分割された分割データD1'〜Dmで構成されており、揮発メモリを用いたワークメモリ20に対し順次読み出されて、一時的に蓄積される。
【0087】
差分抽出部22は、ワークメモリ18の旧ファイル分割データD1〜Dnを参照しながら、ワークメモリ20に順次蓄積する新ファイル分割データD1'〜Dmのそれぞれとの差分を抽出して、差分データを揮発性のワークメモリ24に出力する。なおワークメモリ24は、オフラインで送信する場合は不揮発メモリを使用する。
【0088】
データ圧縮部26はワークメモリ24に一時的に蓄積された差分データを圧縮し、無線回線となる伝送路32を介して携帯電話12側に送信する。
【0089】
更に、基地局10には参照情報処理部28が設けられる。この参照情報処理部28は、差分抽出部22において旧ファイル14の各分割データD1〜Dnが何回参照されたかをカウントアップした参照回数N1,N2,・・・Nnを蓄積する参照情報メモリと、参照情報メモリに格納した分割データごとの参照回数でなる参照情報を送る参照情報送信部から構成されている。
【0090】
受信側となる携帯電話12には、まず不揮発メモリを用いた旧ファイル格納部48−1により旧ファイル48が蓄積されており、旧ファイル48は送信側の旧ファイル14と同様、例えばワークメモリ42のメモリブロックサイズに対応した256キロバイト単位に、分割データD1〜Dnに分けられている。
【0091】
新ファイル格納部50−1により新ファイル50を別ファイルとして格納することができ、新ファイル50も同じく256キロバイトサイズの分割データD1'〜Dmとして蓄積することができる。
【0092】
また受信側となる携帯電話12には、受信した圧縮データを解凍するデータ解凍部36、旧ファイル48のデータを一括して一時蓄積する揮発メモリを用いたワークメモリ42、解凍した差分データを一時蓄積する揮発メモリを用いたワークメモリ38、ワークメモリ42の旧データを参照しながらワークメモリ38の差分データを解読して新データを再生する差分展開部44、展開した差分データを一時蓄積する揮発メモリを用いたワークメモリ46を備える。
【0093】
なお差分データをオフラインで受信する場合は、解凍された差分データを一時蓄積するワークメモリ38は不揮発メモリを使用する。
【0094】
これに加え、受信側の携帯電話12には参照情報処理部40と更新情報処理部45が設けられる。参照情報処理部40は、送信側となる基地局10から分割データごとの旧ファイル参照回数N1〜Nnを表わした旧ファイル参照情報を受け取る参照情報受信部と、受信した旧ファイル参照回数N1〜Nnを蓄積し、差分展開部44に送られてくる差分データと旧ファイルの分割データから新ファイルのデータを差分展開する際のワークメモリ42の旧ファイルの分割データを参照するごとに受信した参照回数をカウントダウンして記憶し、且つ差分展開で参照している現在の旧ファイル上での最終参照アドレスA1〜Anも随時蓄積する参照情報メモリと、新ファイルの分割データが差分展開を終了した時点で、そのときの旧ファイルの分割データごとの参照回数N1〜Nn及び最終参照アドレスA1〜Anを新ファイルの分割データと共に新ファイル格納部50−1に参照情報52として格納する参照情報格納部で構成される。
【0095】
また更新情報処理部45は、新ファイルの分割データ分の差分展開が終了した時にカウントアップする分割更新回数Nm及び新ファイル最終更新アドレスAmを、新ファイル格納部50−1に更新情報54として格納する更新情報格納部から構成される。
【0096】
また受信側の携帯電話12にあっては、差分転送中に電源切れなどによって転送中断となった場合には、電源復旧後に転送中断前に正常に新ファイル格納部50−1に格納されている旧ファイルの参照情報52と新ファイルの更新情報54を読み出して送信側の基地局10に送ることで、中断したところから再度の差分転送を行うことができる。
【0097】
(2.移動を伴う差分データ抽出処理)
ここで本発明の差分転送における差分データの抽出処理の詳細を説明すると次のようになる。この実施形態にあっては、旧ファイル14及び新ファイル16として、例えば32ビットコード(4バイトコード)で記述されたプログラムファイルを扱うものとする。
【0098】
図3の基地局10に設けている差分抽出部22は、旧ファイル14及び新ファイル16から新旧2つの分割データに対し、ファイル先頭から所定データ単位、この実施形態にあっては1バイト単位にデータを順次比較する。
【0099】
このバイト単位のデータ比較で新旧ファイルデータの一致を判定した場合、一致している旧ファイルの位置とデータ長を表した転送コードを生成して出力する。差分抽出部22で差分データとして生成される転送コードは図4(A)のフォーマット構成を持つ。
【0100】
図4(A)の転送コード100は2バイトのコードであり、1バイト目の先頭3ビットに転送コード100であることを示すコード番号「010」を格納しており、残り5ビット及び2バイト目の8ビットを使用して転送データ長を格納している。
【0101】
差分抽出部22は、バイト単位に比較している新旧2つのファイルのデータ不一致を判定した場合、旧ファイルの不一致と判定されたデータ位置から前後両方向の隣接する分割データの範囲に亘り、新ファイルのデータに一致する部分を探索する。
【0102】
この場合、旧ファイルの前後方向の探索は、1バイト単位とすると処理に時間がかかることから、例えば4バイトおきに旧ファイルのデータと比較する。また旧ファイルの4バイトおきの探索で一致するバイト部分が見つかった場合には、次のいずれかの条件を満足する2段階の一致判定により一致部分が探索できたと判定する。
(1)旧ファイルの新ファイル1バイトデータに一致する部分に続く所定バイト数n以上、例えばn=16バイト以上、連続して一致する部分を探索した場合に、データが一致したと判定する。
(2)旧ファイルの新ファイルの1バイトデータに一致する部分に続く所定データ数x、例えばx=64バイト中に分散している他の所定バイト数y、例えばy=32バイト以上、一致部分を探索した場合に、データが一致したと判定する。
【0103】
このように旧ファイルを不一致位置から前後方向に探索して1バイト部分の一致が得られた後に、前記(1)または(2)のいずれかの条件で2段階に一致部分を判定する理由は、新旧ファイルの差分データ抽出処理において一致判断を確実にするためと同時に、差分データ抽出処理において可能な限り置換処理の機会を増加させることで差分データの冗長性を低減してデータ量を少なくするためである。
【0104】
差分抽出部22は、旧ファイルの不一致部分からの前後方向の探索で一致部分を探索できた場合に、旧ファイル上での不一致部分から一致部分までの移動情報を示す移動コードを生成して出力する。この移動コードは、旧ファイル上の前方を負方向とし後方を正方向とする移動方向と、旧ファイル上での不一致部分から一致部分までのデータ長を表わす移動長を持つ。
【0105】
具体的には、図4(D)の負移動コード106または図4(E)の正移動コード108を生成して出力する。負移動コード106及び正移動コード108は、図4(A)の転送コード100と同様、2バイトのコード情報であり、1バイト目の先頭2ビットにつき、負移動コード106はコード番号「10」を格納しており、その後ろに旧ファイル上の移動長を示す1バイト目の残りの6ビット及び2バイト目の8ビットを使用して格納する。
【0106】
図4(E)の正移動コード108も同様に、1バイト目の先頭2ビットに正制御コードであることを示すコード番号「11」を格納し、これに続いて移動長を1バイト目の残りの6ビット及び2バイト目の8ビットを使用して格納している。
【0107】
再び図3を参照するに、差分抽出部22は一致部分を探索できなかった場合には、一致部分を探索できるまでの旧ファイルの不一致部分のデータ長を表した図4(B)の転送置換コード102に、不一致部分における新データを付加して出力する。
【0108】
この転送置換コード102は、2バイトの制御コードであり、1バイト目の先頭2ビットに転送置換コードであることを示すコード番号「00」を格納し、これに続く1バイトの残りの6ビット及び2バイト目の8ビットを使用して置換データ長及び転送長データを格納している。
【0109】
本発明の差分抽出部22にあっては、差分データを生成する際に、それまでの差分データ抽出処理で同じ差の値が生成されているか否かチェックし、もし同じ差の値が生成されている場合には、新たに転送置換コード102を生成せず、既存の差分パターンの存在を示す差分データとして図4(C)の転送増加コード104を生成して出力する。
【0110】
この転送増加コード104は2バイトの制御コードであり、1バイト目の先頭3ビットに転送増加コードであることを示すコード番号「011」を格納し、これに続く1バイト目の残り5ビット及び2バイト目の8ビットを使用して転送データ長を格納している。
【0111】
即ち本発明の差分抽出部22にあっては、差の値が過去に存在していない最初の値であった場合には図4(B)の置換コード102を発生し、これに新データを付加して出力するが、差の値が過去に同じ値を持つ2回目以降の場合には、図4(C)の転送増加コード104を生成して出力し、この場合に新データを付加する必要がなく、このため同じ差分パターンが複数出る場合には1回目だけの新データの付加で済み、それ以降は必要ないことから、これによって差分データの冗長性を低減し、差分データ量を少なくできる。
【0112】
図5は、図3の差分抽出部22の概略フローチャートである。図5において、ステップS1で新旧ファイルを読み込んで例えば1バイト単位に比較する。新旧ファイルの1バイトデータの一致がステップS2で判別されると、ステップS3で転送情報(転送コード)の生成処理を行う。
【0113】
ステップS2でデータ一致が得られなかった場合、即ち不一致の場合には、ステップS5で新ファイルの1バイトデータに対応する旧ファイルの不一致部分の前後を探索して一致部分を探索する。
【0114】
この一致部分は、旧ファイルにおける前後探索で1の一致が得られた後、一致した1バイトデータに続くn=16バイト以上の連続一致、あるいは1バイトに続くx=64バイト中の32バイト以上の一致をもってデータ一致と判断している。
【0115】
ステップS6で一致部分探索結果につき一致部分が得られれば、ステップS7で移動情報(正移動コード又は負移動コード)を生成する。一致部分がなかった場合には、ステップS8で置換情報生成処理を行う。
【0116】
この置換情報生成処理は、差の値が最初に得られた値である場合には図4(B)の転送置換コード102を発生し、これに新データを付加して出力する。これに対し同じ差の値となる2回目以降の場合にあっては、図4(C)の転送増加コード104を生成して出力することで、新データの付加は不要となる。このような処理をステップS4でファイル終了位置まで繰り返す。
【0117】
図6は本発明の差分展開処理に固有な従来方法では処理できない新旧ファイルパターンの一例である。この新旧ファイルパターンは、旧ファイル14のデータAが新ファイル16ではデータA,A,に複数複写されている。
【0118】
図7は、図6の新旧ファイルパターンを対象とした本発明による差分抽出処理の具体的な処理手順を示している。本発明の差分抽出処理にあっては、新ファイル16に対しデータ比較対象ポインタPを設定し、旧ファイル14に対してはデータ参照ポインタQを設定し、これらのポインタP,Qの位置の制御により差分抽出処理を行う。
【0119】
なお以下の説明にあっては、データ比較対象ポインタPとデータ参照ポインタQを単にポインタと言い、またポインタの制御順にP1,P2,P3あるいはQ1,Q2,Q3というように番号を付して示している。更に、データA,B,Cのデータ長をaバイト、bバイト、cバイトとする。
【0120】
図7において、まず新ファイル16及び旧ファイル14の先頭をスタートポイントとしてポインタP1,Q1をセットし、点線で示す1バイトデータを比較する。この場合、同じデータAであることから、最初の1バイト比較で1バイトデータは一致するので、一致したらポインタP1,Q1を次の1バイトずらした位置に移動して1バイトデータを比較する。
【0121】
この結果、P2,Q2まで新ファイル16と旧ファイル14の同じデータAについてバイト一致の結果が得られる。続いて新ファイル16及び旧ファイル14につき、ポインタP3,Q3に移動して次の1バイトを比較すると、この場合、データAとデータBの先頭バイトであり、1バイトデータは不一致となる。
【0122】
このように1バイトデータの比較で不一致になると、本発明にあっては、旧ファイル14における不一致位置のポインタQ3の前後にポインタを移動して、新ファイル16におけるポインタP3の1バイトデータとの一致部分の探索を行う。
【0123】
旧ファイル14における不一致部分のポインタQ3の前後における一致部分の探索にあっては、例えば4バイトおきに旧ファイル14の1バイトデータを抽出して比較する。この探索により旧ファイル14の前方のデータAにおける先頭1バイトが、新ファイル16のポインタP3の1バイトに一致する。
【0124】
この不一致部分の前後の探索で旧ファイル14から一致部分が判別されたならば、ポインタQ3を一致部分のポインタQ3'に移動する。そして新ファイル16のポインタP3の1バイトデータと、探索により移動した旧ファイル14のQ3'の1バイトから、順番にバイト単位の比較を行う。
【0125】
この場合には同じデータAであることから、ポインタP4,Q4までバイト単位のデータ一致が得られる。続いてポインタをP5,Q5に移動してデータBの先頭バイトを比較すると、この場合にも同じデータBであることからデータ一致となり、このデータ一致は最後のポインタP6,Q6まで続くことになる。
【0126】
このような図7におけるポインタの制御による差分データの抽出処理により、図8の差分データファイル110に示すような制御コードが生成されて出力される。即ち、図7の新旧ファイルにおける先頭のデータAにあっては、コード内容にデータAのデータ長であるaバイトをもつ転送コード112が生成される。
【0127】
続いて、ポインタP3とポインタQ3の1バイトデータの不一致部分による旧ファイル14の前後探索でデータAの先頭バイトとの一致が得られたときのポインタQ3からQ3'への移動を示す移動コードが生成される。この移動コードは、ポインタQ3が前方のQ3'に移動する負方向の移動であることから、負移動コード114を生成し、移動長はポインタのずれ量を示す−aバイトを格納している。
【0128】
そして最後に、新ファイル16における2番目のデータAと最後のデータBに対する旧ファイル14のデータA,Bとの一致を示す転送コード116を生成して出力しており、この場合の転送データ長はデータaとデータbのバイト長a,bを加算した(a+b)バイトとなっている。
【0129】
図9は、図7のポインタP3,Q3で1バイトデータが不一致となり、旧ファイル14について前後方向に探索して前方のデータAの先頭の1バイトデータと一致したときに、続いて行われる2段の一致判断の具体例を示している。
【0130】
図9にあっては、新ファイル16の1バイトデータ118と旧ファイル14の1バイトデータ120の不一致で後方に探索して1バイトデータ122との一致を探索した場合である。この場合、探索した1バイトデータ122に続くデータ部分126としてn=16バイト以上、新ファイル16のデータ部分124と一致する場合に、一致部分を探索できたものと判定する。
【0131】
図10は一致探索における他の2段階の一致部分判定処理の説明図である。この場合には、新ファイル16の1バイトデータ62の後方の探索で1バイトデータ122との一致が判別されると、これに続くx=64バイト中のy=32バイト以上が一致した場合、即ち一致する1バイトデータ118,122に続く新旧ファイル14,16においてデータ部分128−1〜5と130−1〜130−5の一致部分の合計バイト数がy=32バイト以上であった場合に、一致部分を探索できたと判定する。
【0132】
このように図9または図10のいずれかの一致条件が得られたときには、新ファイル16と旧ファイル14の間において一致箇所にずれが発生したものと判定し、図4(D)の負移動コード106または図4(E)の正移動コード108をずれの方向に応じて発生させる。
【0133】
このずれの発生を示す負移動コード106または正移動コード108の発生により、旧ファイル14上でポインタをずれ量だけ移動した後の処理は、再びずらしたポインタ位置からのバイト単位の比較による差分抽出処理となる。
【0134】
図11は新旧ファイルの置換パターンである。ここで旧ファイル14はデータA,B,Cで構成されており、これに対し新ファイル16はデータA,B',Cで構成されており、データA,Cの一致部分に対しデータB,B'が置換部分となる。
【0135】
図12は、図11の置換パターンに対する本発明の差分抽出処理のポインタ制御による具体例である。図12において、新旧ファイルの先頭のデータAにあっては、ポインタP1〜P2及びQ1〜Q2の制御によりデータAの一致判別が行われる。
【0136】
続いて新ファイル16のポインタP3及び旧ファイル14のポインタQ3への移動によりデータB,B'の先頭1バイトを比較する。この比較によりデータが不一致であったとすると、旧ファイル14について前後方向を探索しても一致部分は得られないことから、ポインタP3,Q3を後方に1バイトずつ移動し、これをポインタP4,Q4まで繰り返す。
【0137】
更にポインタP5,Q5に移動すると、次のデータCの先頭1バイトの比較となり、一致部分と判別され、同時に図9または図10の2段階目の一致条件が満足されることで一致部分と判定される。したがって、この時点で置換部分となるデータBとB'につき、図13の置換データ長bバイトと転送データ長aバイトの転送置換コード134を発生する。
【0138】
このときB’は過去の置換コードの差の値と一致しない初めて出た値であることから、転送置換コード134を生成し、これにB’の値を持つ新データ136を付加して出力する。
【0139】
そして図12において、新ファイル16のポインタP5〜P6の移動と、これに同期した旧ファイル14におけるポインタQ5〜Q6の移動により、データCの一致部分が判別され、図13の転送データ長cバイトの転送コード138が生成される。
【0140】
図14は、図11のデータB,B'のような置換処理において、置換部分の差の値として同一の値が繰り返される場合の処理の説明図である。図14の旧ファイル14及び新ファイル16は、4ビットのバイトコードを16進法の数値で表わしている。この新旧ファイルを比較すると、一致部分140,142,144,146,148の間に不一致部分150,152,154,156がそれぞれ存在している。
【0141】
ここで、不一致部分150〜156における旧ファイル14に対する新ファイル16の2バイトデータの差が、共に同じ16進値「11」となっている。このような場合、本発明の差分データ生成処理にあっては、先頭の不一致部分150における置換処理として差が最初に得られた値であることから、図4(B)の転送置換コード102を発生し、これに新データ「16」を付加する。
【0142】
これに対し2番目以降の一致部分142,144,146,148については、同じ差となる16進値「11」であることから、この場合には図4(C)の転送増加コード104を生成し、新データは付加しない。これによって置換処理で生成する差分データの冗長性を低減し、差分データ量を大きく低減することができる。
【0143】
この場合、差分データの復元側では、転送置換コード102に付加している新データ「16」から旧データとの差「11」を求め、その後に転送増加コード104を受けると、対応する旧データに差「11」を加算することで、新データが復元できる。
【0144】
図15は、データ削除のために移動処理を行う新旧ファイルの説明図である。この新旧ファイルにあっては、旧ファイル14のデータA,B,CからデータBを削除することで新ファイル16のデータA,Cを得ている。
【0145】
図16は、図15の新旧ファイルを対象としたポインタ制御による本発明の差分抽出処理である。この場合、新ファイル16のポインタP3の位置で旧ファイル14のポインタQ3の1バイトデータ、即ちデータCの先頭バイトとの不一致が判別され、不一致部分に対し前後方向に探索すると、後方に+CバイトずれたBデータの先頭バイトでデータ一致が得られる。
【0146】
このため旧ファイル14のポインタQ3をポインタQ3'に移動し、このポインタQ3'の移動により、図17の差分データファイル110における2番目の移動長+cバイトの正移動コード160を発生している。その前の一致部分のデータA,Bにおける制御コードは転送コード158及び転送コード162である。
【0147】
図18は、データ挿入のための移動処理を行う新旧ファイルの説明図である。この場合、旧ファイル14のデータA,Bの間に新ファイル16のようにデータCを挿入している。
【0148】
図19は、図18の新旧ファイルに対する本発明のポインタ制御による差分抽出処理である。この場合、新ファイル16のポインタP3及び旧ファイル14のポインタQ3の位置でデータCとデータBの先頭1バイトが不一致となり、旧ファイル14において不一致部分の前後方向に探索しても一致部分は得られないことから、新ファイル16及び旧ファイル14について順次後方にポインタを移動し、ポインタP4,Q4までの移動でそれぞれ不一致となる。
【0149】
次にポインタP5,Q5に移動して、1バイトデータの不一致になり、これに伴って旧ファイル14上で不一致部分の前後方向に探索を行うと、データBの先頭1バイトとの一致部分が判別される。このような一致部分の判別により、新ファイル16におけるポインタP3〜P4のデータCは、新規データ即ち挿入部分となるデータであることが判別できる。
【0150】
このため図20の差分データファイル110において、置換処理により転送置換コード166を発生し、これに「C」の値を持つ新データ168を付加して出力する。
【0151】
続いて図19において、旧ファイル14においてポインタQ5を前方となる負方向に−CバイトずらしてポインタQ5'としたことを示す図20の負移動コード170を生成して出力する。最後に、ポインタP5〜P6とポインタQ5'〜Q6'の同期移動によりデータBの一致部分を判別し、図20の転送コード172を生成して出力する。
【0152】
(3.条件1に対応した差分転送動作)
図21は、図3の送信側となる基地局10における差分抽出の際の参照情報の生成の具体例を示している。
【0153】
図21において、ワークメモリ18には旧ファイル14の分割データD1,D2,D3,D4,・・・が一括読出しにより一時蓄積されており、これに対しワークメモリ20に対し新ファイル16の分割データD1',D2',D3',D4',・・・が順次読み出されて、旧ファイル14側との比較により差分ファイル55に示すような差分データSD1,SD2,SD3,SD4,・・・が抽出される。
【0154】
ここで新ファイル16の分割データによる旧ファイル14の参照は、例えばそれぞれに対するポインタP,Qの設定により1バイト単位で行われており、一例として、差分データSD1の抽出に新ファイル16の分割データD'1にあっては旧ファイル14の分割データD1を9回参照していたとする。
【0155】
また新ファイル16の分割データD2については旧ファイル14の分割データD1を1回参照し、また分割データD2を9回参照して、差分データSD2を抽出している。
【0156】
同様に新ファイル16の分割データD3'については、旧ファイル14の分割データD2を3回、分割データD3を3回参照して、差分データSD3を抽出している。
【0157】
更に新ファイル16の分割データD4'にあっては、旧ファイル14の分割データD2を3回、分割データD3を4回、分割データD4を16回参照して、差分データSD4を抽出している。
【0158】
このような差分抽出処理によって、図22の参照情報処理部28の参照情報メモリに、分割ブロックD1〜D4に対応してそれぞれの参照回数Niがカウントアップされた値N1=10,N2=14,N3=7,N4=15・・・として格納される。
【0159】
図23は、図21,図22のようにして作成された送信側の旧ファイルの参照情報を受信した受信側における差分展開処理の具体例である。
【0160】
図23において、旧ファイル48は図3のワークメモリ42に一括読出しにより分割データD1,D2,D3,D4,…として蓄積されており、ワークメモリ38には解凍された差分ファイル55の差分データSD1,SD2,SD3,SD4・・・が格納されている。
【0161】
同時に、受信側には図22に示した旧ファイルの参照情報が送られてきていることから、例えば先頭の差分データSD1から新ファイル50の分割データD1を差分展開する際の旧ファイル48の分割データD1の参照ごとに、受信している参照回数のカウントダウンを行う。
【0162】
即ち初期状態においては、図24(A)の参照情報処理部40−1に示す分割ブロックの参照回数の値が保持されており、この値が差分データを使用した旧ファイルの分割データの参照ごとにカウントダウンされる。
【0163】
例えば図23における差分データSD3による旧ファイル48の分割データの参照で新ファイル50の分割データD3'の差分展開が終了した時点にあって、分割データD1の参照回数初期値N1=10は、差分データSD1における9回と差分データSD2における1回の参照による合計10回で図24(B)のようにN1=0となっている。
【0164】
また分割データD2の参照回数初期値N2=16は、差分データSD2の差分展開における参照回数10回、差分データSD3における参照回数3回の合計13回により、この時点でN2=3となっている。
【0165】
同様に分割データD3の参照回数初期値N3=7については、差分データSD3の差分展開における参照回数3回により、現時点でN3=4となっている。なお分割データD4の参照回数初期値N4=16は、差分データSD3による展開終了時点では参照されていないことから、最初と同じN4=16のままである。
【0166】
このような受信側における旧ファイルにおける分割データごとの参照回数のカウントダウンにより、参照回数がゼロとなった分割データは、それ以降の差分展開では参照されないことが分かる。
【0167】
したがって、受信側における参照情報処理部40における分割データごとにカウントダウンされている現時点での参照回数N1〜Nn及び旧ファイルの最終参照アドレスA1〜Anは、受信側における差分展開の進捗状況を表わす情報となる。
【0168】
このため、差分展開中に受信側となる携帯電話12の電源切れなどで転送中断が起きると、転送中断時の直前に差分展開終了している新ファイル50の分割データまでが正常に差分展開を終了しており、このときの新ファイル格納部50−1における参照情報52と更新情報54を読み出して送信側に送ることで、中断したところから差分転送を再開することができる。
【0169】
図25は、図3の新ファイル格納部50−1の格納状態であり、差分展開された分割データD1の格納領域58−1に続いて、旧ファイル分割データ参照回数と最終参照アドレスを含む参照情報52−1が格納され、続いて新ファイル分割データ更新回数と最終更新アドレスでなる更新情報54−1が格納されている。以下同様にして、分割データごとに参照情報と更新情報が格納されている。もちろん新ファイル格納部50−1における他の格納形態としては、差分展開された分割データの格納領域と参照情報及び更新情報の格納領域を別に分けるようにしてもよい。
【0170】
次に図3の条件1のメモリ形態を持つ実施形態における差分転送動作を、図26,図27のフローチャートを参照して説明する。
【0171】
まず最初の差分転送では、送信側において図26のフローチャートに従って次の処理を実行する。
S1:旧ファイル14から分割データを一括読出し、ワークメモリ18に一時蓄積する。
S2:新ファイル16から分割データを順次読出し、ワークメモリ20に一時蓄積する。
S3:差分抽出部22でワークメモリ18の旧ファイル分割データを参照しながらワークメモリ20の新ファイル分割データとの差分データを抽出し、ワークメモリ24に一時蓄積する。
S4:差分抽出において、旧ファイル14の分割データが参照されて使われた回数をカウントアップして参照情報を生成し、分割データ毎に或いは全ての差分データ作成が完了した時点で、参照情報を受信側に送る。
S5:データ圧縮部26がワークメモリ24からの差分データを圧縮して受信側に送る。差分データを全て作り終えた後に圧縮して受信側に送っても良い。
S6:新ファイル16からの分割データ分の差分抽出処理が終了した場合、ステップS7に進み、終了してなければステップS3に戻る。
S7:新ファイル16の差分抽出処理が全て終了した場合は、送信側の処理を終了する。全て終了していない場合はステップS2に戻る。
【0172】
受信側においては、図27のフローチャートに従って次の処理を実行する。
S8:旧ファイル48の分割データを一括読出し、ワークメモリ42に一時蓄積する。
S9:データ解凍部36で受信した圧縮データを解凍して差分データを復元し、ワークメモリ38に一時蓄積する。
S10:差分展開部44でワークメモリ42の旧ファィル分割データを参照しながら、ワークメモリ38からの差分データを解読して新ファイルの分割データを展開し、ワークメモリ46に一時蓄積する。
S11:送信側から送られてきた旧ファイルの参照情報である分割データ毎の参照回数のカウントダウンを行う。
S12:差分データを展開して新ファイルの分割データ分が再生された場合、ステップS13に進み、そうでなければステップS10に戻る。
S13:新ファイルの分割データ分の展開終了した場合、ワークメモリ46から新ファイル50に分割データ及び旧ファイルの参照情報52を書き込む。
S14:新ファイル50の分割データの更新回数をカウントすると共に、新ファイルの分割データ更新回数と最終更新アドレスからなる更新情報54を新ファイル50に格納する。
S15:新ファイル分の差分展開処理が全て終了した場合は、受信処理を終了し、全て終了していない場合は、ステップS10に戻る。
【0173】
次に、受信側において、図27のステップS8〜S12の間に電源断などで転送が中断になった場合、受信側から送信側に対し、差分転送の途中再送を依頼をする。この場合、まず受信側では図27の再スタートのフローチャートに従って次の処理を実行する。
S16:送信側に対して、差分転送の再開を依頼すると共に、新ファイル50に格納した旧ファイルの参照情報52および新ファイルの更新情報54を送信側に送る。
【0174】
これに対し送信側では図26の再スタートのフローチャートに従って次の処理を実行する。
S17:受信側からの差分転送の再開依頼を受けて、受信側から送られてきた前回の転送で実行された旧ファイルの参照情報52と新ファイルの更新情報54から、旧ファイル14および新ファイル16の再スタートする分割データを決めると共に、旧ファイルのポインタを参照最終アドレスに設定する。また受信側から送られてきた旧ファイルの参照情報52の中の参照回数N1〜Nnを参照情報処理部28の参照情報メモリに設定し、更にステップS1に戻る。
【0175】
このように新ファイルの差分展開の状況を知る旧ファイルの参照情報及び新ファイルの更新情報を受信側から受けて、送信側は中断した時点からの差分抽出を再開することができる。
【0176】
(4.条件2のメモリ形態による差分転送)
図28は条件2のメモリ形態に対応した本発明による差分転送の第2実施形態のシステムブロック図である。
【0177】
ここで条件2のメモリ形態とは、差分転送システムにおける受信側のメモリ形態が次の条件の場合である。
(A)格納用不揮発メモリは新旧別ファイルとする。
(B)ワーク用揮発メモリは容量が制限され、旧ファイルが順次蓄積される。
【0178】
そこで、図28のシステム構成のブロック図について条件2のメモリ形態に対応した構成を説明すると次のようになる。
【0179】
図28において、送信側となる基地局10には、ハードディスクドライブHDDなどの不揮発メモリを使用した旧ファイル格納部14−1、同じく不揮発メモリを使用した新ファイル格納部16−1、揮発メモリを使用したワークメモリ18、同じく揮発メモリを使用したワークメモリ20、差分抽出部22、データ圧縮部26、送信部30が設けられる。
【0180】
一方、受信側の携帯電話12には、受信部34、データ解凍部36、差分展開部44、DRAM等の揮発メモリを使用した小容量のワークメモリ420、SRAMなどの不揮発メモリを使用した旧ファイル格納部48−1、及び同じく不揮発メモリを用いた新ファイル格納部50−1を設けている。
【0181】
即ち、図28の条件2に対応した受信側となる携帯電話12にあっては、不揮発メモリを用いて旧ファイル格納部48−1と新ファイル格納部50−1が別々に設けられており、且つ揮発メモリを用いたワークメモリ420は容量に制限があり、例えば旧ファイル分割データを最大で4つ蓄積する容量しかなく、旧ファイル格納部48−1より読み出された旧ファイルが順次蓄積される。
【0182】
図29は、図28の条件2のメモリ形態に対応した実施形態の機能構成のブロック図である。
【0183】
図29において、送信側の基地局10には、不揮発メモリに格納された旧ファイル14と新ファイル16が存在する。旧ファイル14は揮発性のワークメモリ18に一括して読み出される。
【0184】
ここで旧ファイル14は所定のデータサイズごと例えば256キロバイト単位にブロック分けされた分割データD1〜Dnで構成されており、ワークメモリ18に一括して分割データD1〜Dnとして読み出されて、一時的に蓄積される。
【0185】
新ファイル16も旧ファイル14と同様、例えば256キロバイト単位に分割された分割データD1'〜Dmで構成されており、不揮発メモリを用いたワークメモリ28に対し順次読み出されて、一時的に蓄積される。
【0186】
差分抽出部22は、ワークメモリ18の旧ファイル分割データD1〜Dnを参照しながら、ワークメモリ20に順次蓄積する新ファイル分割データD1'〜Dmのそれぞれとの差分を抽出して、差分データを揮発性のワークメモリ24に出力する。なおワークメモリ24は、オフラインで送信する場合は不揮発メモリを使用する。
【0187】
データ圧縮部26はワークメモリ24に一時的に蓄積された差分データを圧縮し、無線回線となる伝送路32を介して携帯電話12側に送信する。
【0188】
更に、基地局10には参照情報処理部28が設けられる。この参照情報処理部28は、差分抽出部22において旧ファイル14の各分割データD1〜Dnが何回参照されたかをカウントアップした参照回数N1,N2,・・・Nnを蓄積する参照情報メモリと、参照情報メモリに格納した分割データごとの参照回数でなる参照情報を送る参照情報送信部から構成されている。
【0189】
受信側となる携帯電話12には不揮発メモリを用いて旧ファイル格納部48−1と新ファイル格納部50−1が個別に設けられ、旧ファイル48を格納していると共に、差分展開された新ファイル50を格納することができる。
【0190】
また携帯電話12には、データ解凍部36、解凍した差分データを一時蓄積する揮発性のワークメモリ38、旧ファイル48の分割データを最大4つ一時蓄積するワークメモリ420、差分展開部44、差分展開により得られた新ファイルの分割データを一時蓄積するワークメモリ46、差分展開によりワークメモリ420の旧ファイルのデータを参照するごとに受信した参照回数をダウンカウントして書き換え、更に新ファイルの分割データ分の差分展開が終了したときの参照最終アドレスA1〜Anを書き込む参照情報処理部40が設けられる。
【0191】
更に、新ファイルの分割データが更新される回数Nm及び新ファイルの最終更新アドレスAmでなる更新情報を作成する更新情報処理部45が設けられる。
【0192】
このような条件2のメモリ形態に対応した送信側及び受信側の構成及び処理動作は、受信側にあってはワークメモリ18に対する旧ファイルの分割データの順次読出しによる記憶、及び受信側にあってはワークメモリ420に対する旧ファイル48の分割データの順次読出しによる一時蓄積以外の点は、図3の条件1のメモリ形態の場合と基本的に同じになる。
【0193】
そこで、送信側の基地局10におけるワークメモリ18における旧ファイルの順次読出しによる蓄積に対応した差分抽出と、受信側のメモリ420に対する旧ファイル48の順次読出しによる蓄積に対応した差分展開を説明すると、次のようになる。
【0194】
送信側の基地局10にあっては、ワークメモリ20に対し新ファイル16より分割データD1'〜Dmを順次読み込んで一時蓄積する。同時に、ワークメモリ18に旧ファイル14にD1〜Dnを順次読み込んで一時蓄積する。同時に、ワークメモリ20に新ファイル16の分割データD1'〜Dmを順次読み込んで一時蓄積する。
【0195】
そして差分抽出部22により、新ファイル16の先頭の分割データD1'から順番にワークメモリ18の旧ファイル14の分割データD1〜Dnを参照しながら差分データを抽出し、ワークメモリ24に格納した後、データ圧縮部26で圧縮して、伝送路32により送信する。
【0196】
また、差分展開の際に旧ファイル14における分割データD1〜Dnに対する参照回数がカウントアップされて参照情報処理部28の参照情報メモリに参照回数N1〜Nnとして書き込まれており、データ圧縮部26による差分データの送信に伴い、この旧ファイル14の参照情報も送られる。
【0197】
受信側の携帯電話12にあっては、圧縮データをデータ解凍部36で解凍してワークメモリ38に差分データとして蓄積し、また旧ファイル48につきワークメモリ420に、最初は先頭から3つの分割データD1〜D3を読み込んで一時蓄積する。
【0198】
また受信された旧ファイルの参照回数N1〜Nnが、参照情報処理部40の参照情報メモリに書き込まれる。この状態で差分展開部44は、ワークメモリ38に蓄積している差分データによりワークメモリ420の旧ファイルの分割データを参照して新ファイルの分割データD1'を展開し、ワークメモリ46に蓄積する。
【0199】
この差分展開の際のワークメモリ420の旧ファイルの分割データに対する参照が行われると、参照ごとに対応する分割データの参照回数N1〜Nnのいずれかに対するダウンカウントが行われる。また、新ファイルの分割データ分の差分展開が終了した時点の旧ファイルの参照アドレスA1〜Anの対応するアドレスが参照情報メモリに書き込まれる。
【0200】
ワークメモリ46の差分展開された新ファイル50の分割データは新ファイル格納部50−1に格納され、このとき更新情報処理部45で作成されている更新情報54が格納される。
【0201】
このような受信側の携帯電話12における差分展開の際に、容量的に制約されているワークメモリ420に対する旧ファイル48の分割データの書込制御は、参照情報処理部40の参照情報メモリに格納されているダウンカウントされた旧ファイル参照回数N1〜Nnを使用して行われる。
【0202】
即ち、ワークメモリ420における旧ファイル48の分割データの蓄積は、旧ファイルの参照回数のダウンカウントでゼロになるまで蓄積が維持され、参照回数がゼロとなった時点で消去されて、旧ファイル48から次の分割データを読み出して蓄積する。
【0203】
図30は、図29の受信側におけるワークメモリ420の蓄積制御を、参照回数のダウンカウントによる変化、即ち差分展開の進捗状況に合わせて示している。
【0204】
図30(A)は差分展開の開始時点であり、旧ファイル48より3つの分割データD1〜D3を順次読み出して一時蓄積する。次にワークメモリ420の旧ファイルの分割データD1,D2を参照しながら、ワークメモリ38の解凍した差分データSD1との差分展開を行って新ファイルの分割データD1'を展開し、ワークメモリ46に一時蓄積する。
【0205】
また、この差分展開と同時に、参照回数メモリ40−1に書き込まれている受信された参照回数N1〜Nnにつき、分割データD1,D2に対応した参照回数N1,N2のダウンカウントを行う。ここで、受信された参照回数は、図21,図22の差分展開により得られた参照情報を例にとっており、このため分割データD1,D2の参照回数の初期値は、N1=10、N2=15となっている。
【0206】
また受信側における差分展開は図23の場合を例にとっており、このため新ファイルの分割データD1'の差分展開にあっては分割データD1を9回参照しており、したがって新ファイルの分割データD1'の展開が終了した時点での参照情報メモリ40−2の参照回数はN1=1にダウンカウントされる。
【0207】
新ファイルの分割データD1'の展開が済むと、展開した新ファイルの分割データD1'を新ファイル領域50−11に書き込み、同時に旧ファイルの参照情報を更新情報と共に新ファイル領域50−21に書き込む。
【0208】
次に図30(B)のように、ワークメモリ420の旧ファイル48の分割データD1〜D3を参照しながら、解凍したワークメモリ38の差分データSD2との差分展開を行って新ファイルの分割データD2'を再生し、ワークメモリ46に一時蓄積する。
【0209】
また、このときの参照回数メモリ40−2について、旧ファイルの分割データD1〜D3の参照に伴うダウンカウントを行い、新ファイルの分割データD2'の展開が完了した時点では、ダウンカウントによって参照回数メモリ40−3のように変化する。
【0210】
新ファイルの分割データD2'の展開が済むと、新ファイル領域50−12に書き込むと共に、このときの旧ファイル参照情報を新ファイルの更新情報と共に新ファイル領域50−22に書き込む。この時点で旧ファイル48の分割データD1の参照回数N1はN1=0となっている。このため分割データD1がこれ以上参照されることはなく、メモリ420から分割データD1は削除可能となる。
【0211】
次に図30(C)において、メモリ420から参照回数N1=0となった分割データD1を削除し、新たに分割データD4を読み出して一時蓄積する。次に、ワークメモリ420の分割データD2〜D4を参照しながら、解凍した差分データSD3との差分展開を行って新ファイルの分割データD3'を再生し、ワークメモリ46に一時蓄積する。この差分展開に伴う分割データD2〜D4の参照で、参照回数メモリ40−3は参照回数メモリ40−4のように参照回数の値が変化する。
【0212】
このようにして差分展開されたワークメモリ46の新ファイルの分割データD3'は新ファイル領域50−13に書き込まれ、同時にそのときの参照回数メモリ40−4を含む旧ファイルの参照情報が新ファイルの更新情報と共に新ファイル領域50−23に書き込まれる。
【0213】
この時点で参照回数メモリ40−4の参照回数N2〜N4の中でゼロとなっている参照回数はないことから、ワークメモリ420の分割データD2〜D4はそのまま蓄積を維持して図30(D)の次の差分展開に進む。
【0214】
図30(D)にあっては、旧ファイル48から次の分割データD5を読み出し、ワークメモリ420に一時蓄積する。そして分割データD2〜D5を参照しながら、そのときの差分データSD4との差分展開を行って、新ファイルの分割データD4'を再生してワークメモリ46に一時蓄積する。
【0215】
また差分展開の際に、このときの参照回数メモリ40−4について旧ファイルの分割データD2〜D5の参照によるダウンカウントを行い、分割データD4'の展開終了時点での参照回数は参照回数メモリ40−5のようになる。
【0216】
差分展開された新ファイルの分割データD4'は新ファイル領域50−14に書き込まれ、同時にこの時点の参照回数メモリ40−5の内容を含む参照情報と新ファイルの更新情報が新ファイル領域50−24に書き込まれる。
【0217】
このとき、ダウンカウントによって参照回数メモリ40−5における分割データD2,D3の参照回数は共にN2=0,N3=0であり、分割データD2,D3はこれ以上参照されることがなく、ワークメモリ420から分割データD2,D3は削除可能となる。
【0218】
このような図30における受信側でのワークメモリ420のメモリ容量が分割データ4つ分に制約されている場合にあっても、現在位置及び前後の3つの分割データに加え、更に1つの分割データを保持できることで、例えば図31のような旧ファイルのデータが正方向に移動している場合の差分データからの差分展開についても、ワークメモリ46の蓄積制御で差分展開することができる。
【0219】
図31(A)は、旧ファイルの分割データBが新ファイルにおいて+側に4つ分移動している。このため図31(B)〜(E)の新ファイルの分割データA〜Bの差分展開において、旧ファイルの分割データBは図31(E)で参照されるまで参照回数Nがゼロとならないことから残っている。
【0220】
このため現在位置及びその両側の分割データを一時記憶して差分展開する場合にあっても、この3つの分割データの参照領域を超えて移動している旧ファイルの分割データについて、ワークメモリ420上に一時保持して差分展開することができる。
【0221】
図32(A)は旧ファイルの分割データD1が新ファイルにおいて負方向に移動した場合であり、このような場合にも図32(B)(C)の差分展開における旧ファイル参照による新ファイルの差分生成を行うことができる。
【0222】
次に、図29の条件2のメモリ形態に対応した本発明による差分転送の処理を、図33及び図34のフローチャートを参照して説明すると、次のようになる。
【0223】
まず最初の差分転送では、送信側において図33のフローチャートに従って次の処理を実行する。
S1:旧ファイル14から分割データを順次読出し、ワークメモリ18に一時蓄積する。
S2:新ファイル16から分割データを順次読出し、ワークメモリ20に一時蓄積する。
S3:差分抽出部22でワークメモリ18の旧ファイル分割データを参照しながらワークメモリ20の新ファイル分割データとの差分データを抽出し、ワークメモリ24に一時蓄積する。
S4:差分抽出にあたり、旧ファイル14の次の分割データが必要であれば、ステップS1に戻る。そうでない場合は、次のステップS5に進む。
S5:差分抽出において、旧ファイル14の分割データが参照されて使われた回数をカウントアップして参照情報を生成し、分割データ毎に或いは全ての差分データ作成が完了した時点で、参照情報を受信側に送る。
S6:データ圧縮部26がワークメモリ24からの差分データを圧縮して受信側に送る。差分データを全て作り終えた後に圧縮して受信側に送っても良い。
S7:新ファイル16からの分割データ分の差分抽出処理が終了した場合、ステップS8に進み、終了してなければステップS3に戻る。
S8:新ファイル16の差分抽出処理が全て終了した場合は、送信側の処理を終了する。全て終了していない場合はステップS2に戻る。
【0224】
受信側においては、図34のフローチャートに従って次の処理を実行する。
S9:旧ファイル48の分割データを順次読出し、ワークメモリ420に一時蓄積する。
S10:データ解凍部36で受信した圧縮データを解凍して差分データを復元し、ワークメモリ38に一時蓄積する。
S11:差分展開部44でワークメモリ420の旧ファイル分割データを参照しながら、ワークメモリ38からの差分データを解読して新ファイル分割データを展開し、ワークメモリ46に一時蓄積する。
S12:差分抽出にあたり、旧ファイル16の次の分割データが必要であれば、ステップS9に戻る。そうでない場合は、次のステップS13に進む。
S13:送信側から送られてきた旧ファイルの参照情報である分割データ毎の参照回数のカウントダウンを行う。
S14:差分データを展開して新ファイルの分割データ分が再生された場合、ステップS15に進み、そうでなければのステップS11に戻る。
S15:新ファイルの分割データ分の展開終了した場合、ワークメモリ46から新ファイル50に分割データ及び旧ファイルの参照情報52を書き込む。
S16:新ファイル50の分割データの更新回数をカウントすると共に、新ファイルの分割データ更新回数と最終更新アドレスからなる更新情報54を新ファイル50に格納する。
S17:新ファイル分の差分展開処理が全て終了した場合は、受信処理を終了し、全て終了していない場合は、ステップS11に戻る。
【0225】
次に、受信側において、図34のステップS9〜S12の間に電源断などで転送が中断になった場合、受信側から送信側に対し、差分転送の途中再送を依頼をする。この場合、まず受信側では図34の再スタートのフローチャートに従って次の処理を実行する。
S18:送信側に対して、差分転送の再開を依頼すると共に、新ファイル50に格納した旧ファイルの参照情報52および新ファイルの更新情報54を送信側に送る。
【0226】
これに対し送信側では図33の再スタートのフローチャートに従って次の処理を実行する。
S19:受信側からの差分転送の再開依頼を受けて、受信側から送られてきた前回の転送で実行された旧ファイルの参照情報52と新ファイルの更新情報54から、旧ファイル14および新ファイル16の再スタートする分割データを決めると共に、旧ファイルのポインタを参照最終アドレスに設定する。また受信側から送られてきた旧ファイルの参照情報52の中の参照回数N1〜Nnを参照情報処理部28の参照情報メモリに設定し、更にステップS1に戻る。
【0227】
このように新ファイルの差分展開の状況を知る旧ファイルの参照情報及び新ファイルの更新情報を受信側から受けて、送信側は中断した時点からの差分抽出を再開することができる。
【0228】
(5.条件3のメモリ形態に対応した差分展開)
図35は、前記表1の条件3に対応したメモリ形態を持った本発明による差分展開のシステム構成のブロック図である。この条件3のメモリ形態にあっては、受信側について次のメモリ構成を持っている。
(A)旧ファイルと新ファイルは同じ不揮発メモリの新旧同ファイルとなる。
(B)ワーク用揮発メモリに旧ファイルが一括蓄積される。
【0229】
このような条件3のメモリ形態は、図2に示した条件1のメモリ形態における受信側の携帯電話12の不揮発メモリに設けていた新旧2つのファイルを兼用ファイルとしたものである。
【0230】
図35において、送信側となる基地局10には、ハードディスクHDDなどの不揮発メモリを用いた旧ファイル格納部14−1、同じく不揮発メモリを用いた新ファイル格納部16−1、揮発メモリを用いたワークメモリ18,20、差分抽出部22、データ圧縮部26及び送信部30が設けられ、これは図2の条件1のメモリ形態の場合と同じである。
【0231】
受信側となる携帯電話12には、受信部34、データ解凍部36、差分展開部44が設けられる。また、不揮発メモリを使用した新旧同ファイルとした兼用ファイル格納部80が設けられる。
【0232】
差分転送の開始時には兼用ファイル格納部80には旧ファイルが格納されており、差分展開部44で受信した差分データから旧ファイルを展開すると、兼用ファイル格納部80に格納している旧ファイルに、展開した新ファイルを上書きすることになる。差分展開部44で新ファイルの展開に使用する旧ファイルは、揮発性のワークメモリ42に一括して読み出されて一時蓄積される。
【0233】
図36は、図35の条件3のメモリ形態に対応した差分転送の機能構成のブロック図である。
【0234】
図36において、送信側となる基地局10には、旧ファイル14と新ファイル16が個別に設けられており、それぞれ例えば256バイトのサイズを持つ旧ファイル分割データD1〜Dn及び新ファイル分割データD1'〜Dmとして格納されている。
【0235】
また基地局10には、旧ファイル14を一括して読み出して一時蓄積する揮発メモリを用いたワークメモリ18が設けられる。また、新ファイル16の分割データD1'〜Dmを順次読み出して一時蓄積する不揮発メモリを用いたワークメモリ20が設けられる。
【0236】
差分抽出部22は、ワークメモリ18の旧ファイル分割データを参照しながら、ワークメモリ20の新ファイル分割データとの差分をとって差分データを抽出し、ワークメモリ24に一時蓄積する。
【0237】
ワークメモリ24は揮発メモリであるが、オフラインで送信する場合には不揮発メモリとする。データ圧縮部26は、ワークメモリ24からの差分データを圧縮し、伝送路32を介して携帯電話12側に送信する。
【0238】
更に基地局10には、差分抽出部22による差分抽出処理中に旧ファイルの各分割データが何回参照されたかをカウントアップしてメモリに蓄積する参照情報処理部28が設けられており、旧ファイル参照回数N1〜Nnでなる参照情報を、圧縮部26における差分データの圧縮による伝送と同時に携帯電話12側に送信する。
【0239】
このような送信側となる基地局10の構成及び機能は、図3に示した条件1のメモリ形態の実施形態と同じになる。
【0240】
受信側となる携帯電話12側にあっては、受信した圧縮データを解凍するデータ解凍部36が設けられ、解凍した差分データを揮発性のワークメモリ38に一時記憶する。
【0241】
また、兼用ファイル格納部80に格納されている旧ファイル48の分割データD1〜Dnを一括して読み出して一時蓄積するワークメモリ42が設けられる。差分展開部44は、ワークメモリ42の旧ファイル分割データを参照しながらワークメモリ38の差分データを解読して、新ファイル分割データを再生する。
【0242】
差分展開部44で再生された新ファイル分割データは、揮発メモリを用いたワークメモリ46に一時蓄積される。ワークメモリ46に一時蓄積された新ファイル分割データは、新ファイルの分割データ分の再生が終了するごとに、兼用ファイル80に格納している旧ファイル48の差分展開の際に参照した旧ファイル分割データの部分に上書きされる。
【0243】
また受信側となる携帯電話12には参照情報処理部40と更新情報処理部48が設けられている。参照情報処理部40は、送信側となる基地局10から受信した旧ファイル参照回数N1〜Nnでなる参照情報を受信して参照情報メモリに記憶し、差分展開の際にワークメモリ42の旧ファイル分割データを参照するごとに、対応する分割データの参照回数をダウンカウントする。また、差分展開の際に参照している旧ファイル上での最終参照アドレスも随時蓄積する。
【0244】
一方、更新情報処理部45は、新ファイル分割データの差分展開が終了したときに分割更新回数をカウントアップして、更新情報メモリに更新回数Nmのように記憶すると共に、新ファイルの最終更新アドレスAmを記憶する。
【0245】
ワークメモリ46から差分展開された新ファイル分割データを兼用ファイル格納部80の対応する旧ファイル分割データに上書きする際に、参照情報処理部40で生成されたその時点の参照情報52と、更新情報処理部45で生成されたその時点の更新情報54が、新ファイル50の情報として格納される。
【0246】
また、差分転送中に受信可能となる携帯電話12の電源などが切れて転送中断となった場合には、携帯電話12の電源復旧などにより回復した後に、中断前に新ファイル50に格納していた参照情報52と更新情報54を読み出して送信側の基地局10に送って差分転送の途中再送依頼を行い、基地局10から中断したところから再度、差分転送を行うことができる。
【0247】
次に図37及び図38のフローチャートを参照して、差分転送処理、及び差分転送の途中で転送中断となった場合の再度の差分転送の処理を説明する。
【0248】
まず最初の差分転送では、送信側において図37のフローチャートに従って次の処理を実行する。
S1:旧ファイル14の分割データを一括読出し、ワークメモリ18に一時蓄積する。
S2:新ファイル16から分割データを順次読出し、ワークメモリ20に一時蓄積する。
S3:差分抽出部22でワークメモリ18の旧ファイル分割データを参照しながらワークメモリ20の新ファィル分割データとの差分データを抽出し、ワークメモリ24に一時蓄積する。
S4:差分抽出に当たり、新ファイル16の次の分割データが必要であれば、ステップS2に戻る。そうでない場合は、次のステップS5に進む。
S5:差分抽出において、旧ファイル分割データが参照されて使われた回数をカウントアップして参照情報を生成し、分割データ毎に或いは全ての差分データ作成が完了した時点で、参照情報を受信側に送る。
S6:データ圧縮部26がワークメモリ24からの差分データを圧縮して受信側に送る。差分データを全て作り終えた後に受信側に送っても良い。
S7:新ファイル16からの分割データ分の差分抽出処理が終了した場合、ステップS8に進み、終了してなければステップS3に戻る。
S8:新ファイル16からのデータの差分抽出処理が全て終了した場合は、送信側の処理を終了する。新ファイル16からのデータの差分抽出処理が全て終了していない場合は、ステップS2に戻る。
【0249】
受信側においては、図38のフローチャートに従って次の処理を実行する。
S9:旧ファイル48の分割データを一括読出し、ワークメモリ42に一時蓄積する。
S10:データ解凍部36で受信した圧縮データを解凍して差分データを再生し、ワークメモリ38に一時蓄積する。
S11:差分展開部44では、ワークメモリ420の旧ファイル分割データを参照しながら、ワークメモリ38からの差分データを解読して新ファイル分割データを展開し、ワークメモリ46に一時蓄積する。
S12:差分抽出に当たり、旧ファイル14の次の分割データが必要であれば、ステップS9に戻る。そうでない場合は、次のステップS13に進む。
S13:送信側から送られてきた旧ファイルの参照情報である分割データ毎の参照回数のカウントダウンを行う。
S14:差分データを展開して新ファイルの分割データ分が再生された場合、ステップS15に進み、そうでなければのステップS11に戻る。
S15:新ファイルの分割データ分の展開終了した場合、ワークメモリ46から旧ファイル48に新ファイル50の分割データを上書きし、旧ファイルの参照情報52を新ファイル50に格納する。
S16:新ファイル分割データの更新回数をカウントすると共に、新ファイル分割データの更新回数と最終更新アドレスからなる更新情報54を新ファイル50に格納する。
S17:新ファイル分のデータの差分展開処理が全て終了した場合は、受信処理を終了し、全て終了していない場合は、ステップS11に戻る。
【0250】
次に、受信側において、図38のステップS8〜S12の間に電源断などで転送が中断になった場合、受信側から送信側に対し、差分転送の途中再送を依頼をする。この場合、まず受信側では図38の再スタートのフローチャートに従って次の処理を実行する。
S18:送信側に対して、差分転送の再開を依頼すると共に、新ファイル50に格納した旧ファイルの参照情報52および新ファイルの更新情報54を送信側に送る。
【0251】
これに対し送信側では図37の再スタートのフローチャートに従って次の処理を実行する。
S19:受信側からの差分転送の再開依頼を受けて、受信側から送られてきた前回の転送で実行された旧ファイルの参照情報52と新ファイルの更新情報54から、旧ファイル14および新ファイル16の再スタートする分割データを決めると共に、旧ファイルのポインタを参照最終アドレスに設定する。また受信側から送られてきた旧ファイルの参照情報52の中の参照回数N1〜Nnを参照情報処理部28の参照情報メモリに設定し、更にステップS1に戻る。
【0252】
このように新ファイルの差分展開の状況を知る旧ファイルの参照情報及び新ファイルの更新情報を受信側から受けて、送信側は中断した時点からの差分抽出を再開することができる。
【0253】
(6.条件4のメモリ形態に対応した差分転送)
図39は、前記表1の条件4のメモリ形態に対応した本発明による差分転送のシステム構成のブロック図である。この条件4に対応したメモリ形態の差分転送にあっては、次の受信側のメモリ形態を対象としている。
(A)旧ファイルと新ファイルは同じ不揮発メモリの新旧同ファイルとなる。
(B)ワーク用揮発メモリは容量が制限され、旧ファイルが順次蓄積される。
【0254】
この条件4のメモリ形態は、受信側における不揮発メモリ及びワークメモリのメモリ容量が最も小さい厳しいメモリ条件に対応している。
【0255】
具体的には、図28に示した条件2のメモリ形態における受信側の旧ファイルと新ファイルを同じファイルとした兼用ファイル格納部80とし、兼用ファイル格納部80には差分転送前には旧ファイルが格納されており、差分転送により新ファイルのデータが展開されるごとに、展開された新ファイルデータによって旧ファイルの対応するデータが上書きされることになる。
【0256】
図40は、条件4のメモリ形態に対応した本発明による差分転送の機能構成のブロック図である。
【0257】
図40において、送信側となる基地局10には、旧ファイル格納部14−1及び新ファイル格納部16−1によって、旧ファイル14及び新ファイル16が別々に格納されており、旧ファイル14及び新ファイル16は例えば256バイトのメモリブロックサイズに対応して、分割データD1〜Dn、及び分割データD1'〜Dmに分けて格納されている。
【0258】
また基地局10には、ワークメモリ18,20、差分抽出部22、ワークメモリ24、データ圧縮部26及び参照情報処理部28が設けられる。ワークメモリ18には、旧ファイル14の分割データD1〜Dnが順次読み込まれて一時蓄積される。ワークメモリ20には、新ファイルの分割データD1'〜Dmが順次読み出されて一時蓄積される。
【0259】
差分抽出部22は、ワークメモリ18の旧ファイル分割データを参照しながら、ワークメモリ20の新ファイル分割データとの差分を抽出して差分データをワークメモリ24に一時蓄積する。ワークメモリ24は揮発メモリであるが、オフラインで送信する場合は不揮発メモリとする。
【0260】
データ圧縮部26は、ワークメモリ24の差分データを圧縮して、伝送路32を介して携帯電話12側に送信する。参照情報処理部28は、差分抽出部22でワークメモリ18の旧ファイル分割データを参照するごとに、各分割データごとの参照回数をカウントアップして、その参照回数メモリに参照回数N1〜Nnとして記憶し、データ圧縮部26による差分データの圧縮送信と同時に携帯電話12側に旧ファイル参照回数N1〜Nnの参照情報を送信する。
【0261】
一方、受信側となる携帯電話12には不揮発メモリを用いた兼用ファイル格納部80が設けられ、兼用ファイル格納部80には差分転送を行う前には旧ファイル48のみが格納されている。この旧ファイル48は、差分展開により新ファイルのデータが展開されると、上書きにより兼用ファイル格納部80に同時に示す新ファイル50に書き換えられることになる。
【0262】
また受信側となる携帯電話12には、データ解凍部36、揮発メモリを用いたワークメモリ38,420,46、差分展開部44、参照情報処理部40及び更新情報処理部45が設けられる。
【0263】
データ解凍部36は、受信した圧縮データを解凍して得た差分データをワークメモリ38に一時蓄積する。ワークメモリ420は、例えば256バイトサイズの旧ファイル分割データを4つ格納可能なメモリ容量を持っており、差分展開部44による差分データに基づく新ファイル分割データを展開するため、差分展開する新ファイル分割データに対し同位置及び隣接する3つの旧ファイル分割データの参照を可能とするため、例えば分割データDi,Di+1,Di+2を順次読み出して一時蓄積している。
【0264】
更に、ワークメモリ420の4つ目の分割データ格納領域には、後の差分展開に参照する分割データを残すための一時蓄積に使用される。
【0265】
差分展開部44は、ワークメモリ420の旧ファイル分割データを参照しながら、ワークメモリ38の差分データを解読して新ファイル分割データを再生し、展開した新ファイル差分データをワークメモリ46に一時蓄積する。
【0266】
参照情報処理部40は、受信した送信側からの旧ファイル参照回数N1〜Nnを受信して参照情報メモリに記憶した後、差分展開部44によりワークメモリ420の旧ファイル分割データを参照するごとに、対応する参照回数のカウントダウンを行い、併せて差分展開で参照している現在の旧ファイル上での最終参照アドレスA1〜Anも随時蓄積する。
【0267】
更新情報処理部45は、ワークメモリ46に展開された新ファイル分割データを旧ファイル48の対応する分割データに上書きして新ファイル50とする際に、新ファイル分割データの更新回数Nmをカウントアップし、同時に更新最終アドレスAmを随時記憶する。
【0268】
参照情報処理部40で作成されている旧ファイルの参照情報52は、ワークメモリ46から展開された新ファイルの分割データを旧ファイル48に上書きして新ファイル50として格納する際に、同時に格納され、このとき更に更新情報処理部45で生成されている更新情報54も新ファイル50に格納される。
【0269】
一方、差分転送中に受信側となる携帯電話12の電源などが切れて転送中断となった場合には、電源復旧後に受信側の携帯電話12で旧ファイルの参照情報52と新ファイルの更新情報54を読み出して送信側の基地局10に送り、差分転送の途中再送を依頼する。
【0270】
この差分転送の途中再送の依頼を受けた送信側の基地局10にあっては、受信した旧ファイル参照情報と新ファイル更新情報から、途中転送を再開する旧ファイル14の分割データと新ファイル16の分割データを決定し、また旧ファイル分割データについては旧ファイル最終アドレスからポインタをスタート位置にセットし、更に受信側から受けた中断前の正常に差分転送が終了している時点での旧ファイルの参照情報を参照情報処理部28の参照情報メモリに書き込んで、差分転送を途中から再開する。
【0271】
次に、図41及び図42のフローチャートを参照して、図40の条件4に対応したメモリ形態での差分転送及び差分転送の途中で中断した後の再送処理を説明する。
【0272】
まず最初の差分転送では、送信側において図41のフローチャートに従って次の処理を実行する。
S1:旧ファイル14から分割データを順次読出し、ワークメモリ18に一時蓄積する。
S2:新ファイル16から分割データを順次読出し、ワークメモリ20に一時蓄積する。
S3:差分抽出部22でワークメモリ18の旧ファイル分割データを参照しながらワークメモリ20の新ファイル分割データとの差分データを抽出し、ワークメモリ24に一時蓄積する。
S4:差分抽出にあたり、旧ファイル14の次の分割データが必要であれば、ステップS1に戻る。そうでない場合は、次のステップS5に進む。
S5:差分抽出において、旧ファイル14の分割データが参照されて使われた回数をカウントアップして参照情報を生成し、分割データ毎に或いは全ての差分データ作成が完了した時点で、参照情報を受信側に送る。
S6:データ圧縮部26がワークメモリ24からの差分データを圧縮して受信側に送る。差分データを全て作り終えた後に受信側に送っても良い。
S7:新ファイル16からの分割データ分の差分抽出処理が終了した場合、ステップS8に進み、終了してなければステップS3に戻る。
S8:新ファイル16のデータの差分抽出処理が全て終了した場合は、送信側の処理を終了する。全て終了していない場合は、ステップS2に戻る。
【0273】
受信側においては、図42のフローチャートに従って次の処理を実行する。
S9:旧ファイル48の分割データを順次読出し、ワークメモリ420に一時蓄積する。
S10:データ解凍部36で受信した圧縮データを解凍して差分データを復元し、ワークメモリ38に一時蓄積する。
S11:差分展開部44では、ワークメモリ420の旧ファイル分割データを参照しながら、ワークメモリ38からの差分データを解読して新ファイル分割データを展開し、ワークメモリ46に一時蓄積する。
S12:差分抽出にあたり、旧ファイル16の次の分割データが必要であれば、ステップS9に戻る。そうでない場合は、次のステップS13に進む。
S13:送信側から送られてきた旧ファイルの参照情報である分割データ毎の参照回数のカウントダウンを行う。
S14:差分データを展開して新ファイル分割データ分が再生された場合、ステップS15に進み、そうでなければのステップS11に戻る。
S15:新ファイルの分割データ分の展開終了した場合、ワークメモリ46から旧ファイル50に新ファイル分割データを上書きし、旧ファイルの参照情報52を新ファイル50に格納する。
S16:新ファイル分割データの更新回数をカウントすると共に、新ファイルの分割データ分の更新回数と最終更新アドレスからなる更新情報54を格納する。
S17:新ファイル分の差分展開処理が全て終了した場合は、受信処理を終了し、全て終了していない場合は、ステップS11に戻る。
【0274】
次に、受信側において、図42のステップS9〜S12の間に電源断などで転送が中断になった場合、受信側から送信側に対し差分転送の途中再送を依頼をする。この場合、まず受信側では図42の再スタートのフローチャートに従った次の処理を実行する。
S18:送信側に対して、差分転送の再開を依頼すると共に、新ファイル50に格納した旧ファイルの参照情報52および新ファイルの更新情報54を送信側に送る。
【0275】
これに対し送信側では図41の再スタートのフローチャートに従って次の処理を実行する。
S19:受信側からの差分転送の再開依頼を受けて、受信側から送られてきた前回の転送で実行された旧ファイルの参照情報52と新ファイルの更新情報54から、旧ファイル14および新ファイル16の再スタートする分割データを決めると共に、旧ファイルのポインタを参照最終アドレスに設定する。また受信側から送られてきた旧ファイルの参照情報52の中の参照回数N1〜Nnを参照情報処理部28の参照情報メモリに設定し、更にステップS1に戻る。
【0276】
このように新ファイルの差分展開の状況を知る旧ファイルの参照情報及び新ファイルの更新情報を受信側から受けて、送信側は中断した時点からの差分抽出を再開することができる。
【0277】
ここで図40の条件4の受信側となる携帯電話12におけるワークメモリ420に対する旧ファイル48の分割データの蓄積制御は、差分展開に伴う旧ファイル参照回数N1〜Nnの対応するカウントダウンで参照回数がゼロとなった分割データを消去して、次の分割データを蓄積する。
【0278】
具体的には、条件2のメモリ形態について示した図30における旧ファイル参照回数に伴うワークメモリ420に対する旧ファイル分割データの蓄積制御と同じになる。
【0279】
なお上記の実施形態にあっては、送信側となる基地局10で抽出した差分データをデータ圧縮部26で圧縮した後に伝送し、受信側の携帯電話12でデータ解凍部36が圧縮データを解凍しているが、このデータ圧縮部26とデータ解凍部36を設けずに差分データを直接伝送して、受信側で展開するようにしてもよい。
【0280】
また上記の実施形態は、無線回線を使用した携帯電話システムにおける差分転送を例に取るものであったが、本発明はこれに限定されず、インターネットなどのネットワークを利用した有線回線における差分転送及び適宜の機器間での差分転送に、そのまま適用できる。
【0281】
また上記の実施形態の送信側となる基地局10に設けた旧ファイル分割データを格納するワークメモリ18のメモリサイズとしては、旧ファイルのデータの新ファイルにおける移動位置が広範囲にわたる場合をカバーするためには、旧ファイル14の全データを格納できるメモリ容量を確保することが望ましい。通常、送信側については、基地局10のように比較的メモリ容量の確保が簡単にできることから、旧ファイル14の全データを格納可能なワークメモリ18が望ましい。
【0282】
また、上記の実施形態における条件2及び条件4に対応したメモリ形態における受信側の旧ファイルの分割データを格納するワークメモリ420につき、この実施形態にあっては、旧ファイル分割データを4つ分、格納可能なメモリ容量を例にとっているが、旧ファイルに対し新ファイル上で移動したデータが更に多い場合には、移動した新ファイルのデータを復元するための分割データの記憶領域の数を更に増やすようにしてもよい。
【0283】
(7.区画単位の差分転送)
図43は、新ファイルを一定サイズの区画に分けて差分抽出処理及び復元を行う本発明による第5実施形態のシステムブロック図である。
【0284】
図43において、この第5実施形態は、表1に対応した図39の条件4のメモリ形態に対応した差分転送のシステム構成と基本的に同じであり、特に受信側装置となる携帯電話12の組込システムにおける内蔵メモリの制限から、旧ファイルを一定のサイズ、例えば256KB単位に分割し、送信側の基地局10における差分抽出処理と携帯電話12側における差分データに基づく復元処理を行うようにしている。
【0285】
まず送信側装置となる基地局10には、ハードディスクドライブなどにより旧ファイル14と新ファイル16が保存されている。基地局10における差分データの生成は、旧ファイル14と新ファイル16から差分データを抽出して、伝送路32より携帯電話12に送ることを基本とする。このため基地局10には、区画データ読出部15、ワークメモリ20、差分抽出部22−1、ワークメモリ20,24及びデータ圧縮部26が設けられている。なお、データ圧縮部26は設けても良いし設けなくても良い。
【0286】
一方、受信側装置となる携帯電話12には、データ解凍部36、データ復元部82、ワークメモリ83、データ退避部84、復元データ書込部85、内部メモリ86、内部メモリ参照部88、ワークメモリ89及び退避データ参照部90が設けられている。尚、送信側にデータ圧縮部26がない場合、データ解凍部36は必要ない。
【0287】
基地局10における差分データの抽出処理は、新ファイル16を同一サイズ、例えば256KBの複数個の区画に分け、各区画ごとに旧ファイル14と新ファイル16の差分データを生成する。この差分データを生成する際に、新ファイルの現在処理対象となっている区画中のデータ列と一致するデータ列を旧ファイル14の探索で発見した場合、発見された旧ファイルの位置が新ファイルの対象区画の先頭位置に相当する旧ファイル14の位置より前方か後方かを判断する。
【0288】
旧ファイル中の一致位置が前方と判断した場合には、旧ファイルにおける発見位置と一致長を前方の対象区画の差分データに記述する。一方、後方と判断した場合には、旧ファイルの発見位置と一致長を対象区画の差分データに記述する。
【0289】
図44は、図43の基地局10における差分抽出処理の説明図である。新ファイル16は、一定サイズ、例えば256KBごとに複数の区画16−1,16−,2,…16−5に分けられている。
【0290】
この新ファイル16において、いま区画16−2が処理中であったとすると、区画16−2の先頭アドレスに対象ポインタP1をセットし、旧ファイル14についても同じ位置に参照ポインタQ1をセットし、各ポインタP1,Q1の指し示すデータ値、例えば1バイトデータが一致するか否かチェックする。一致していれば、この位置から後方に何バイト一致データが続くかを計測する。
【0291】
一方、新ファイル16の対象ポインタP1と同じ位置の旧ファイル14の参照ポインタQ1の指し示すデータ値が不一致であった場合には、図44の旧ファイル14の参照ポインタQ2のように旧ファイル14の最後尾にセットした後、前方へ移動させながら、新ファイル16の対象ポインタP1のデータ値との一致探索を行う。
【0292】
このような参照ポインタQ2の最後尾からの探索により、例えば旧ファイル14における区画16−2の先頭アドレスにセットした対象ポインタP1より前方の参照ポインタQ3の位置で各データ値が一致したとすると、この位置から後方に何バイトデータが一致するか探索し、例えば旧ファイル16のデータ列92と旧ファイル14のデータ列94の一致が計測される。
【0293】
このように、現在処理対象となっている区画16−2の先頭位置より前方の旧ファイル14にデータ列92に一致するデータ列94が発見された場合には、このデータ列94の参照ポインタQ3の先頭位置(先頭アドレス)と一致長を、新ファイル16の対応する区画16−1について抽出している差分データに記述する。
【0294】
図45は、図43の基地局10の差分抽出処理において、図44と同じ区画16−2の対象ポインタP1について旧ファイル14の最後尾にセットした参照ポインタQ2を前方に移動しながら一致探索を行った場合に、複数のデータ列94−1,94−2,94−3が発見された場合である。
【0295】
このように旧ファイル14の最後尾からの一致探索で複数のデータ列94−1〜94−3が発見された場合には、最後尾のデータ列94−1の位置と一致長を区画16−2の差分データの中に記述する。
【0296】
このように旧ファイルに対する最後尾からの一致探索で複数の一致データ列が発見された場合に、最後尾のデータ列について差分データを生成しておくことで、対象区画16−2の前方に一致データ列94−3が存在しても、これについて対応する前方の区画16−1の差分データの中に一致データ列の位置と一致長を記述し、これを受信装置側の携帯電話12で退避データとして扱う必要がなくなり、その分、後の説明で明らかにする受信装置側における退避データのメモリ領域を節減できる。
【0297】
一方、図43の受信側装置となる携帯電話12における復元処理は、基地局10から転送された各区間の差分データごとに、必要に応じて旧ファイルを参照して新ファイルを復元し、内部メモリ86に保存している旧ファイルの該当部分に上書きする。
【0298】
このため、内部メモリ86の旧ファイルに新ファイルの区画単位の上書きが行われると、上書きの済んだ区画については旧ファイルの内容を参照することができない。
【0299】
そこで本発明にあっては、ある区画について新ファイルを復元した際に、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在するか否かチェックし、参照されるデータ列が存在する場合は、参照される旧ファイルのデータ列をワークメモリ上の退避データ領域に退避させた後に、復元した新ファイルの区画の上書きを行い、この退避データに対し後続する区画の差分データによる旧ファイルの該当部分の参照を行わせる。
【0300】
図46は、図43の携帯電話12側における旧ファイルのデータ列を退避して参照する復元処理を示している。図46において、内部メモリ85に格納している旧ファイルについては、差分データに基づいて区画86−1,86−2,86−3,…ごとに、復元された新ファイルの上書きが順番に行われる。
【0301】
まず先頭の区画86−1について、差分データ22−11から図43のワークメモリ83,89で実現されるワークメモリ上に区画86−1分の新データ82−1が復元される。そして新データ82−1を内部メモリ86に上書きする前に、区画86−1の旧ファイルのデータ列の中に存在する後続する区画86−2,86−3,…で参照されるデータ列を退避データ84−1としてワークメモリに格納する。
【0302】
この退避データ84−1としてのデータ列は、区画86−1の差分データの中に図44に示したように、後続する区画で旧ファイルを参照することを前提に、参照対象となる旧ファイルのデータ列の位置と一致長が差分情報として記述されていることから、これに基づき内部メモリ86の上書き前の旧ファイルから該当するデータ列を読み出して、退避データ84−1としてワークメモリに格納する。
【0303】
次の区画86−2の復元処理にあっては、その差分データ22−12の中に前方の区画86−1に対応する旧ファイルのデータ列の参照を必要とする復元コードが含まれていた場合には、区画86−1の処理に際にワークメモリに格納された退避データ84−1を参照することで、既に上書きされた区画86−1の旧ファイルの中のデータ列をそのまま使った新データ82−2の復元が実現できる。
【0304】
もちろん区画86−2においても、それ以降の区画で参照するデータ列がある場合には、区画86−2の旧ファイルのデータ列に対する新データ82−2の上書きの前に、該当する斜線部のデータ列をワークメモリに退避データ84−2として格納する。
【0305】
図47は、図43の基地局10における差分抽出処理のフローチャートであり、この差分抽出処理を説明すると次のようになる。
S1:旧ファイル14をディスク等から読み出す
S2:新ファイル16から一定サイズのデータを読み出し、1つの区画x(x番目の区画)として定義する。
S3:データ比較対象ポインタPを区画xの先頭に、データ参照ポインタQを旧ファイルの先頭に設定する。
S4:データ比較対象ポインタPの指すデータ値、例えば1バイトデータ値とデータ参照ポインタQの指すデータ値を比較する。
S5:S4の比較でデータ値が同一であればS8へ進み、そうでなければS6へ進む。
S6:データ値が不一致であることから、旧ファイル14の最後尾から先頭に向かってデータ比較対象ポインタPの指すデータ値と一致する箇所を探索する。
S7:探索の結果、一致するデータが旧ファイル14中に発見されたならばS8へ進み、発見されなければS13へ進む。
S8:それぞれのポインタP,Qの位置からポインタを後方へ1バイトずつ移動させながらデータ値を比較し、データ値の一致が何バイト連続して起こるかを計測する。
S9:データ値が一致しなくなった時、最初にデータ値が一致したときのデータ参照ポインタQの位置とS6で計測した一致長を「複写コード」として差分データに出力する。
S10:データ参照ポインタが現在の対象区画xよりも前方にあるならばS11へ進み、そうでなければS12へ進む。
S11:データ参照ポインタQの位置とS6で計測した一致長を、データ参照ポインタQが位置している区画の差分データに追加記述する。
S12:データ比較対象ポインタPとデータ参照ポインタQを最後に一致したデータの位置へ移動させてS15へ進む。
S13:旧ファイルの最後尾からの検索で一致データが見つからなかった場合であり、データ比較対象ポインタPの指すデータ値は更新されて新規に現れたデータであると判定する。
S14:「更新コード」と更新後のデータを差分データに出力する。
S15:データ比較対象ポインタPを1バイト後方へ移動させる。
S16:データ比較対象ポインタPが区画xの最終位置に到達したならばS17へ進み、そうでなければS4へ戻る。
S17:区画xが新ファイルの最終区画でか否かチェックし、最終区画でなければS18へ進み、最終区画であれば差分抽出処理を終了する。
S18:次の区画を読み込み対象とするためxを1増加させてS2へ戻る。
【0306】
このように新ファイルの各区画に対する旧ファイルの一致検索の探索範囲を旧ファイル全体とすることで、旧ファイルの複写で新ファイルを復元する複写コードを多くし、転送すべき差分データのサイズを小さくすることができる。
【0307】
またS6の旧ファイルの最後尾からの一致検索により、もし、旧ファイルの中に一致データ値が複数分散していた場合、最も後方のデータ列の一致個所が選択され、受信装置側の復元処理において退避を必要とする上書き済みの旧ファイルの部分を参照する確率を低くし、復元時の退避データ領域を低減できる。
【0308】
図48は、図43の受信側装置である携帯電話12における差分抽出処理のフローチャートであり、この差分抽出処理を説明すると次のようになる。
S1:外部から転送された区画x用の差分データを保存する。
S2:転送された差分データからコードを1つ読み出す。
S3:読み出したコードが「複写コード」であればS4へ進み、「更新コード」であればS8へ進む。
S4:「複写コード」が指し示す旧データの参照位置が、区画xの先頭位置よりも前方にある場合は、すでに新データにより上書きされていることからS5へ進み、そうでなければS7へ進む。
S5:退避データの参照ポインタから「複写コード」が指し示す一致長分のデータをワークメモリに出力する。
S6:退避データの参照ポインタを一致長分後方へ移動させてS9へ進む。
S7:S4で「複写コード」が指し示す旧データの参照位置が、区画xの位置又は後方の場合であり、「複写コード」が指し示す旧データの参照位置から複写コードが指し示す一致長分のデータをワークメモリに出力してS9へ進む。
S8:S3で「更新コード」が判別された場合であり、「更新コード」が指し示す更新後データ(新データ)をワークメモリに出力する。
S9:差分データのコード読み取り位置を一つ後方へ移動させる。
S10:差分データのコード読み取り位置が差分データの最終であった場合はS11へ進み、そうでなければS2へ戻る。
S11:区画xのデータが上書きされる前に、区画x以降の区画の更新で参照される旧ファイルのデータ列を参照される順に退避データ格納領域へ格納する。
S12:ワークメモリに格納された復元データを内部メモリに格納された旧ファイルのx区画に上書きする。
S13:次の区画を読み込み対象とするためxを1増加させる。
S14:最終区画の処理完了の有無をチェックし、完了していなければS1に戻り、完了していた場合は終了する。
【0309】
これらの処理により、復元に使用するワークメモリは1つの区画サイズと退避領域分のみとなり、区画サイズを調整することによって携帯電話12の組み込みシステムが持つワークメモリの制限内で復元処理が可能となる。
【0310】
またS11の処理において退避すべきデータ列が旧ファイルの中に分散して複数組存在する場合でも、退避させるべきデータ列はデータ列の数だけ別に指定することで、連続してワークメモリの退避領域に格納され、確実に使用されるデータのみを退避するため、ワークメモリの使用効率が良い。
【0311】
また、退避データ格納の際に使用順に連続して格納していても、ポインタを利用することで、旧ファイルの参照を示した複写コードによって上書き前の旧ファイルのデータ列を簡単に得ることが可能となる。
【0312】
図49は、図43の第5実施形態の受信側装置となる携帯電話12について、差分データに基づく復元に先立って旧ファイルの区画を退避させるように変形した実施形態のシステムブロック図である。
【0313】
図49において、基地局10側は図43の実施形態と同じであるが、携帯電話12側について、データ復元部82の前にデータ退避部84を設け、データ解凍部36から得られた1区画分の差分データに対し、まず内部メモリ86の旧ファイルの区画部分をワークメモリ89に退避データとして格納した後、データ復元処理を行うようにしている。
【0314】
図50は、図49の第5実施形態の変形例における携帯電話12における復元処理のフローチャートであり、この復元処理は次のようになる。
S1:外部から転送された区画x用の差分データを保存する。
S2:区画x以降の区画の更新で参照される旧ファイルのデータ列を参照される順に退避データ格納領域へ格納する。
S3:転送された差分データからコードを1つ読み出す。
S4:読み出したコードが「複写コード」であればS5へ進み、「更新コード」であればS9へ進む。
S5:「複写コード」が指し示す旧データの参照位置が、区画xの先頭位置よりも前方にある場合は、すでに新データにより上書きされていることからS6へ進み、そうでなければS8へ進む。
S6:退避データの参照ポインタから「複写コード」が指し示す一致長分のデータをワークメモリに出力する。
S7:退避データの参照ポインタを一致長分後方へ移動させてS9へ進む。
S8:S5で「複写コード」が指し示す旧データの参照位置が、区画xの位置又は後方の場合であり、「複写コード」が指し示す旧データの参照位置から複写コードが指し示す一致長分のデータをワークメモリに出力してS10へ進む。
S9:S4で「更新コード」が判別された場合であり、「更新コード」が指し示す更新後データ(新データ)をワークメモリに出力する。
S10:差分データのコード読み取り位置を一つ後方へ移動させる。
S11:差分データのコード読み取り位置が差分データの最終であった場合はS12へ進み、そうでなければS3へ戻る。
S12:ワークメモリに格納された復元データを内部メモリに格納された旧ファイルのx区画に上書きする。
S13:次の区画を読み込み対象とするためxを1増加させる。
S14:最終区画の処理完了の有無をチェックし、完了していなければS1に戻り、完了していた場合は終了する。
【0315】
この図50の復元処理のフローチャートと図48の復元処理のフローチャートの相違は、図50の復元処理にあってはステップS2で現在処理対象となっている区画xについて使用される旧ファイルのデータを退避領域に格納しているのに対し、図48の実施形態にあっては区画xの新ファイルのデータをステップS1で上書きする前のステップS10で、後続する復元処理で参照される旧ファイルのデータを退避領域へ格納するようにしている点である。
【0316】
図51は、本発明による差分抽出処理の第6実施形態のフローチャートであり、この第6実施形態にあっては差分抽出の際の旧ファイルの一致探索を旧ファイルの最後尾から対象区画における先頭アドレスの前方nバイトまでとしたことを特徴とする。
【0317】
図52は、図51の第6実施形態における差分抽出処理の際の旧ファイルの一致探索範囲を示している。いま新ファイル16の区画16−2の処理を行っており、区画16−2の先頭に対象ポインタP1をセットした状態で、旧ファイル14の同一位置にセットした参照ポインタQ1との間でデータ値が不一致であった場合には、旧ファイル14の最後尾に参照ポインタQふとしてセットした後に前方に一致探索を行うが、この一致探索は対象区画16−2の対象ポインタP1による先頭アドレスの前方の予め定めたnバイトまでとする。
【0318】
そして、この前方nバイトの探索範囲内に、もし新ファイル16のデータ列92に一致するデータ列94が発見された場合には、発見したデータ列94の参照ポインタQあの位置と一致長を新ファイル16の対応する区画16−1の差分データに記述する。
【0319】
このように旧ファイルの探索範囲を最後尾から処理対象区画先頭アドレスの前方nバイトに定めた図51の第6実施形態における差分抽出処理を、図51のフローチャートを参照して説明すると、次のようになる。
S1:旧ファイル14をディスク等から読み出す。
S2:新ファイル16から一定サイズのデータを読み出し、1つの区画x(x番目の区画)として定義する。
S3:データ比較対象ポインタPを区画xの先頭に、データ参照ポインタQを旧ファイルの先頭に設定する。
S4:データ比較対象ポインタPの指すデータ値、例えば1バイトデータ値とデータ参照ポインタQの指すデータ値を比較する。
S5:S4の比較でデータ値が同一であればS8へ進み、そうでなければS6へ進む。
S6:データ値が不一致であることから、旧ファイル14の最後尾から区画xの先頭アドレスよりnバイト前方の位置に向かってデータ比較対象ポインタPの指すデータ値と一致する箇所を探索する。
S7:探索の結果、一致するデータが旧ファイル14中に発見されたならばS8へ進み、発見されなければS11へ進む。
S8:それぞれのポインタP,Qの位置からポインタを後方へ1バイトずつ移動させながらデータ値を比較し、データ値の一致が何バイト連続して起こるかを計測する。
S9:データ値が一致しなくなった時、最初にデータ値が一致したときのデータ参照ポインタQの位置とS6で計測した一致長を「複写コード」として差分データに出力する。
S10:データ参照ポインタを最後に一致したデータの位置へ移動させ、S13に進む。
S11:旧ファイルの最後尾からの検索で一致データが見つからなかった場合であり、データ比較対象ポインタPの指すデータ値は更新されて新規に現れたデータであると判定する。
S12:「更新コード」と更新後のデータを差分データに出力する。
S13:データ比較対象ポインタPを1バイト後方へ移動させる。
S14:データ比較対象ポインタPが区画xの最終位置に到達したならばS15へ進み、そうでなければS4へ戻る。
S15:区画xが新ファイルの最終区画でか否かチェックし、最終区画でなければS16へ進み、最終区画であれば差分抽出処理を終了する。
S16:次の区画を読み込み対象とするためxを1増加させてS2へ戻る。
【0320】
このように新ファイルの各区画に対する旧ファイルの一致検索の探索範囲を旧ファイルの最後尾から対象区画の先頭アドレスよりnバイト前方の位置までとすることで、旧ファイルの複写で新ファイルを復元する複写コードを多くし、転送すべき差分データのサイズを小さくすることができる。
【0321】
またS6の旧ファイルの最後尾からの一致検索により、もし、旧ファイルの中に一致データ値が複数分散していた場合、最も後方のデータ列の一致個所が選択され、受信装置側の復元処理において退避を必要とする上書き済みの旧ファイルの部分を参照する確率を低くし、復元時の退避データ領域を低減できる。特に、旧ファイルと新ファイルのずれがnバイト以内であれば、無駄のない差分データの生成が可能となる。
【0322】
図53は、図51の第6実施形態の差分抽出処理により生成された差分データの転送に対し、受信側装置としての携帯電話12で行う復元処理のフローチャートである。この図53のフローチャートの復元処理は、図54に示すような旧ファイルのデータ列を退避して参照する復元処理となる。
【0323】
図54において、内部メモリ86については、一定サイズ例えば256KBの区画86−1,86−2,86−3,…ごとに復元処理を、各区画の差分データ22−11,22−12,22−13…を使用して行い、区画ごとに新データ82−1,82−2,82−3,…を作成し、これを内部メモリ86の旧ファイルの対応部分に上書きする。
【0324】
内部メモリ86の各区画86−1,86−2,86−3,…に対する新データ82−1,82−2,82−3,…の上書きに先立ち、この第6実施形態にあっては、例えば先頭の区画86−1を例にとると、次の区画86−2の境界から前方にnバイトの旧ファイルのデータを退避データ84−1としてワークメモリ83,89の退避領域に格納する。
【0325】
ここで次の区画の境界から前方へnバイトの旧ファイルのデータ領域について、後続する区画で参照するデータが必ず入っている。これは図52の抽出処理において旧ファイルの一致探索範囲を対象区画の先頭アドレスから前方へnバイトの範囲に限定していることによる。
【0326】
したがって、受信側のワークメモリ83,89における退避データの格納サイズは、区画数にnバイトを掛けた固定サイズとして確保すればよい。具体的には、ワークメモリで使用可能な退避データ格納領域のサイズが決まっていることから、この退避領域のサイズを区画数で割ることで、nバイトの値が一義的に決まることになる。
【0327】
そこで図53のフローチャートを参照して第6実施形態における復元処理を説明すると、次のようになる。
S1:外部から転送された区画x用の差分データを保存する。
S2:転送された差分データからコードを1つ読み出す。
S3:読み出したコードが「複写コード」であればS4へ進み、「更新コード」であればS7へ進む。
S4:「複写コード」が指し示す旧データの参照位置が、区画xの先頭位置よりも前方にある場合は、すでに新データにより上書きされていることからS5へ進み、そうでなければS6へ進む。
S5:(退避データ格納先アドレス)+{(複写コードが指し示す複写参照元アドレス)−(区画xの先頭よりnバイト前方のアドレス)}の位置から複
【0328】
写コードが指し示す一致長分のデータをワークメモリに出力してS8へ進む。
S6:S4で「複写コード」が指し示す旧データの参照位置が、区画xの位置又は後方の場合であり、「複写コード」が指し示す旧データの参照位置から複写コードが指し示す一致長分のデータをワークメモリに出力してS8へ進む。
S7:S3で「更新コード」が判別された場合であり、「更新コード」が指し示す更新後データ(新データ)をワークメモリに出力する。
S8:差分データのコード読み取り位置を一つ後方へ移動させる。
S9:差分データのコード読み取り位置が差分データの最終であった場合はS10へ進み、そうでなければS2へ戻る。
S10:区画xのデータが上書きされる前に、区画xの最後尾からnバイト分のデータを退避データ格納領域へ格納する。
S11:ワークメモリに格納された復元データを内部メモリに格納された旧ファイルのx区画に上書きする。
S12:次の区画を読み込み対象とするためxを1増加させる。
S13:最終区画の処理完了の有無をチェックし、完了していなければS1に戻り、完了していた場合は終了する。
【0329】
これらの処理により、復元に使用するワークメモリは1つの区画サイズとnバイト固定の退避領域分のみとなり、区画サイズを調整することによって携帯電話12の組み込みシステムが持つワークメモリの制限内で復元処理が可能となる。
【0330】
またS5の処理において、内部メモリのアドレスと退避データ領域との対応つけのみで、簡単に上書き前の旧ファイルのデータを参照できる。
【0331】
更にS11の処理において、退避データ格納サイズはnバイト固定であるため、どの部分のデータを退避させたかという管理情報が不要となり、情報量を低減して管理を容易にする。
【0332】
図55は、図53の第6実施形態の復元処理について、復元に先立って旧ファイルのnバイトの区画を退避するように変形した実施形態のフローチャートである。この第6実施形態の復元処理の変形処理は次のようになる。
S1:外部から転送された区画x用の差分データを保存する。
S2:区画xの最後尾からnバイト分のデータを退避データ格納領域へ格納する。
S3:転送された差分データからコードを1つ読み出す。
S4:読み出したコードが「複写コード」であればS5へ進み、「更新コード」であればS9へ進む。
S5:「複写コード」が指し示す旧データの参照位置が、区画xの先頭位置よりも前方にある場合は、すでに新データにより上書きされていることからS6へ進み、そうでなければS7へ進む。
S6:(退避データ格納先アドレス)+{(複写コードが指し示す複写参照元アドレス)−(区画xの先頭よりnバイト前方のアドレス)}の位置から複
【0333】
写コードが指し示す一致長分のデータをワークメモリに出力してS9へ進む。
S7:S5で「複写コード」が指し示す旧データの参照位置が、区画xの位置又は後方の場合であり、「複写コード」が指し示す旧データの参照位置から複写コードが指し示す一致長分のデータをワークメモリに出力してS9へ進む。
S8:S4で「更新コード」が判別された場合であり、「更新コード」が指し示す更新後データ(新データ)をワークメモリに出力する。
S9:差分データのコード読み取り位置を一つ後方へ移動させる。
S10:差分データのコード読み取り位置が差分データの最終であった場合はS11へ進み、そうでなければS3へ戻る。
S11:ワークメモリに格納された復元データを内部メモリに格納された旧ファイルのx区画に上書きする。
S12:次の区画を読み込み対象とするためxを1増加させる。
S13:最終区画の処理完了の有無をチェックし、完了していなければS1に戻り、完了していた場合は終了する。
【0334】
この図55の実施形態は、ステップS2で差分データからの復元に先立って対象区画xの最終位置から前方nバイト分のデータを退避領域に格納しており、これに対し図53の実施形態では、ステップS11で、復元したデータを旧ファイルに上書きする前のステップS10で処理対象となる区画xの最終位置から前方nバイト分のデータを退避領域に格納している点が相違している。
【0335】
なお図43〜図55の実施形態にあっては、差分データとして「複写コード」と「更新コード」の2つを用いる場合を例にとるものであったが、その代わりに第1〜第4実施形態において使用している図4のような差分制御コードを用いるようにしてもよいことはもちろんである。
【0336】
また、図47,図48,図50,図51,図53及び図55のフローチャートに示した各処理は、差分抽出処理並びに復元処理の処理プログラムそのものを表わしており、これをコンピュータにより実行することで、本発明による差分転送が実現できる。
【0337】
また本発明は、その目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【0338】
(付記)
(付記1)
送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法に於いて、
送信側で、旧ファイルと新ファイルの差分データを抽出する際に採取した旧ファイルの参照情報を差分データと共に受信側に転送し、
受信側では、旧ファイルと差分データから新ファイルを展開する際に、差分展開の進捗の状況で変化する前記旧ファイルの参照情報及び新ファイルの更新情報を、新ファイルのデータと共に蓄積することを特徴とする差分転送方法。(1)
【0339】
(付記2)
付記1記載の差分転送方法に於いて、送信側或いは受信側のトラブルで差分転送が途中で途絶えた場合に、
受信側では、転送が途絶えるまで、旧ファイルと差分データから新ファイル展開する際に蓄積していた旧ファイルの参照情報及び新ファイルの更新情報を送信側に送って途中からの差分展開を依頼し、
送信側では、受信側から送られた旧ファイルの参照情報及び新ファイルの更新情報を基に、再送するための旧ファイル及び新ファイルのスタートポイントを設定した後、差分転送を再開することを特徴とする差分転送方法。
【0340】
(付記3)
付記1記載の差分転送方法に於いて、
前記旧ファイルの参照情報を、旧ファイルの分割データ毎に参照される参照回数及び最終に参照された旧ファイルの最終参照アドレスとし、
前記新ファイルの更新情報を、新ファイルを分割したブロックデータ分で更新される更新回数及び最終に更新された新ファイルの最終更新アドレスとすることを特徴とする差分転送方法。
【0341】
(付記4)
送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法に於いて、
送信側は、
旧ファイルと新ファイルを一定サイズの分割データに分けて蓄積するファイル蓄積ステップと、
旧ファイルと新ファイルを読出し、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備え、
受信側は、
旧ファイルとを一定メモリサイズの分割データに分けて蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を確保する蓄積ステップと、
前記差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
前記新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを蓄積する新ファイル蓄積ステップと、
を備えたことを特徴とする差分転送方法。(2)
【0342】
(付記5)
付記4記載の差分転送方法に於いて、
前記受信側は、更に、前記差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを読み出して送信側に再転送を要求する再転送要求ステップを備え、
前記送信側は、更に、前記受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップとを備えたことを特徴とする差分転送方法。
【0343】
(付記6)
付記4記載の差分転送方法に於いて、前記受信側は、送信側から再転送された差分データに基づく旧ファイルの参照で再転送による最初の新ファイル分割データを展開した場合、中断前の最後に蓄積された新ファイル分割データ更新回数と新ファイル最終更新アドレスに基づく蓄積再開位置に再送により最初に展開された新ファイル分割データを蓄積する蓄積再開ステップを備えたことを特徴とする差分転送方法。
【0344】
(付記7)
付記4記載の差分転送方法に於いて、前記受信側は外部に送信する差分データを圧縮する圧縮ステップを備え、前記送信側は受信した圧縮差分データを解凍する解凍ステップを備えたことを特徴とする差分転送方法。
【0345】
(付記8)
送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法に於いて、
信側に、旧ファイルを格納する第1不揮発メモリ、新ファイルを格納する第2不揮発メモリ、旧ファイルのデータを一括して一時蓄積する第1揮発メモリ、新ファイルのデータを分割データ単位で順次読み出し一時蓄積する第2揮発メモリを少なくとも設けた場合、
前記送信側は、
旧ファイルと新ファイルを一定サイズの分割データに分けて前記第1及び第2不揮発メモリに別々に蓄積するファイル蓄積ステップと、
旧ファイルを一括して読み出して前記第1揮発メモリに一時蓄積すると共に新ファイルを分割データ単位に順次読出して前記順次第2揮発メモリに一時蓄積し、前記第2揮発メモリに一時蓄積している処理対象の新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備え、
受信側に、旧ファイルを格納する第3不揮発メモリ、新ファイルを格納する第4不揮発メモリ、旧ファイルのデータを一括して一時蓄積する第3揮発メモリを少なくとも設けた場合、
受信側は、
旧ファイルを一定メモリサイズの分割データに分けて前記第3不揮発メモリに蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を前記第4不揮発メモリに確保する蓄積ステップと、
前記差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、前記第3揮発メモリに一時蓄積している同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
前記新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する旧ファイル参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを前記第4不揮発メモリに蓄積する新ファイル蓄積ステップと、
を備えことを特徴とする差分転送方法。
【0346】
(付記9)
付記8記載の差分転送方法に於いて、
前記受信側は、更に、前記差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを前記第4不揮発メモリから読み出して送信側に再転送を要求する再転送要求ステップを備え、
前記送信側は、更に、前記受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより前記第1揮発メモリにおける旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより前記第2揮発メモリにおける新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップとを備えたことを特徴とする差分転送方法。
【0347】
(付記10)
送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法に於いて、
送信側に、旧ファイルを格納する第1不揮発メモリ、新ファイルを格納する第2不揮発メモリ、旧ファイルのデータを分割データ単位で順次読み出して一時蓄積する第1揮発メモリ、新ファイルのデータを分割データ単位で順次読み出し一時蓄積する第2揮発メモリを少なくとも設けた場合、
前記送信側は、
旧ファイルと新ファイルを一定サイズの分割データに分けて前記第1及び第2不揮発メモリに別々に蓄積するファイル蓄積ステップと、
旧ファイルを分割データ単位に順次読み出して前記第1揮発メモリに一時蓄積すると共に新ファイルを分割データ単位に順次読み出して前記第2揮発メモリに一時蓄積し、前記第2揮発メモリに一時蓄積している処理対象の新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備え、
受信側に、旧ファイルを格納する第3不揮発メモリ、新ファイルを格納する第4不揮発メモリ、旧ファイルのデータを分割データ単位で順次読み出して一時蓄積する少なくとも4分割データ分の容量を備えた第3揮発メモリを少なくとも設けた場合、
受信側は、
旧ファイルを一定メモリサイズの分割データに分けて前記第3不揮発メモリに蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を前記第4不揮発メモリに確保する蓄積ステップと、
前記差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、前記第3揮発メモリに一時蓄積している同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
前記新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する旧ファイル参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを前記第4不揮発メモリに蓄積する新ファイル蓄積ステップと、
を備えたことを特徴とする差分転送方法。
【0348】
(付記11)
付記10記載の差分転送方法に於いて、前記受信側の差分展開ステップは、展開中に前記旧ファイル参照回数がゼロとなった旧ファイル分割データを前記第3揮発メモリから消去し、新たな旧ファイル分割データを前記第3不揮発メモリから読出して一時蓄積することを特徴とする差分転送方法。
【0349】
(付記12)
付記10記載の差分転送方法に於いて、
前記受信側は、更に、前記差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを前記第4不揮発メモリから読み出して送信側に再転送を要求する再転送要求ステップを備え、
前記送信側は、更に、前記受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより前記第1揮発メモリにおける旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより前記第2揮発メモリにおける新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップとを備えたことを特徴とする差分転送方法。
【0350】
(付記13)
送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法に於いて、
送信側に、旧ファイルを格納する第1不揮発メモリ、新ファイルを格納する第2不揮発メモリ、旧ファイルのデータを一括して一時蓄積する第1揮発メモリ、新ファイルのデータを分割データ単位で順次読み出し一時蓄積する第2揮発メモリを少なくとも設けた場合、 前記送信側は、
旧ファイルと新ファイルを一定サイズの分割データに分けて前記第1及び第2不揮発メモリに別々に蓄積するファイル蓄積ステップと、
旧ファイルを一括して読み出して前記第1揮発メモリに一時蓄積すると共に新ファイルを分割データ単位に順次読出して前記順次第2揮発メモリに一時蓄積し、前記第2揮発メモリに一時蓄積している処理対象の新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備え、
受信側に、旧ファイルを格納すると共に新ファイルを旧ファイルの上書きにより格納する新旧ファイル兼用の第3不揮発メモリ、及び旧ファイルのデータを一括して一時蓄積する第3揮発メモリを少なくとも設けた場合、
受信側は、
旧ファイルを一定メモリサイズの分割データに分けて前記第3不揮発メモリに蓄積する蓄積ステップと、
前記差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、前記第3揮発メモリに一時蓄積している同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
前記新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する旧ファイル照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データを前記第3不揮発メモリの参照済みの旧ファイル分割データに上書きして蓄積すると共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを前記第3不揮発メモリに蓄積する新ファイル蓄積ステップと、
を備えたことを特徴とする差分転送方法。
【0351】
(付記14)
付記13記載の差分転送方法に於いて、
前記受信側は、更に、前記差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを前記第3不揮発メモリから読み出して送信側に再転送を要求する再転送要求ステップを備え、
前記送信側は、更に、前記受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより前記第1揮発メモリにおける旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより前記第2揮発メモリにおける新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップとを備えたことを特徴とする差分転送方法。
【0352】
(付記15)
送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法に於いて、
送信側に、旧ファイルを格納する第1不揮発メモリ、新ファイルを格納する第2不揮発メモリ、旧ファイルのデータを分割データ単位で順次読み出して一時蓄積する第1揮発メモリ、新ファイルのデータを分割データ単位で順次読み出し一時蓄積する第2揮発メモリを少なくとも設けた場合、
前記送信側は、
旧ファイルと新ファイルを一定サイズの分割データに分けて前記第1及び第2不揮発メモリに別々に蓄積するファイル蓄積ステップと、
旧ファイルを分割データ単位に順次読み出して前記第1揮発メモリに一時蓄積すると共に新ファイルを分割データ単位に順次読み出して前記第2揮発メモリに一時蓄積し、前記第2揮発メモリに一時蓄積している処理対象の新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備え、
受信側に、旧ファイルを格納すると共に新ファイルを旧ファイルの上書きにより格納する新旧ファイル兼用の第3不揮発メモリ、及び旧ファイルのデータを一括して一時蓄積する少なくとも4分割データ分の容量を備えた第3揮発メモリを少なくとも設けた場合、
受信側は、
旧ファイルとを一定メモリサイズの分割データに分けて前記第3不揮発に蓄積する蓄積ステップと、
前記差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、前記第3揮発メモリに一時蓄積している同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
前記新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する旧ファイル参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データを前記第3不揮発メモリの参照済みの旧ファイル分割データに上書きして蓄積すると共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを前記第3不揮発メモリに蓄積する新ファイル蓄積ステップと、
を備えたことを特徴とする差分転送方法。
【0353】
(付記16)
付記15記載の差分転送方法に於いて、前記受信側の差分展開ステップは、展開中に旧ファイル参照回数がゼロとなった旧ファイル分割データを前記第3揮発メモリから消去し、新たな旧ファイル分割データを前記第3不揮発メモリから読出して一時蓄積することを特徴とする差分転送方法。
【0354】
(付記17)
付記15記載の差分転送方法に於いて、
前記受信側は、更に、前記差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを前記第3不揮発メモリから読み出して送信側に再転送を要求する再転送要求ステップを備え、
前記送信側は、更に、前記受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより前記第1揮発メモリにおける旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより前記第2揮発メモリにおける新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップとを備えたことを特徴とする差分転送方法。
【0355】
(付記18)
新旧2つのファイルから差分データを生成して送信する差分転送方法に於いて、
旧ファイルと新ファイルを一定サイズの分割データに分けて蓄積するファイル蓄積ステップと、
旧ファイルと新ファイルを読出し、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
転送先から処理中断後の再転送要求を受けた際に、前記転送先から送られてきた中断までの進捗状態を示す旧ファイル参照情報で前記旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップと、
を備えたことを特徴とする差分転送方法。
【0356】
(付記19)
送信側から、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより生成された差分データと、前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を受信し、予め蓄積している旧ファイルから受信した差分データ及び旧ファイル参照情報に基づいて新ファイルを展開する差分転送方法に於いて、
旧ファイルを一定メモリサイズの分割データに分けて蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を確保する蓄積ステップと、
前記差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
前記新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを蓄積する新ファイル蓄積ステップと、
前記差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを読み出して送信側に再転送を要求して中断時点からの差分データ及び旧ファイル参照情報を再転送させる再転送要求ステップと、
を備えたことを特徴とする差分転送方法。
【0357】
(付記20)
コンピュータに、
新旧2つのファイルから差分データを生成して送信するコンピュータに、
旧ファイルと新ファイルを一定サイズの分割データに分けて蓄積するファイル蓄積ステップと、
旧ファイルと新ファイルを読出し、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
転送先から処理中断後の再転送要求を受けた際に、前記転送先から送られてきた中断までの進捗状態を示す旧ファイル参照情報で前記旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより新ファイル再開位置を設定した後に、差分転送を再開する再転送ステップと、
を実行させることを特徴とするプログラム。
【0358】
(付記21)
コンピュータに、
送信側から、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより生成された差分データと、前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を受信し、予め蓄積している旧ファイルから受信した差分データ及び旧ファイル参照情報に基づいて新ファイルを展開するコンピュータに、
旧ファイルとを一定メモリサイズの分割データに分けて蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を確保する蓄積ステップと、
前記差分データ及び旧ファイル参照情報を受信する受信ステップと、
処理対象としている新ファイル分割データの差分データに対し、同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
前記新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを蓄積する新ファイル蓄積ステップと、
前記差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを読み出して送信側に再転送を要求して中断時点からの差分データ及び旧ファイル参照情報を再転送させる再転送要求ステップと、
を実行させることを特徴とするプログラム。
【0359】
(付記22)
送信装置で新旧2つのファイルから差分データを生成して送信し、受信装置で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送システムに於いて、
前記送信装置は、
旧ファイルと新ファイルを一定サイズの分割データに分けて蓄積するファイル蓄積部と、
旧ファイルと新ファイルを読出し、処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成部と、
前記差分データ及び旧ファイル参照情報を外部に送信する送信部と、
を備え、
受信装置は、
旧ファイルとを一定メモリサイズの分割データに分けて蓄積すると共に、展開した新ファイルを分割データ単位で蓄積可能な領域を確保する蓄積部と、
前記差分データ及び旧ファイル参照情報を受信する受信部と、
処理対象としている新ファイル分割データの差分データに対し、同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開部と、
前記新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する参照回数を減算して更新する参照情報更新部と、新ファイル分割データの展開を終了する毎に、展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを蓄積する新ファイル蓄積部と、
を備えたことを特徴とする差分転送システム。
【0360】
(付記23)
付記22記載の差分転送システムに於いて、
前記受信装置は、更に、前記差分データに基づき旧ファイルから新ファイルの展開中に処理が中断した場合、処理再開時に、中断前の最後に蓄積された旧ファイル参照情報、旧ファイル最終参照アドレス及び新ファイル最終更新アドレスを読み出して送信側に再転送を要求する再転送要求部を備え、
前記送信装置は、更に、前記受信側からの再転送要求で送られてきた旧ファイル参照情報により中断前の旧ファイル参照情報を更新し、旧ファイル最終参照アドレスにより旧ファイル再開位置を設定し、新ファイル最終更新アドレスにより新ファイル再開位置を設定した後に、差分転送を再開する再転送実行部とを備えたことを特徴とする差分転送システム。
【0361】
(付記24)
送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送方法に於いて、
送信側装置により、新ファイルを同一サイズの複数個の区画に分け、各区画毎に旧ファイルと新ファイルの差分データをする際に、前記区画中のデータ列と一致するデータ列を旧ファイルの探索で発見した場合、発見された位置が前記対象区画の先頭位置に相当する旧ファイルの位置より前方か後方かを判断し、前方と判断した場合は、発見位置と一致長を前方の対象区画の差分データに記述し、後方と判断した場合は、発見位置と一致長を前記対象区画の差分データに記述し、
受信側装置により、旧ファィルと差分データから各区画毎に新ファイルを復元して前記旧ファイルの該当部分に上書きする際に、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、参照される前記データ列を退避させた後に上書きを行い、退避データに対し後続する区画の差分データによる旧ファイルの該当部分を参照させることを特徴とする差分転送方法。(3)
【0362】
(付記25)
付記24記載の差分転送方法に於いて、
前記送信側装置により、新ファイルの対象区画中のデータ列と一致するデータ列の探索を、旧ファイルの全範囲について行い、
前記受信側装置により、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、旧ファイルの参照されるデータ列の部分のみを退避させることを特徴とする差分転送方法。(4)
【0363】
(付記26)
付記24記載の差分転送方法に於いて、
前記送信側装置により、新ファイルの対象区画中のデータ列と一致するデータ列の探索を、前記対象区画の先頭位置に相当する旧ファイルの位置よりもnバイト前方から旧ファイルの最後尾までの範囲について行い、
前記受信側装置により、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、次の区画との境界位置から前方nバイト分に相当する旧ファイルのデータ列を退避させることを特徴とする差分転送方法。(5)
【0364】
(付記27)
付記25又は26記載の差分転送方法に於いて、前記受信側装置により、各区画毎に復元した新ファイルを旧ファイルの該当部分に上書きする直前に、旧ファイルの該当部分のデータ列を退避させることを特徴とする差分転送方法。
【0365】
(付記28)
付記25又は26記載の差分転送方法に於いて、前記受信側装置により、各区画毎に新ファイルの復元を開始する前に、旧ファイルの該当部分のデータ列を退避させることを特徴とする差分転送方法。
【0366】
(付記29)
付記24記載の差分転送方法に於いて、前記受信側装置により、
新ファイルの区画中のデータ列と一致するデータ列を旧ファイルの探索で複数発見した場合、最も後方の一致データを選択して発見位置と一致長を差分データに記述することを特徴とする差分転送方法。
【0367】
(付記30)
新旧2つのファイルから差分データを生成して送信する送信側のコンピュータに、
新ファイルを同一サイズの複数個の区画に分けるステップと、
各区画毎に旧ファイルと新ファイルの差分データをする際に、前記区画中のデータ列と一致するデータ列を旧ファイルの探索で発見するステップと、
前記一致データ列を発見した場合、発見された位置が前記対象区画の先頭位置に相当する旧ファイルの位置より前方か後方かを判断するステップと、
前方と判断した場合は、発見位置と一致長を前方の対象区画の差分データに記述し、後方と判断した場合は、発見位置と一致長を前記対象区画の差分データに記述するステップと、
を実行させることを特徴とするプログラム。
【0368】
(付記31)
蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開するコンピュータに、
旧ファィルと差分データから各区画毎に新ファイルを復元するステップと、
復元した各区画の新ファイルを前記旧ファイルの該当部分に上書きする際に、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、参照される前記データ列を退避させた後に上書きを行い、退避データに対し後続する区画の差分データによる旧ファイルの該当部分を参照させるステップと、
を実行させることを特徴とするプログラム。
【0369】
(付記32)
送信側で新旧2つのファイルから差分データを生成して送信し、受信側で蓄積している旧ファイルから受信した差分データに基づいて新ファイルを展開する差分転送システムに於いて、
新ファイルを同一サイズの複数個の区画に分け、各区画毎に旧ファイルと新ファイルの差分データをする際に、前記区画中のデータ列と一致するデータ列を旧ファイルの探索で発見した場合、発見された位置が前記対象区画の先頭位置に相当する旧ファイルの位置より前方か後方かを判断し、前方と判断した場合は、発見位置と一致長を前方の対象区画の差分データに記述し、後方と判断した場合は、発見位置と一致長を前記対象区画の差分データに記述する送信側装置と、
旧ファィルと差分データから各区画毎に新ファイルを復元して前記旧ファイルの該当部分に上書きする際に、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、参照される前記データ列を退避させた後に上書きを行い、退避データに対し後続する区画の差分データによる旧ファイルの該当部分を参照させる受信側装置と、を備えたことを特徴とする差分転送システム。
【0370】
【発明の効果】
以上説明してきたように本発明によれば、送信側で作られた差分データの旧ファイル参照情報を基に、受信側で旧ファイルの参照状況及び新ファイルの更新状況を不揮発メモリに格納し、どこまで差分展開が実行されたかの進捗状態を逐次把握していくことで、受信側の電源トラブルなどにより転送が中断しても、トラブル回復後に前回の中断時点からの差分転送を再開することができ、差分転送の中断が起きても通信コストの増加を最小限に抑えることができる。
【0371】
また、差分転送に使用している揮発メモリ及び不揮発メモリに余裕のない条件、例えば受信側が携帯電話などでメモリに余裕がなく、新旧同ファイルとした兼用ファイルの不揮発メモリで旧ファイルを一時蓄積する揮発メモリの容量が少なくとも、旧ファイル参照回数のダウンカウントでゼロとなった旧ファイル分割データの書換え制御を行うことで、旧ファイルを一時蓄積するメモリ容量が少なくとも旧ファイルの参照領域を広範囲に取ることができ、旧ファイルの前後を参照して移動したデータの差分データを生成する際のデータ削減効率を十分に高く確保することができる。
【0372】
また本発明によれば、一定サイズの区画単位で差分データと旧ファイルから新データを復元できるため、受信側装置が携帯電話の組込システムのように、利用できるワークメモリや内部メモリが少なく通信速度も低速な環境であっても、メモリ容量の制約を受けることなく、適切に差分データから新ファイルを生成して旧ファイルを更新することができる。
【0373】
また、受信側装置にあっては、区画ごとに新ファイルのデータを復元して旧ファイルを上書きするが、この上書きに先立って旧ファイルの後続の差分データによる参照部分を退避しておくことで、新ファイルの上書きにより消えた旧ファイルの部分についても、後続する差分データの処理で旧ファイルのデータを参照することができ、これによって、送信側装置で抽出する差分データのサイズを小さくし、通信速度が低速であっても効率良く新ファイルへの更新ができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】条件1に対応したメモリ形態をもつ本発明による第1実施形態のシステムブロック図
【図3】図2の条件1による差分転送の機能構成のブロック図
【図4】本発明で生成する差分制御コードの説明図
【図5】本発明の差分データ生成処理の概略フローチャート
【図6】本発明で処理可能な新旧ファイルパターンの説明図
【図7】図8の新旧ファイルを対象とした本発明のポインタ制御による差分生成処理の説明図
【図8】図7の処理で生成された差分データファイルの説明図
【図9】本発明における一致部分2段階判定の説明図
【図10】本発明における他の一致部分2段階判定の説明図
【図11】本発明で置換処理を行う新旧ファイルパターンの説明図
【図12】図11の新旧ファイルを対象とした本発明のポインタ制御による差分生成処理の説明図
【図13】図12の処理で生成された差分データファイルの説明図
【図14】同じ値を持つ差分データに対する本発明の置換処理の説明図
【図15】本発明でデータ削除の移動処理を行う新旧ファイルパターンの説明図
【図16】図15の新旧ファイルを対象とした本発明のポインタ制御による差分生成処理の説明図
【図17】図16の処理で生成された差分データファイルの説明図
【図18】本発明でデータ挿入の移動処理を行う新旧ファイルパターンの説明図
【図19】図18の新旧ファイルを対象とした本発明のポインタ制御による差分生成処理の説明図
【図20】図19の処理で生成された差分データファイルの説明図
【図21】図3の差分抽出処理における参照回数のカウントによる旧ファイル参照情報の生成の説明図
【図22】図21の差分抽出処理で生成された旧ファイル参照情報の
【図23】図3の差分展開処理における参照回数のカウントダウンによる旧ファイル参照情報の生成の説明図
【図24】図23の差分展開処理における初期の旧ファイル参照情報と展開途中の旧ファイル参照情報の説明図
【図25】図3の差分展開処理で新ファイルに格納される新ファイル分割データ、旧ファイル参照情報および新ファイル更新情報の説明図
【図26】図3の第1実施形態における送信側の差分抽出と中断による再転送のフローチャート
【図27】図3の第1実施形態における受信側の差分展開と中断による再転送要求のフローチャート
【図28】条件2に対応したメモリ形態をとる本発明による第2実施形態のシステムブロック図
【図29】図2の第2実施形態による差分転送の機能構成のブロック図
【図30】図29の受信側における旧ファイルの参照による参照回数のダウンカウントに基づく旧ファイル分割データを一時記憶するメモリ制御の説明図
【図31】旧ファイルのデータを正方向に移動した場合の差分展開におけるメモリ制御の説明図
【図32】旧ファイルのデータを負方向に移動した場合の差分展開におけるメモリ制御の説明図
【図33】図29の第2実施形態における送信側での差分抽出と中断による再転送のフローチャート
【図34】図29の第2実施形態における受信側での差分展開と中断による再転送のフローチャート
【図35】条件3に対応したメモリ形態をとる本発明による第3実施形態のシステムブロック図
【図36】図35の第3実施形態による差分転送の機能構成のブロック図
【図37】図35の第3実施形態における送信側での差分抽出と中断による再転送のフローチャート
【図38】図35の第3実施形態における受信側での差分展開と中断による再転送のフローチャート
【図39】条件4に対応したメモリ形態をとる本発明による第4実施形態のシステムブロック図
【図40】図39の第4実施形態による差分転送の機能構成のブロック図
【図41】図39の第4実施形態における送信側での差分抽出と中断による再転送のフローチャート
【図42】図39の第4実施形態における受信側での差分展開と中断による再転送のフローチャート
【図43】新ファイルを一定サイズの区画に分けて差分抽出及び復元を行う第5実施形態のシステムブロック図
【図44】図43の実施形態における差分抽出の説明図
【図45】旧ファイルに一致部分が複数存在した場合の差分抽出の説明図
【図46】図43の実施形態で旧ファイルのデータ列を退避して参照する復元処理の説明図
【図47】図43の実施形態における差分抽出処理のフローチャート
【図48】図43の実施形態における復元処理のフローチャート
【図49】図43の第5実施形態の携帯電話について復元に先だって旧ファイルの区画を退避させる変形実施形態のシステムブロック図
【図50】図49の実施形態における復元処理のフローチャート
【図51】旧ファイルの一致検索範囲を最後尾から区画先頭アドレスから前方nバイトまでとした差分抽出処理を行う第6実施形態のフローチャート
【図52】図51の実施形態における旧ファイルの一致検索範囲の説明図
【図53】図51の差分抽出処理で生成した差分データに基づき各区画の退避データサイズをnバイト固定とした復元処理を行う第6実施形態のフローチャート
【図54】図53の実施形態で旧ファイルのデータ列を退避して参照する復元処理の説明図
【図55】図53の第6実施形態の復元処理について復元に先だって旧ファイルの区画を退避するように変形した実施形態のフローチャート
【図56】従来の差分転送における基本的なシステム構成の説明図
【図57】受信側の不揮発メモリを新旧兼用ファイルとした従来システムの説明図
【図58】従来の差分転送で処理する複写、置換、挿入及び削除のカテゴリに属する新旧ファイルパターンの説明図
【図59】従来の差分転送で処理できない移動、複数複写、複数置換といった従来のカテゴリに属しない新旧ファイル特殊パターンの説明図
【符号の説明】
10:基地局(送信装置)
12:携帯電話(受信装置)
14,48:旧ファイル
14−1,48−1:旧ファイル格納部(不揮発)
15:区画データ読出部
16,50:新ファイル
16−1,50−1:新ファイル格納部(不揮発)
18,20,24,38,42,46,83,89,180,420:ワークメモリ(揮発)
22,22−1:差分抽出部
25:参照回数アップ
26:データ圧縮部
28,40:参照情報処理部
30:送信部
32:伝送路
34:受信部
36:データ解凍部
44:差分展開部
45:更新情報処理部
80:兼用ファイル格納部
82:データ復元部
84:データ退避部
85:復元データ書込部
86:内部メモリ
88:内部メモリ参照部
90:退避データ参照部
Claims (5)
- 送信装置で新旧2つのファイルから差分抽出部により差分データを生成して送信し、受信装置で旧ファイル格納部に蓄積している旧ファイルから受信した差分データに基づいて差分展開部により新ファイルを展開する差分転送方法に於いて、
送信装置では、前記差分抽出部が旧ファイルと新ファイルの差分データを抽出する際に採取した旧ファイルの参照情報を差分データと共に受信装置に転送し、
受信装置では、前記差分展開部が旧ファイルと差分データから新ファイルを展開する際に、差分展開の進捗の状況で変化する前記旧ファイルの参照情報及び新ファイルの更新情報を、新ファイルのデータと共に蓄積し、
送信装置或いは受信装置のトラブルで差分転送が途中で途絶えた場合に、受信装置では、転送が途絶えるまで、旧ファイルと差分データから新ファイル展開する際に蓄積していた旧ファイルの参照情報及び新ファイルの更新情報を差分展開部が送信側に送って途中からの差分展開を依頼し、
送信装置では、受信側から送られた旧ファイルの参照情報及び新ファイルの更新情報を基に、差分展開部が再送するための旧ファイル及び新ファイルのスタートポイントを設定した後、差分転送を再開することを特徴とする差分転送方法。 - 送信装置で旧ファイルと新ファイルが旧ファイル格納部および新ファイル格納部にそれぞれ一定サイズの分割データに分けて蓄積された新旧2つのファイルから差分抽出部により差分データを生成して送信し、受信装置で該受信装置の旧ファイル格納部に前記送信装置と同じ一定サイズの分割データに分けて蓄積されており前記受信装置の前記旧ファイル格納部に格納している旧ファイルから前記送信装置より受信した差分データに基づいて差分展開部により新ファイルを展開し前記受信装置の新ファイル格納部に前記一定サイズの分割データに分けて蓄積する差分転送方法に於いて、
送信装置は、
前記送信装置の旧ファイル格納部および新ファイル格納部から旧ファイルと新ファイルを読出し、前記差分抽出部が処理対象としている新ファイル分割データに対し同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより差分データを抽出する差分抽出ステップと、
前記差分抽出部が前記差分データを抽出する際に旧ファイルを参照した参照回数を旧ファイル分割データ毎に計数して旧ファイル参照情報を生成する参照情報生成ステップと、
前記差分抽出部が前記差分データ及び旧ファイル参照情報を外部に送信する送信ステップと、
を備え、
受信装置は、
該受信装置のワークメモリと参照情報処理部とが受信した前記差分データ及び旧ファイル参照情報を受信する受信ステップと、
差分展開部で処理対象としている新ファイル分割データの差分データに対し、同一位置および前後隣接する位置の少なくとも3つの旧ファイル分割データを参照することにより新ファイル分割データを展開する差分展開ステップと、
前記受信装置の参照情報処理部が前記新ファイル分割データの展開時に旧ファイル分割データを参照する毎に、受信した参照情報の中の対応する参照回数を減算して更新する参照情報更新ステップと、
新ファイル分割データの展開を終了する毎に、更新情報処理部が展開した新ファイル分割データと共に、現時点の旧ファイル参照情報、旧ファイル最終参照アドレス、新ファイル分割データの更新回数及び新ファイル最終更新アドレスを蓄積する新ファイル蓄積ステップと、
を備えたことを特徴とする差分転送方法。 - 送信装置で新旧2つのファイルから差分抽出部により差分データを生成して受信装置に送信し、受信装置で内部メモリの旧ファイル格納部に蓄積している旧ファイルから受信した差分データに基づいて差分展開部により内部メモリに新ファイルを展開する差分転送方法に於いて、
送信装置は、新ファイルが前記旧ファイルと同一サイズの複数個の区画に分けられており、前記差分抽出部が各区画毎に旧ファイルと新ファイルの差分データを抽出する際に、前記区画中のデータ列と一致するデータ列を旧ファイルの探索で発見した場合、発見された位置が前記対象区画の先頭位置に相当する旧ファイルの位置より前方か後方かを判断し、前方と判断した場合は、発見位置と一致長を前方の対象区画の差分データに記述し、後方と判断した場合は、発見位置と一致長を前記対象区画の差分データに記述し、
受信装置は、データ復元部が旧ファィルと差分データから各区画毎に新ファイルを復元して前記旧ファイルの該当部分に上書きする際に、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、参照される前記データ列をデータ退避部へ退避させた後に上書きを行い、退避データに対し後続する区画の差分データによる旧ファイルの該当部分を参照させることを特徴とする差分転送方法。 - 請求項3記載の差分転送方法に於いて、
前記送信装置側は、差分抽出部で新ファイルの対象区画中のデータ列と一致するデータ列の探索を、旧ファイルの全範囲について行い、
前記受信装置側は、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、データ復元部が旧ファイルの参照されるデータ列の部分のみをデータ退避部に退避させることを特徴とする差分転送方法。 - 請求項3記載の差分転送方法に於いて、
前記送信装置は、差分抽出部が新ファイルの対象区画中のデータ列と一致するデータ列の探索を、前記対象区画の先頭位置に相当する旧ファイルの位置よりもnバイト前方から旧ファイルの最後尾までの範囲について行い、
前記受信装置は、上書き対象となる旧ファイルの該当部分のデータの中に後続する区画の差分データによって参照されるデータ列が存在する場合は、データ復元部が次の区画との境界位置から前方nバイト分に相当する旧ファイルのデータ列をデータ退避部に退避させることを特徴とする差分転送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002242901A JP4285679B2 (ja) | 2002-03-11 | 2002-08-23 | 差分転送方法、プログラム及びシステム |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002064705 | 2002-03-11 | ||
JP2002-64705 | 2002-03-11 | ||
JP2002242901A JP4285679B2 (ja) | 2002-03-11 | 2002-08-23 | 差分転送方法、プログラム及びシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003337723A JP2003337723A (ja) | 2003-11-28 |
JP4285679B2 true JP4285679B2 (ja) | 2009-06-24 |
Family
ID=29713949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002242901A Expired - Lifetime JP4285679B2 (ja) | 2002-03-11 | 2002-08-23 | 差分転送方法、プログラム及びシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4285679B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220337668A1 (en) * | 2021-04-14 | 2022-10-20 | Oracle International Corporation | Systems and methods for real-time repository management for universal service deployment |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4153324B2 (ja) * | 2003-01-31 | 2008-09-24 | 松下電器産業株式会社 | 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム |
WO2006052897A2 (en) * | 2004-11-08 | 2006-05-18 | Innopath Software, Inc. | Reorganizing images in static file system differencing and updating |
JP4619804B2 (ja) * | 2005-01-27 | 2011-01-26 | 三菱電機株式会社 | 更新用データ送信システム及び送信側装置及び受信側装置及び更新用データ送信方法 |
EP3252605B1 (en) * | 2015-01-26 | 2022-04-06 | Hitachi Astemo, Ltd. | Vehicle-mounted control device, program writing device, program generating device and program |
JP6609508B2 (ja) | 2016-04-27 | 2019-11-20 | 日立オートモティブシステムズ株式会社 | 車両用電子制御装置、プログラム更新方法 |
JP6760813B2 (ja) | 2016-10-14 | 2020-09-23 | 日立オートモティブシステムズ株式会社 | ソフトウェア更新装置、ソフトウェア更新方法、ソフトウェア更新システム |
JP6784636B2 (ja) | 2017-04-13 | 2020-11-11 | 日立オートモティブシステムズ株式会社 | 制御装置、プログラム更新システム、プログラム更新方法 |
JP7447572B2 (ja) * | 2020-03-12 | 2024-03-12 | 富士電機株式会社 | データ配信装置、データ配信システム及びデータ配信方法 |
JP7184855B2 (ja) * | 2020-09-03 | 2022-12-06 | 日立Astemo株式会社 | ソフトウェア更新装置、ソフトウェア更新方法 |
JP7420025B2 (ja) * | 2020-09-07 | 2024-01-23 | トヨタ自動車株式会社 | プログラムの更新方法および更新システム |
-
2002
- 2002-08-23 JP JP2002242901A patent/JP4285679B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220337668A1 (en) * | 2021-04-14 | 2022-10-20 | Oracle International Corporation | Systems and methods for real-time repository management for universal service deployment |
Also Published As
Publication number | Publication date |
---|---|
JP2003337723A (ja) | 2003-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5057519B2 (ja) | 記憶装置に記憶されたコンテンツをインプレース更新するための方法およびシステム | |
JP4302970B2 (ja) | 差分更新方法、プログラム及び装置 | |
JP4285679B2 (ja) | 差分転送方法、プログラム及びシステム | |
EP1230598B1 (en) | File system image transfer between dissimilar file systems | |
US5978805A (en) | Method and apparatus for synchronizing files | |
US5559957A (en) | File system for a data storage device having a power fail recovery mechanism for write/replace operations | |
US8365160B2 (en) | Method and system for generating a reverse binary patch | |
WO2017057111A1 (ja) | 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア | |
JP2002169729A (ja) | 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法 | |
US20140081922A1 (en) | Navigation device database update system | |
JP5237661B2 (ja) | ファイル同期装置、ファイル同期方法及びファイル同期プログラム | |
US20180260126A1 (en) | System and method for synchronizing history data for compression and decompression | |
US20060200502A1 (en) | Differential data creating device and method, updated data recovery device and method, and program | |
US20150032785A1 (en) | Non-transitory computer-readable media storing file management program, file management apparatus, and file management method | |
US20080320062A1 (en) | Method of transferring file system, file system transference program, and file system transference device | |
CN110995788B (zh) | 一种http服务器断点续传上传文件存储的实现方法 | |
US10708392B2 (en) | System and method for compression and decompression of data containing redundancies | |
JP2009048557A (ja) | データ更新装置及びデータ更新方法及びデータ更新プログラム | |
US20080294837A1 (en) | Memory controller for controlling a non-volatile semiconductor memory and memory system | |
WO2013091162A1 (zh) | 一种分布式存储数据恢复方法、装置及系统 | |
JP2001249855A (ja) | 不揮発性メモリのデータ書き替え方法及び加入者回路 | |
EP0745939A2 (en) | Re-entrant garbage collection process for a flash memory resident file system | |
JP6838791B2 (ja) | ストレージシステム | |
CA2653714C (en) | Method and system for generating a reverse binary patch | |
JP4370136B2 (ja) | 情報処理装置及び管理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050725 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081014 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081208 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090224 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090319 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120403 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4285679 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120403 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130403 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140403 Year of fee payment: 5 |
|
EXPY | Cancellation because of completion of term |