電子書籍の厳選無料作品が豊富!

例えばですが、とあるフォルダに合計数百TBのファイルがあるとします。
ファイルは数TBのサイズです。
各ファイルはほんのちょっとずつ日々更新(追加、変更)されます。

これを別なドライブ(ネットワークドライブ等)に一度コピーしてバックアップを取ったあと、
次からは差分コピーしたいです。

ですが、各ファイルがちょっとづつ(例えば最小1バイト)更新されているので、
ファイル単位の差分コピーだと、結局数百TB分コピーされてしまいます。

これを更新されている分だけコピー先に反映させてコピー時間を短縮したいです。

実現可能なツール(フリー、商用問わず)ありますでしょうか?

質問者からの補足コメント

  • へこむわー

    皆さん回答ありがとうございます。
    手段の検討会みたいな質問になってきましたが、ある程度仕様の割り切りが必要そうです。
    例えば変更点検知は、LinuxのLVMのスナップショットのような機能と連携すると取得できるのかなとか思っておりますが、結局のところ更新情報を反映する際に、データのインサートがあると、インサート以降のデータはすべて更新することになってしまいそうなで、その時には「諦める」しかなさそうです(結局のところその場合は更新情報がファイルインサート以降すべての分が発生しそうですし)

    アップデートまたはアペンドだけされたファイルだけでも救えるとデータ転送量及び更新量稼げそうですが、やはり現実的に振舞えるツールはなさそうってことですよね。

      補足日時:2017/03/18 06:20

A 回答 (6件)

NO3です。



>変更点の反映については、ブロック単位で、例えばデフラグのようなかなり低レベルなディスク操作が必要になるかと思います。

現行のOSでは、ブロックのサイズは固定なので、途中の1024バイトのブロックのデータが1025バイトに更新されたときに、後ろのブロックに影響が出ないようにするには、OSが管理するファイルの構造を
 可変長のブロックの集まり
のように仕様変更しないと無理な気がします。

OSの修正は大変なので、私ならば、
 現在の1ファイルAを、複数のファイルB1,B2,,に分割し、それらを1フォルダAで管理し、
 データ更新(A → A') を {Bi} → {B’i} として 
 汎用的なファイル単位の差分コピーツールによって代行する
といった方針で実現しますかね。
こうすれば、途中の1024バイトのブロックBiが1025バイトに更新されても、Biの更新だけですみますよね。

フォルダ単位の差分コピーは、
整理整頓 -- お手本と同じフォルダ構造に再配置
http://www.vector.co.jp/soft/winnt/util/se496338 …
がよろしいかと思います
    • good
    • 0
この回答へのお礼

頂いたリンク確認いたします。
重ねて回答ありがとうございました。

お礼日時:2017/03/18 05:58

老舗のTodo Backupというフリーソフトが差分バックアップを実現できます。


http://jp.easeus.com/backup-software/free.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご提示の製品はファイル単位の差分のようですので今回の要件を実現出来るような記載を見つけることが出来ませんでした。

お礼日時:2017/03/24 15:52

転送量がへるだけで、むしろ送り側も受け取り側も処理は増えるので


あまり現実的ではないのでは?
現実的なの無圧縮でアーカイブして、前日のアーカイブとの間で差分をとるとか?
でもそうすると最低でも保存量の3倍の容量が必要になりますね
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
容量だけが問題であれば、既存の技術である程度解決できると思っております。
例えば、重複排除や圧縮など。
また、変更点検知は、仮想環境(VMware等)のCBT的なもので変更点をジャーナルとして取得する方法などいくつか思いつきますが、ニーズは明確なのでもっとかっこいいあっと驚く手法を使ったツールがないかと思って質問しました。

手段の検討会みたいな質問になってきました。

お礼日時:2017/03/18 06:09

フォルダ内のファイルが増減したというのであれば、変化のあったファイルだけコピーする「差分コピー」ではだめなのですよね。



巨大ファイルの部分的な修正を行う「差分コピー」はOSレベルで仕様変更しないと無理な気がします。

たとえば100TBのファイルの1MB目に1バイト追加された場合、残りのデータはすべて1バイトずれた位置、すなわち
 10000バイト目のデータは10001バイト目に
 10001バイト目のデータは10002バイト目に
 10002バイト目のデータは10003バイト目に
記録しなければなりませんので、結局、追加した位置より後ろのデータはすべてコピーして、オリジナルを消去する必要があります。
OSレベルでファイルの保存方法を変更しない限り、このコピー時間は短縮できないと思います。

>実現可能なツール(フリー、商用問わず)ありますでしょうか?
もちろん、同じメディア内でのコピー時間は、メディアをまたいだコピー時間より短いので、差分コピーデータとして「xx-yyの範囲のデータをzzに変更」をメディア経由で送信して、ネットワークドライブ側で、解釈して、ファイルを更新することは可能でしょうが、汎用性があまりなさそうなので、自作する・特注するしか解決策はない気がします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
技術的な課題はおっしゃる通りかと存じます。
変更点抽出は例えばファイルI/OのAPIフック等により、ジャーナル的なものを抽出し、DIFF差分みたいな情報を作成。
変更点の反映については、ブロック単位で、例えばデフラグのようなかなり低レベルなディスク操作が必要になるかと思います。
どちらにしても、更新量がさほど多くなく(同じ場所を何度も更新してたら実ファイルよりジャーナルの方が大きくなってしまいますし)、ほとんど追記しかされないような条件じゃないと現実的ではないなとは思っておりますが、要件は明確なので特化したツールが無いかこちらで問い合わせしてみた次第です。
また何か情報ございましたら追記いただければ幸いです。

お礼日時:2017/03/17 04:58

「差分コピー」ですが、結局全部見ないと差がどこで生じているか判らないので時間は返ってかかってしまうかもしれません。


ちなみに「TB」は「GB」の間違えでは?
    • good
    • 0
この回答へのお礼

TBはGBの間違えではありません。
またそれを何か解決できているツールを探しています。
たとえばコピー元でディクショナリーを持っていて高速で差分を抽出するのツールがないかです。

お礼日時:2017/03/16 19:26

色々ありますので、自分にあったものをどーぞ


https://japan.norton.com/backup-freesoft-4113
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
残念ながら合致するものはご呈示のリンク先には無いようです。

お礼日時:2017/03/16 19:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!