web-dev-qa-db-ja.com

sdelete -cと-zの違いは何ですか?

この記事 からVDIファイルを圧縮するステップとして sdelete を使用することから学んだ:

sdelete -c c:

しかし、-c(ヘルプテキストで説明されている「クリーンな空き領域」)はどういう意味ですか?空き容量をゼロで書きませんか?そして、-z(ゼロ空きスペース)はどうですか? sdelete -cと-zの違いは何ですか?

編集する

前述の article の手順を試しましたが、.vidファイルのサイズを縮小できませんでした。次に このスーパーユーザーの投稿 に従い、オプション-c-zに変更して成功しました。

したがって、-zは空き領域にゼロを書き込み、-cは何か他のものを書き込むように見えます(ランダムビットの可能性があります)。

27
Frozen Flame

これはよくある間違いだと思います。 -zオプションは以前のバージョンでは使用できなかった可能性があります。 SDelete 1.61言う

-z         Zero free space (good for virtual disk optimization)

これを行うと、最初にハードディスクがフルサイズに拡張されます。 VMWareによる縮小プロセスでのみ、再び小さくなります。

私のマシンでの簡単なテスト:

-z took 1:01 minutes
-c took 2:11 minutes

これは、-zが単純なゼロのみを書き込むのに対し、-cは 軍事標準ワイピングSDelete Webサイト に記載されているDoD 5220.22-Mであることを示しています。

22
Thomas Weller

現在のドキュメント(およびプログラムバージョン2.01):

  • -c空き領域をクリーンアップします。実行中のシステムで使用できるように、空き容量をオプションで指定します。
  • -z空き容量がゼロ(仮想ディスクの最適化に適しています)。

しかし 古いバージョンでは逆になりました:

  • -c空き容量がゼロ(仮想ディスクの最適化に適しています)。
  • -z空き領域をクリーンアップします。

enter image description here

しかし、彼らは何をしますか?

Cleanは可能な最大のファイルを作成し、randomデータで埋めます、次にゼロで埋めます。これはほとんどの人がwipingと考えていることであり、やり過ぎです。

欠点は、仮想ディスクを使用している場合、仮想マシン内で使用している場合、または仮想マシンをストレージスペースで実行している場合です。基盤となるストレージシステムは、ランダムデータを保持するためにリソースを割り当て、ゼロを保持することを強制されます。うまくいけば、基盤となるストレージシステムは、ドライブに割り当てられたすべてのスペースが再利用できることを認識します。これは、これらのすべてのセクターに単にゼロが含まれるためです。

-zゼロ:すべてのセクターにゼロを書き込むだけです。これは、多くの理由で、必要なオプションです。

  • ランダムなデータでのワイプはやりすぎです(データを読み取ることは実際には不可能です。つまり、顕微鏡は実行不可能ですが、一度に1ビットずつ)。
  • 一部のSSDは、セクターにzeroを書き込んでいることを検出でき、それを使用してセクターを空きとしてマークできます(TRIMと同様)。
  • ほとんどの仮想ストレージシステム(VMWare、Hyper-V、Windows仮想ディスク、ストレージスペース)は、ゼロのセクター全体を書き込んでいることを認識し、基礎となるストレージファイルのスペースを再利用する機会を得ます
  • SSDは、最終的な目標が本質的に美化されたTRIMであることを認識せず、(仮想ディスクのように)ゼロが既に含まれているセクターをゼロ以外の値で埋めるよう強制され、再度ゼロで埋められます。 SSDにとってそれはひどいです。

Source:仮想ハードディスクをマウントし、sdeleteが両方のモードで実行したI/O操作を監視しました。

tl; dr:-z Zeroを使用します。より速く、より良く、より安全です。

7
Ian Boyd

これはトーマスの回答へのコメントとしてより適切に投稿されるべきでしたが、まだそれができないので、私はここに投稿します。

「-z」オプションと「-c」オプションを混同することは、おそらく「よくある間違い」です。SDeleteは長年にわたって、これらのオプションの動作を変更してきたためです。以下の参照を見ると、SDeleteには最初に「軍事標準ワイプ」を実行する「-z」オプションがあり、次に空き領域をゼロにする「-c」オプションが追加され、その後v1.51とv1の間のどこかにあるようです。 61はその動作を現在の動作に切り替えました。

参照: sysinternals.comフォーラム および Microsoft TechNetの古いSDeleteホームページ archive.org経由。

6
LN2