(57)【要約】【課題】オンラインストレージを介した間接的なファイル転送を利用してラージファイルを高速に転送する。【解決手段】アップロードサーバ１０は、アップロードファイル１２を複数のピースに分割して、ピース毎にオンラインストレージ３０にアップロードし、また、マップ情報４１を管理サーバ４０に保存するアップロード処理部１１を有し、ダウンロードサーバ２０は、管理サーバ４０から取得したマップ情報４１に基づいて、オンラインストレージ３０にアップロードされた各ピースをダウンロードし、マップ情報４１にしたがってダウンロードファイル２２を復元するダウンロード処理部２１を有し、ダウンロード処理部２１は、オンラインストレージ３０へのアップロードが完了したピースから順次、他の全てのピースがアップロードされるのを待つことなくダウンロードを開始する。【選択図】図１
2019049914.tif 000002
【特許請求の範囲】
【請求項１】
オンラインストレージを介して第１のサーバが第２のサーバにファイルを転送するファイル転送システムであって、
前記第１のサーバは、前記ファイルを１つ以上のピースに分割して、前記ピース毎に前記オンラインストレージにアップロードし、また、前記各ピースについてのアップロードの状況に係る第１の情報、および前記各ピースから前記ファイルを復元するための第２の情報を、第３のサーバに保存するアップロード処理部を有し、
前記第２のサーバは、前記第３のサーバから取得した前記第１の情報に基づいて、前記オンラインストレージにアップロードされた前記各ピースをダウンロードし、ダウンロードした前記各ピースに基づいて、前記第３のサーバから取得した前記第２の情報にしたがって前記ファイルを復元するダウンロード処理部を有し、
前記ダウンロード処理部は、前記第１のサーバによる前記オンラインストレージへのアップロードが完了した前記ピースから順次、他の全ての前記ピースがアップロードされるのを待つことなくダウンロードを開始する、ファイル転送システム。
【請求項２】
請求項１に記載のファイル転送システムにおいて、
前記アップロード処理部、および前記ダウンロード処理部の少なくとも一方は、前記各ピースの前記オンラインストレージとの間の転送に係る処理をマルチスレッドで並行的に行う、ファイル転送システム。
【請求項３】
請求項１に記載のファイル転送システムにおいて、
前記アップロード処理部は、前記オンラインストレージへのアップロードが完了した前記ピースについて、アップロードが完了した旨、および前記オンラインストレージ上での保存場所に係る情報を、前記第１の情報の少なくとも一部として前記第３のサーバに随時保存する、ファイル転送システム。
【請求項４】
請求項１に記載のファイル転送システムにおいて、
前記ダウンロード処理部は、所定の時間間隔毎に、前記第３のサーバに前記第１の情報が登録されているか否かを確認し、登録されている場合に、登録されている前記第１の情報に対応する前記ピースに係る前記オンラインストレージからのダウンロードを開始する、ファイル転送システム。
【請求項５】
請求項１に記載のファイル転送システムにおいて、
前記アップロード処理部は、前記各ピースをそれぞれ暗号鍵により暗号化し、復号鍵に係る情報を、前記第２の情報の少なくとも一部として前記第３のサーバに保存する、ファイル転送システム。
【請求項６】
請求項１に記載のファイル転送システムにおいて、
前記アップロード処理部、および前記ダウンロード処理部の少なくとも一方は、前記オンラインストレージとの間で前記ピースの転送を行った後、前記ピースについて算出したハッシュ値と、前記オンラインストレージにおいて前記ピースについて算出されたハッシュ値とを比較し、前記ピースの転送の結果が正常か否かを判定する、ファイル転送システム。
【請求項７】
オンラインストレージを介して第１のサーバが第２のサーバにファイルを転送するファイル転送方法であって、
前記第１のサーバが、前記ファイルを１つ以上のピースに分割して、前記ピース毎に前記オンラインストレージにアップロードする第１の工程と、
前記第１のサーバが、前記各ピースについてのアップロードの状況に係る第１の情報、および前記各ピースから前記ファイルを復元するための第２の情報を、第３のサーバに保存する第２の工程と、
前記第２のサーバが、前記第３のサーバから取得した前記第１の情報に基づいて、前記オンラインストレージにアップロードされた前記各ピースをダウンロードする第３の工程と、
前記第２のサーバが、ダウンロードした前記各ピースに基づいて、前記第３のサーバから取得した前記第２の情報にしたがって前記ファイルを復元する第４の工程と、を有し、
前記第３の工程は、前記第１のサーバによる前記オンラインストレージへのアップロードが完了した前記ピースから順次、他の全ての前記ピースがアップロードされるのを待つことなく開始される、ファイル転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル転送の技術に関し、特に、インターネットを介してラージファイルを転送するファイル転送システムおよびファイル転送方法に適用して有効な技術に関するものである。
【背景技術】
【０００２】
例えば、サーバ間でファイルを転送する際に、ファイル単位で転送を行うと、サイズが大きいファイル（ラージファイル）の場合、転送効率が悪くなることから、ファイルを複数の断片（ピース）に細分化し、ピース単位で転送することが行われている。また、ファイルをピースに細分化して個別に転送することで、ファイル転送に係るセキュリティを向上させることも検討されている。
【０００３】
これらに関連する技術として、例えば、特開２０１６−１５２５６９号公報（特許文献１）には、単一のファイルをＮ個のデータ群に分割し、Ｎ個のデータ群とオフセット位置を示すＮ個の転送ジョブを作成し、ＴＣＰの同時接続数のＭ個の転送スレッドに転送ジョブを割り当て、Ｍ個のコネクションにより、Ｍ個の転送ジョブで指定されたＭ個のデータ群とオフセット位置を並列に転送する旨が記載されている。
【０００４】
また、特開２０１２−２０８５４９号公報（特許文献２）には、送信側コンピュータに、入力ファイルからデータを読み出して分割して複数のピースとしてネットワークへ送信する処理をマルチスレッドの処理により行うモジュールを備え、受信側コンピュータに、ネットワークから複数のピースを受信して統合して出力ファイルへ書き込む処理をマルチスレッドの処理により行うモジュールを備える旨が記載されている。
【０００５】
また、特開２００３−３２３３６５号公報（特許文献３）には、送信側の転送制御装置が、転送対象データを複数のピースに分割し、各ピースからその一部のデータを欠落させて暗号化した上で異なる中継サーバにそれぞれアップロードするとともに、欠落分のデータを受信側の転送制御装置に送信し、受信側の転送制御装置では、各中継サーバから各ピースをダウンロードして復号し、欠落分のデータを補充して欠落前の状態に復元して組み立てることで、元の転送対象データを得る旨が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１６−１５２５６９号公報
【特許文献２】特開２０１２−２０８５４９号公報
【特許文献３】特開２００３−３２３３６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、特許文献１、２等に記載された技術によれば、ファイルを複数のピースに細分化して並行的に送信（および受信）することで、ラージファイルについても高速に転送することが可能である。しかし、この場合、転送元と転送先とが相互に通信セッションを直接確立する必要があるため、インターネット上でのファイル転送には適さない場合がある。
【０００８】
これに対し、特許文献３等に記載された技術のように、インターネット上のサーバやストレージ等（以下では「オンラインストレージ」と記載する場合がある）に対して転送元がＨＴＴＰ（HyperText Transfer Protocol）等の通信を利用してファイルをアップロードし、転送先がこれをＨＴＴＰ等の通信を利用してダウンロードすることで間接的にファイルを転送することも行われる。これにより、転送元および転送先は、それぞれ一般的なインターネット接続環境を有していればファイル転送を行うことができる。
【０００９】
しかし、この場合、転送先によるファイルのダウンロードは、転送元によるファイルのアップロードが完了してからでなければ実行することができない。したがって、例えば、テラバイトを超えるようなラージファイルの転送では、転送元によるアップロード、および転送先によるダウンロードのそれぞれについて上記のようなファイルの細分化による高速化を行ったとしても、転送元がアップロードを開始して完了し、その後、転送先がダウンロードを開始して完了するまでにはかなりの時間を要してしまう。
【００１０】
そこで本発明の目的は、オンラインストレージを介した間接的なファイル転送を利用してラージファイルを高速に転送することを可能とするファイル転送システムおよびファイル転送方法を提供することにある。
【００１１】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【００１３】
本発明の代表的な実施の形態によるファイル転送システムは、オンラインストレージを介して第１のサーバが第２のサーバにファイルを転送するファイル転送システムであって、前記第１のサーバは、前記ファイルを１つ以上のピースに分割して、前記ピース毎に前記オンラインストレージにアップロードし、また、前記各ピースについてのアップロードの状況に係る第１の情報、および前記各ピースから前記ファイルを復元するための第２の情報を、第３のサーバに保存するアップロード処理部を有し、前記第２のサーバは、前記第３のサーバから取得した前記第１の情報に基づいて、前記オンラインストレージにアップロードされた前記各ピースをダウンロードし、ダウンロードした前記各ピースに基づいて、前記第３のサーバから取得した前記第２の情報にしたがって前記ファイルを復元するダウンロード処理部を有する。
【００１４】
そして、前記ダウンロード処理部は、前記第１のサーバによる前記オンラインストレージへのアップロードが完了した前記ピースから順次、他の全ての前記ピースがアップロードされるのを待つことなくダウンロードを開始する。
【発明の効果】
【００１５】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１６】
すなわち、本発明の代表的な実施の形態によれば、オンラインストレージを介した間接的なファイル転送を利用してラージファイルを高速に転送することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施の形態であるファイル転送システムの構成例について概要を示した図である。
【図２】本発明の一実施の形態におけるアップロード処理の流れの例について概要を示したフローチャートである。
【図３】本発明の一実施の形態におけるダウンロード処理の流れの例について概要を示したフローチャートである。
【図４】（ａ）は従来技術における、（ｂ）は本発明の一実施の形態におけるアップロード処理とダウンロード処理の実行例について概要を示した図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。一方で、ある図において符号を付して説明した部位について、他の図の説明の際に再度の図示はしないが同一の符号を付して言及する場合がある。
【００１９】
＜システム構成＞
図１は、本発明の一実施の形態であるファイル転送システムの構成例について概要を示した図である。ファイル転送システム１は、例えば、インターネット２に対して、アップロードサーバ１０、ダウンロードサーバ２０、オンラインストレージ３０、および管理サーバ４０等の各種サーバやサービス、サブシステム等が接続された構成を有する。
【００２０】
アップロードサーバ１０は、ファイルの転送元のサーバであり、オンラインストレージ３０に転送対象のファイルをアップロードする機能を有する。また、ダウンロードサーバ２０は、ファイルの転送先のサーバであり、オンラインストレージ３０から転送対象のフィアルをダウンロードして取得する機能を有する。なお、アップロードサーバ１０とダウンロードサーバ２０の分類は機能的・論理的なものであり、実装上は両者の機能を兼ね備えた（すなわち、ファイルの転送元・転送先いずれにもなれる）サーバが複数存在する構成であってもよい。
【００２１】
アップロードサーバ１０、ダウンロードサーバ２０のいずれも、例えば、サーバ機器やクラウドコンピューティングサービス上に構築された仮想サーバ等により構成される。テラバイトを超えるようなラージファイルを保持することができるものであれば、ＰＣ（Personal Computer）等の情報処理端末であってもよい。そして、図示しないＣＰＵ（Central Processing Unit）により、ＨＤＤ（Hard Disk Drive）等の記録装置からメモリ上に展開したＯＳ（Operating System）やＤＢＭＳ（DataBase Management System）等のミドルウェアや、その上で稼働するソフトウェアを実行することで、ファイル転送に係る後述する各種機能を実現する。
【００２２】
アップロードサーバ１０は、ソフトウェアとして実装されたアップロード処理部１１を有する。アップロード処理部１１は、ラージファイルも含む転送対象のファイルであるアップロードファイル１２を、小さなサイズの断片（ピース）に分割し、これらをオンラインストレージ３０へアップロードする機能を有する。図１の例では、アップロードファイル１２をＰ１、Ｐ２、Ｐ３、…の複数のピースに分割し、これらをオンラインストレージ３０にそれぞれアップロードしたことを示している。
【００２３】
オンラインストレージ３０は、インターネット２を介してファイルを授受し、これをＨＤＤ等の記録装置に保管する機能を有するサービスであり、大容量のＨＤＤを備えた複数のファイルサーバやネットワークストレージ等により構成されていてもよいし、Ａｍａｚｏｎ（登録商標）  Ｓｉｍｐｌｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｉｃｅ（Ｓ３）のようないわゆるクラウドストレージにより構成されていてもよい。いずれの構成でも、アップロードサーバ１０からアップロードされた複数のピースを分散保管することができるよう、複数のストレージを有する構成とするのが望ましいが、単一のストレージであってもよい。図１の例でも、Ｐ１、Ｐ２、Ｐ３、…の複数のピースをそれぞれ異なるストレージに保管したことを示している。
【００２４】
アップロードサーバ１０と同様に、ダウンロードサーバ２０は、ソフトウェアとして実装されたダウンロード処理部２１を有する。ダウンロード処理部２１は、オンラインストレージ３０から複数のピースをダウンロードし、取得したピースから転送対象のファイルであるダウンロードファイル２２を復元する機能を有する。図１の例では、オンラインストレージ３０からＰ１、Ｐ２、Ｐ３、…の複数のピースをそれぞれダウンロードし、これらのピースからダウンロードファイル２２を復元したことを示している。
【００２５】
アップロードファイル１２から分割された各ピースのオンラインストレージ３０へのアップロードの状況に係る情報、およびこれらの各ピースからダウンロードファイル２２を復元するための情報は、アップロード処理部１１が、管理サーバ４０上にマップ情報４１として記録する。各ピースのアップロードの状況に係る情報には、例えば、各ピースの名称や、それぞれがアップロードされた（もしくはされる）オンラインストレージ３０上のストレージ、および各ピースについてそれぞれアップロードが完了したか否か等の情報が含まれる。
【００２６】
また、ダウンロードファイル２２を復元するための情報には、例えば、ダウンロードファイル２２（＝アップロードファイル１２）と各ピースとの関連付けの情報や、各ピースのファイル中の位置（オフセット）や配置順序・処理順序等に係る情報が含まれる。ダウンロードサーバ２０のダウンロード処理部２１は、例えば、一定間隔で定期的に管理サーバ４０のマップ情報４１を参照し、自身宛に転送されているファイルに係る情報が登録されている場合に、その内容に基づいて、オンラインストレージ３０の対象のストレージから復元に必要なピースをダウンロードしてダウンロードファイル２２を復元する。
【００２７】
ダウンロード処理部２１は、ダウンロードした各ピースについて、例えば、ダウンロードファイル２２の復元が完了したタイミング等でオンラインストレージ３０から削除するようにしてもよい。また、ダウンロードした各ピースについて管理サーバ４０のマップ情報４１を更新するようにしてもよい。なお、管理サーバ４０のマップ情報４１の更新については、例えば、アップロード処理部１１やダウンロード処理部２１が直接マップ情報４１のファイルやデータを更新してもよいし、管理サーバ４０が提供するＡＰＩ（Application Programming Interface）等の外部インタフェースを介して更新するようにしてもよい。
【００２８】
アップロード処理部１１、ダウンロード処理部２１のいずれも、インターネット２上のオンラインストレージ３０や管理サーバ４０にアクセスする際の通信プロトコルとしてＨＴＴＰ（ＨＴＴＰＳ）を用いる。したがって、グローバルＩＰアドレスを有する必要はなく、プロキシーサーバの環境にも対応することができ、一般的なインターネット２への接続環境を有していれば本実施の形態のファイル転送を実現することができる。また、オンラインストレージ３０にアクセスするためのアカウント情報を図示しない設定ファイル等に設定してアップロード処理部１１およびダウンロード処理部２１がこれを参照することで、ユーザからオンラインストレージ３０にアクセスするためのアカウント情報を隠蔽することができる。
【００２９】
また、アップロード処理部１１、ダウンロード処理部２１のいずれも、ピースの転送（アップロード／ダウンロード）処理中にネットワークエラーが発生した場合、自動的にリトライするようにしてもよい。これにより、インターネット２のようにエラー率が高いネットワークにおいてもファイルを確実に転送することができる。
【００３０】
アップロード処理部１１、ダウンロード処理部２１のいずれも、ピースの転送（アップロード／ダウンロード）に係る処理をマルチスレッドで並行的に行うようにしてもよい。これにより、ピース全体の転送に係る時間を短縮し、ファイル転送を高速化することができる。また、後述するように、アップロード処理部１１によるピースのアップロードの処理と、ダウンロード処理部２１によるピースのダウンロードの処理とをパイプライン処理として並行的に行うようにしてもよい。これにより、ファイル全体の転送に係る時間を短縮してファイル転送を高速化することができる。
【００３１】
転送対象のファイル（本実施の形態ではアップロードファイル１２）を複数のピースに分割し、さらに分割した複数のピース（もしくはその一部のピース）から転送対象のファイル（本実施の形態ではダウンロードファイル２２）を復元する手法は特に限定されない。例えば、単順に転送対象のファイルを所定のサイズ毎に分割し、これらを順序に従って並べて結合することで復元するものであってもよいし、公知の秘密分散や電子割符の技術を用いて、それだけでは意味をなさないピースに分割するものであってもよい。
【００３２】
特に、秘密分散や電子割符等のセキュアな技術を用いない場合は、アップロード処理部１１において、生成した各ピースを暗号化するようにしてもよい。例えば、ピース毎に生成した暗号鍵により暗号化し、さらに無意味な名称（ファイル名）としてオンラインストレージ３０にアップロードする。暗号化されたピースを復号するための鍵（例えば、共通鍵方式の場合は共通鍵、公開鍵方式の場合は公開鍵）の情報は、例えば、ダウンロードファイル２２を復元するための情報として、オンラインストレージ３０とは別の管理サーバ４０のマップ情報４１にピースと関連付けて登録する。これにより、オンラインストレージ３０上に保持されたピースの情報が漏洩したとしても、転送対象のファイルが復元されるのを回避することができる。
【００３３】
また、アップロード処理部１１、ダウンロード処理部２１のいずれも、例えば、ピースの転送（アップロード／ダウンロード）の際に各ピースのハッシュ値をそれぞれ算出し、オンラインストレージ３０が算出したハッシュ値と比較するようにしてもよい。ハッシュ値が一致しない場合は、例えば、ピースの単位で転送をリトライすることにより、ピースの転送中の改竄やデータ化けを回避し、確実なファイル転送を実現する。オンラインストレージ３０がハッシュ値の算出機能を有さない場合は、アップロード処理部１１とダウンロード処理部２１との間でそれぞれが算出したハッシュ値を比較するようにしてもよい。
【００３４】
＜処理の流れ（アップロード）＞
図２は、本実施の形態におけるアップロード処理の流れの例について概要を示したフローチャートである。ユーザからファイル転送の指示を受けた場合、アップロードサーバ１０のアップロード処理部１１は、まず、転送対象のアップロードファイル１２のファイルサイズを取得し（Ｓ０１）、ファイルサイズが所定のサイズ以上であるか否かを判定する（Ｓ０２）。ファイルサイズが所定のサイズ以上である場合（Ｓ０２：Ｙｅｓ）は、アップロードファイル１２を所定のサイズ以下の複数のピースに分割する（Ｓ０３）。上述したように、アップロードファイル１２をピースに分割する手法は特に限定されない。一方、ファイルサイズが所定のサイズ未満である場合（Ｓ０２：Ｎｏ）は、複数のピースに分割してアップロードする方が非効率となるため、ステップＳ０３でのアップロードファイル１２の複数のピースへの分割処理を行わないものとする。この場合、アップロードファイル１２全体をそのまま１つのピースとして取り扱えばよく、このように取り扱うことも本実施の形態におけるピースへの「分割」の概念に含まれるものとする。
【００３５】
なお、上記の所定のファイルサイズは、例えば、オンラインストレージ３０の仕様（例えば、単一のストレージにファイル全体を保管することができる最大サイズや、１回のアップロードで転送可能なファイルサイズ等）に応じて予め決定される。小さいサイズのピースに分割して転送することから、元のアップロードファイル１２自体のファイルサイズには特に制限がなく、オンラインストレージ３０が保管可能なファイルの最大サイズより大きいラージファイルであっても対応することができる。また、ピースに分割する際の所定のピースサイズは、上記の所定のファイルサイズと同じであってもよいし、それ未満のサイズであってもよい。これらのサイズに係る情報は、例えば、図示しない設定ファイル等に予め設定しておく。
【００３６】
アップロードファイル１２を１つ以上のピースに分割すると、その後、各ピースについてそれぞれ暗号化を行う（Ｓ０４）。そして、各ピースの名称等の識別情報や、アップロードファイル１２（＝ダウンロードファイル２２）を復元するために用いられる各種情報を、アップロードファイル１２と関連付けて、管理サーバ４０のマップ情報４１に新たに登録する（Ｓ０５）。各ピースのサイズ等の情報を含んでいてもよい。なお、この時点では、いずれのピースについてもアップロード未了として登録される。
【００３７】
その後、各ピースをオンラインストレージ３０にアップロードするためのスレッドを所定の数だけ起動する（Ｓ０６）。上述したように、本実施の形態では、ピースのアップロードをマルチスレッドにて並行的に行う。起動するスレッドの数は、例えば、アップロードサーバ１０が備える使用可能なメモリの容量と、ピースのサイズとに基づいて動的に決定し、もしくは図示しない設定ファイル等に予め設定しておく。
【００３８】
起動された各スレッドでは、アップロード対象のピースを取得し（Ｓ０７）、取得したピースのアップロード先となるオンラインストレージ３０上のストレージを決定する（Ｓ０８）。図２の例では、各スレッドがアップロード対象のピースについてアップロード先を随時決定するものとしているが、これに限られない。例えば、アップロード処理部１１が、上記のステップＳ０３でアップロードファイル１２を１つ以上のピースに分割した際に、各ピースについてアップロード先を一括して決定するようにしてもよい。なお、各ピースについてアップロード先となるオンラインストレージ３０上のストレージを決定するため、例えば、アップロードサーバ１０は、オンラインストレージ３０上で利用可能なストレージの情報を、図示しない設定ファイル等に予め保持していてもよい。
【００３９】
対象のピースについてアップロード先となるオンラインストレージ３０上のストレージが決定されると、当該アップロード先に当該ピースをアップロードする（Ｓ０９）。アップロード開始後は、アップロードが完了するまで状況を監視し、アップロードが途中で異常終了した場合は、所定の上限回数までリトライするようにしてもよい。また、アップロードしたピースについてオンラインストレージ３０側で算出されたハッシュ値を取得し、アップロード処理部１１のスレッド側で算出したハッシュ値と比較して（Ｓ１０）、一致しない場合に異常終了とするようにしてもよい。
【００４０】
対象のピースのアップロードが完了すると、その旨、およびオンラインストレージ３０上のいずれのストレージにアップロードしたかの情報を管理サーバ４０上のマップ情報４１に記録してマップ情報４１の内容を更新する（Ｓ１１）。これにより、ダウンロードサーバ２０は、マップ情報４１を参照することで、対象のピースがオンラインストレージ３０上にアップロードされたことを認識することができる。
【００４１】
その後、アップロードが未了のピースが残っているか否かを判定し（Ｓ１２）、残っていない場合、すなわち全てのピースのアップロードが完了した場合（Ｓ１２：Ｎｏ）は、アップロード処理を終了する。未了のピースが残っている場合（Ｓ１２：Ｙｅｓ）は、ステップＳ０７に戻って、未了のピースがなくなるまでアップロードの処理を繰り返す。以上の一連の処理により、アップロードファイル１２を分割した１つ以上のピースを、マルチスレッドで高速にオンラインストレージ３０にアップロードすることができる。
【００４２】
＜処理の流れ（ダウンロード）＞
図３は、本実施の形態におけるダウンロード処理の流れの例について概要を示したフローチャートである。ダウンロードサーバ２０では、一定時間毎に定期的に、もしくはユーザからの指示を受けたタイミングで、ダウンロード処理部２１により、管理サーバ４０上のマップ情報４１を確認し（Ｓ２１）、自身宛に転送されたファイルに係るピースの情報が登録されているか否かを判定する（Ｓ２２）。ここでのピースには、アップロードファイル１２が所定のファイルサイズより小さかったために全体が１つのピースとして取り扱われた場合も含まれる。該当するピースの情報が登録されていない場合（Ｓ２２：Ｎｏ）は、自身宛に転送されているファイルがないものとして、ステップＳ２１に戻って、該当するピースの情報が登録されるまで、所定のタイミングでのマップ情報４１の確認を繰り返す。
【００４３】
管理サーバ４０上のマップ情報４１に、自身宛に転送されたファイルに係るいずれかのピースの情報が新たに登録されている場合（Ｓ２２：Ｙｅｓ）、以下に示す、対象のファイルのダウンロードに係る一連の処理を開始する。このように、ダウンロード処理部２１が管理サーバ４０上のマップ情報４１をポーリングすることで、オンラインストレージ３０に対象のファイルに係るピースがアップロードされたことを検知し、自動的にダウンロードに係る処理を開始することができる。すなわち、オンラインストレージ３０を介した、アップロードサーバ１０からダウンロードサーバ２０へのファイル転送を、アップロードサーバ１０からダウンロードサーバ２０に対して直接ファイル転送しているかのような形で実装することができる。
【００４４】
ダウンロードに係る処理では、まず、対象のピースをオンラインストレージ３０からダウンロードするためのスレッドを所定の数だけ起動する（Ｓ２３）。上述したように、本実施の形態では、ピースのダウンロードもマルチスレッドにて並行的に行う。起動するスレッドの数は、例えば、ダウンロードサーバ２０が備える使用可能なメモリの容量と、ピースのサイズとに基づいて動的に決定し、もしくは図示しない設定ファイル等に予め設定しておく。
【００４５】
起動された各スレッドでは、管理サーバ４０のマップ情報４１から、ダウンロード対象のピースに係る情報を取得する（Ｓ２４）。取得する情報には、例えば、対象のピースの保存先であるオンラインストレージ３０上のストレージの情報や、ピースのサイズ、復号するための鍵や、ハッシュ値等の情報が含まれ得る。そして、マップ情報４１から取得した対象のピースの保存先のストレージの情報に基づいて、当該ピースをダウンロードする（Ｓ２５）。ダウンロード開始後は、ダウンロードが完了するまで状況を監視し、ダウンロードが途中で異常終了した場合は、所定の上限回数までリトライするようにしてもよい。また、当該ピースについてオンラインストレージ３０側で算出されたハッシュ値を取得し、ダウンロード処理部２１のスレッド側で算出したハッシュ値と比較して（Ｓ２６）、一致しない場合に異常終了させるようにしてもよい。
【００４６】
その後、ダウンロードしたピースについて、マップ情報４１から取得した復号用の鍵を用いて復号する（Ｓ２７）。復号が完了したピースについては、保存先のオンラインストレージ３０上のストレージから削除するようにしてもよい（Ｓ２８）。
【００４７】
その後、ダウンロードが未了のピースが残っているか否かを判定し（Ｓ２９）、残っている場合（Ｓ２９：Ｙｅｓ）は、ステップＳ２４に戻って、未了のピースがなくなるまでダンロードの処理を繰り返す。未了のピースが残っていない場合、すなわち全てのピースのダウンロードが完了した場合（Ｓ２９：Ｎｏ）は、ダウンロードされ復号された各ピースに基づいて、マップ情報４１に記録されたファイルを復元するための情報を参照して、ダウンロードファイル２２を復元し（Ｓ３０）、ダウンロード処理を終了する。以上の一連の処理により、オンラインストレージ３０上のストレージに保存された１つ以上のピースを、マルチスレッドで高速にダウンロードし、ダウンロードファイル２２を復元することができる。
【００４８】
＜アップロードとダウンロードのパイプライン処理＞
図４は、オンラインストレージ３０を介したアップロード処理とダウンロード処理の実行例について概要を示した図である。図中では、転送対象のファイルをＰ１〜Ｐ５の５つのピースに分割し、アップロードサーバ１０がこの順でオンラインストレージ３０にアップロードするとともに、ダウンロードサーバ２０がこの順でオンラインストレージ３０からダウンロードする場合を、横軸の時間経過により模式的に示している。また、説明の便宜上、アップロードサーバ１０もダウンロードサーバ２０もそれぞれシングルスレッドで各ピースを逐次アップロードもしくはダウンロードするものとしている。
【００４９】
図４（ａ）は、従来技術におけるアップロード処理とダウンロード処理の実行例を示している。ここでは、時刻Ｔ１に各ピースのアップロードを開始した場合、時刻Ｔ３にアップロードが完了することを示している。従来技術では、オンラインストレージ３０上にＰ１〜Ｐ５の全てのピースのアップロードが完了した時点、すなわち転送対象のファイル全体のアップロードが完了した時点で、当該ファイルのダウンロード、すなわちＰ１〜Ｐ５の各ピースのダウンロードが開始される。すなわち、各ピースのダウンロードは時刻Ｔ３に開始することができ、時刻Ｔ５にダウンロードが完了することを示している。この場合、転送対象のファイルのアップロードを開始してからダウンロードを完了するまでのＴＡＴ（Turn Around Time）は、アップロード時間（時刻Ｔ１〜Ｔ３）とダウンロード時間（時刻Ｔ３〜Ｔ５）との和となる。
【００５０】
これに対し、本実施の形態では、上述したように、アップロード処理とダウンロード処理とを、パイプライン処理として並行的に行うことが可能である。図４（ｂ）は、本実施の形態におけるアップロード処理とダウンロード処理の実行例を示している。
【００５１】
図４（ｂ）に示すように、本実施の形態では、Ｐ１のピースのアップロードが完了した時刻Ｔ２の時点で、管理サーバ４０のマップ情報４１を参照することで、他の全てのピースのアップロードが完了するのを待つことなく、Ｐ１のピースのダウンロードを開始することができる。さらに、Ｐ１のピースのダウンロードと並行して、Ｐ２のピースのアップロードを開始することができ、また、Ｐ２のピースのアップロードが完了した時点でそのダウンロードを開始することができる。すなわち、ピース毎に、アップロードが完了したものから、他の全てのピース（すなわち転送対象のファイル全体）のアップロードの完了を待つことなく、ダウンロードを順次開始する。
【００５２】
この場合、Ｐ１〜Ｐ５の全てのピースのアップロードが完了した時刻Ｔ３の時点で、ダウンロードが未了であるピースはＰ５のみであり、このＰ５のピースのダウンロードが完了した時刻Ｔ４の時点で、Ｐ１〜Ｐ５の全てのピースのダウンロードを完了させることができる。このようなパイプライン処理により、転送対象のファイルのアップロードを開始してからダウンロードを完了するまでのＴＡＴを、図４（ａ）の従来技術による場合よりも大幅に短縮し、ファイル転送を高速化することができる。
【００５３】
以上に説明したように、本発明の一実施の形態であるファイル転送システム１によれば、アップロードサーバ１０、ダウンロードサーバ２０のいずれも、一般的なインターネット２への接続環境を有していれば、オンラインストレージ３０を介して容易にラージファイルのファイル転送を行うことができる。
【００５４】
また、転送対象のファイルを１つ以上のピースに分割して暗号化し、意味をなさない名称でオンラインストレージ３０上に分散保存するとともに、ファイルを復元するための情報を保持するマップ情報４１をオンラインストレージ３０とは別の管理サーバ４０に保管することにより、セキュアにファイル転送を行うことができる。
【００５５】
また、各ピースのアップロード／ダウンロードの処理が異常終了した場合であっても自動的にリトライすることで、インターネット２のような信頼性の低いネットワークにおいても確実にファイル転送を行うことができる。また、アップロード／ダウンロードに際して、オンラインストレージ３０との間で各ピースのハッシュ値を比較することにより、データの改竄や化け等を防止して確実にファイル転送を行うことができる。
【００５６】
また、各ピースのアップロード／ダウンロードの処理をマルチスレッドで並行的に行うことで、インターネット２の帯域を十分に活用した高速なファイル転送を行うことができる。また、ピース毎にアップロードとダウンロードの処理をパイプライン処理として並行的に実行することにより、アップロードの開始からダウンロードの終了までのＴＡＴを短縮して高速にファイル転送を行うことができる。
【００５７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、上記の実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００５８】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、またはＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００５９】
また、上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【産業上の利用可能性】
【００６０】
本発明は、インターネットを介してラージファイルを転送するファイル転送システムおよびファイル転送方法に利用可能である。
【符号の説明】
【００６１】
１…ファイル転送システム、２…インターネット、
１０…アップロードサーバ、１１…アップロード処理部、１２…アップロードファイル、
２０…ダウンロードサーバ、２１…ダウンロード処理部、２２…ダウンロードファイル、
３０…オンラインストレージ、
４０…管理サーバ、４１…マップ情報
【図１】
2019049914.tif 000003
【図２】
2019049914.tif 000004
【図３】
2019049914.tif 000005
【図４】
2019049914.tif 000006