exdupe.exeの追加-軽快な重複排除アーカイバ

少し前に、私は不快な問題に遭遇しました-私はいくつかの仮想マシンをバックアップする必要がありました。 バックアップとは、最新のコピーを含むアーカイブだけでなく、指定されたスキームに従って作成されたこれらのアーカイブの小さな束を意味することを言わなければなりません。 もちろん、アーカイブ用のバッチファイルは迅速に作成され、問題なく動作しましたが、サイズ...バックアップセットのサイズは巨大でした。 それらがほぼ同じ仮想マシンであり、これらの仮想マシンのほぼ同じバックアップであることが特に悲しかった。 そこで、「重複排除」と「差分」という言葉を認識し、何らかの重複排除圧縮ユーティリティを探し始めました。



異なるユーティリティは、コンテンツが似ているファイルを圧縮するための異なるアプローチを提供しましたが、1つのことが一般的であることが判明しました-1つのソースファイルを選択し、他のユーティリティを設定します-それはソースと残りの違いを決定し、結果をアーカイブします、ユーティリティはすべてをデプロイします。

つまり、ソースはどこかに展開する必要がありました。 常に-アーカイブ時と解凍時の両方。 つまり、「油絵」-私は5台の仮想コンピューターを所有しています。今日の仮想コンピューターと昨日の仮想コンピューターの違いを使って、今日アーカイブを作成したいと思います。

-昨日から経済全体の完全なコピーを準備するため、

-次に、ユーティリティを実行すると、diffおよびdiffアーカイブが作成されます。

これをどこかにコピーしたい-昨日のデータ(ソース)を圧縮せずにドラッグしない-ソースもアーカイブする必要がある 明日、昨日と明日との差分を作成する必要がある場合-ソースは、圧縮されていないそのままの形で利用可能でなければなりません-昨日の状態のコピー、または展開する必要があるアーカイブ 新しいホストにアーカイブをデプロイする必要がある場合-最初にソースをデプロイし、次にdiff自体をデプロイする必要があります。

まあ、ディスクスペース-あなたは買うことができますが、時間! このような多くの時間がソースの解凍に費やされています! しかし、彼は-すべてを正しく行う方法を知っていたアーカイバー-重複排除を使用してソースをアーカイブに入れてから、圧縮ソースから直接差分を作成し、アーカイブ/解凍の速度はハードドライブの速度にかかっています。 かっこいい! しかし、Windows 2003では機能しません。 ご存知のように、すべてが単独で機能する場合、この記事は書きません。



だから、今-救急車。

アーカイバはexdupeと呼ばれ、ソースコードが部分的にアクセス可能なフリーウェアの一種でした。 一部-重複排除ライブラリが静的にリンクされ、コマンドラインユーティリティのコードがレイアウトされたため(現在、すべてのコードがレイアウトされたため)。 すべてがVisual Studio 2012の下のプロジェクトの形式にあります。すべてが64ビットバージョンのWindows(Win2003を持っています)でのみ起動され、起動時にエラーが発生しました。

エントリポイントが見つかりません

プロシージャエントリポイントVssFreeSnapshotPropertiesInternalがダイナミックリンクライブラリVSSAPI.DLLに見つかりませんでした。

画像

ソースはプログラムのWebサイトからすぐにダウンロードされまし (バージョン0.5.0をドップしました)。

エラーの原因は、私のWindowsとプロジェクトで接続されたバージョンのVSSAPI.dllライブラリのバージョンの非互換性です。

ソースを掘り下げた後、最も簡単な方法-シャドウコピーのサポートをオフにするだけ-VSSライブラリへの呼び出しとVSSへのアクセスを担当するルート関数を削除することに気付きました。 エラーはあるものの、コードは直接の手で書かれており、2つの関数しかなく、それらはファイル "shadow \ shadow.cpp"にあったと言わなければなりません。

これが私たちのすることです:

  1. 関数void unshadow(void)を見つけます
  2. 342行目のコメント:

    VssFreeSnapshotProperties(&prop.Obj.Snap);
          
          





    なります:

      //removing shadowing //VssFreeSnapshotProperties(&prop.Obj.Snap);
          
          



  3. 330行前

      ULONG fetched = 0;
          
          







    追加:

     //remove shadowing return 1;
          
          





  4. 関数int shadow(ベクトルボリューム)を見つけます。

    177行目のコメント:

      hr = ::CreateVssBackupComponents(&comp);
          
          





    なります:

      //remove shadowing //hr = ::CreateVssBackupComponents(&comp);
          
          







    5.行157の前:



      // Initialize COM and open ourselves wide for callbacks by // CoInitializeSecurity. HRESULT hr;
          
          







    固執する:

     //remove shadowing return 1;
          
          







  5. 組み立てる前に-プロジェクトプロパティの実行可能ファイルの名前を変更して、作成者の「exdupe.exe」と混同しないようにすることをお勧めします。 「exdupe-050-noshadow.exe」と入力します。

    収集、実行-動作します!

    アルゴリズムは本当に賢く、もちろんメモリを食い尽くし、カーネルをロードしますが、これは設定できます-私は「-t2」キーで2つのストリームで快適に実行しています。 通常のハードディスクで、圧縮を使用してソースを重複排除します。

    -44分で65.7 GB = 24.8 MB / s

    -24.1 GBに圧縮=圧縮率0.37

    翌日重複排除

    -処理時間10分 20秒 = 106 MB /秒

    -2.1 GBに圧縮された差分



    64ビットバージョンのOSからのみ起動するという制限は人為的に導入され無効にできると別に言いますが、64ビットプログラムで作成されたアーカイブは通常32ビットに拡張されますが、ここでは記録速度はありません(そして、待つ理由はありません)必要)。

    ライセンスの制限のため、プロジェクトのバイナリと全文をアップロードしません。



    Exdupe Utility Webサイト-www.exdupe.com

    出典: www.exdupe.com/old



All Articles