Win7 NTFSボリュームでは、-link-destを正しくサポートするcwrsyncを使用して、「スナップショット」タイプのバックアップを作成しています。ので、私は持っています:
z:\backups\2010-11-28\cygdrive\c\Users\...
z:\backups\2010-12-02\cygdrive\c\Users\...
2010-12-02のコンテンツは、ほとんどが2010-11-28ディレクトリ内のファイルへのハードリンクですが、2010-12-02にのみ新しいファイルまたは変更されたファイルがいくつかあります。 Linuxでは、「du」ユーティリティは、各増分スナップショットがとる実際のサイズを教えてくれます。 Windowsでは、エクスプローラーとcygwinの下のduの両方がハードリンクにだまされ、2010-12-02が2010-11-28よりも少し多くのスペースを占めていることを示しています。
実際に使用されている正しいスペースを表示するWindowsユーティリティはありますか?
Sysinternals Disk Usage (別名du
)を使用してみてください。具体的には、-u
フラグと-v
フラグを使用すると、一意のオカレンスのみがカウントされ、使用状況が表示されます。それが進むにつれて、各フォルダの。
私の知る限り、ファイルシステムは元のファイルとハードリンク(実際にはハードリンクのポイント)の違いを示さないため、フォルダーごとに割引することはできませんが、これを比較的行う必要があります。
テストするために、6つのファイルを含むランダムなフォルダーを作成しました。全部クローンしました。次に、最初のフォルダー内にいくつかのハードリンクとソフトリンクを作成して、最初のフォルダー内の他のファイルと2番目のフォルダー内の他のファイルを参照します。
du -u -v testFld
を実行すると、次のようになります(フォルダーの横の値はKiBであることに注意してください)。
104 <path>\testFld\A
54 <path>\testFld\B
149 <path>\testFld
Totals:
Files: 12
Directories: 2
Size: 162,794 bytes
Size on disk: 162,794 bytes
du -u -v testFld\a
を実行すると、次のようになります。
104 <path>\testFld\a
...
du -u -v testFld\b
を実行すると、次のようになります。
74 <path>\testFld\b
...
不一致に気づきましたか?
Bのファイルを参照するAのシンボリックリンクは、「フル」実行中にのみAに対してカウントされ、Bは54のみを返します(ファイルが元々Bにあり、Aからハードリンクされていたとしても)。 Bを個別に測定する場合(または、-u
一意のフラグを使用しない場合)、Bは74の「完全な」測定値をカウントします。
PowerShell5はオプションかもしれません。これはWindows7で利用できますが、これはServer 2012 R2でのみテストしました 2015年4月プレビュー
PowerShell 5のファイルシステムプロバイダーには、2つの新しいプロパティLinkType
とTarget
があります。
ls taskmgr.exe | fl LinkType,Target
これは次を返します:
LinkType : HardLink
Target : C:\Windows\WinSxS\AMD64_Microsoft-windows-advancedtaskmanager_..._6.3.9600.17..2\Taskmgr.exe
そのため、ハードリンクではないsystem32内のすべてのファイルのみを表示できるようになりました。
cd $env:SystemRoot\System32
ls -Recurse -File -force -ErrorAction SilentlyContinue | ? LinkType -ne HardLink | Measure-Object -Property Length -Sum
これは次を返します:
Count : 844
Sum : 502,486,831
あなたはそれをすべてのファイルと比較することができます:
ls -Recurse -File -force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
Count : 14092
Sum : 2,538,256,262
したがって、2GB以上の13,000を超えるファイルはハードリンクです
私もこの質問についていくつかの調査をします。これが私が発見した結果です。
NTFSでハードリンクされたファイルを含むフォルダサイズは、次の3つの異なる意味で考えることができます。
番号2は、[NTFSハードリンクの追跡]オプションが有効になっている場合に、TreeSizeProfessionalの[詳細]タブの[割り当て済み]列に表示されるものです。
これがwinsxsフォルダーの例です(10の反対に7.5Gb):
3番目の値を受け取ることはまだ私にとっての質問です。 TotalCommanderとNL_Infoプラグインを使用して下限を取得することはできましたが。私が持っているのは、ハードリンクが1つしかないファイル(一意のファイル)が占めるサイズです。与えられた例では約5Gbでした。
つまり、harrymcの答えを拡張しようとすると、言い換えれば言います。
ここにいくつかの事実を設定する必要があると思います。
すべてのファイルは実際にはディスク上のバイトの束へのハードリンクであるため、Windowsはハードリンクを「検出」できません。
Duツールは重複を検出しますが、これも誤りです。フォルダーAにファイルが含まれ、BにA内のファイルへのハードリンクのみが含まれている場合、du of A and du ofBは同じ答えを返します-元々Aから来たファイルのサイズですが、これらのファイルも現在Bにあります。
これは実際には正しいです。たとえば、Aを削除した場合、そのファイルはBによって参照されているため、ディスク上で削除されません。ハードリンクの場合、どのファイルがソースで、どのファイルがハードリンクであるかかなり恣意的で無意味です。
Duなどの製品は、重複を割り引いてディレクトリを一覧表示します。これは、すべてのファイルとハードリンクが1つのディレクトリに含まれている場合にのみ機能します。多くのフォルダリスト製品がそれを行います。
結論:ハードリンクでは、「NTFSディレクトリで使用される実際のサイズ」の質問は無意味です。
TreeSize Professional (〜$ 55、30日間の試用版)は、NTFSハードリンクディスク領域を区別すると主張しています。簡単な試用はこれを裏付けるようです。
ハードリンクのサポートはそのままではオンになりません:ツール>オプション>スキャンに移動し、再スキャンしてから、Ctrl-1
とCtrl-2
を使用してサイズおよび割り当てられたスペース。 Allocatedは実際に使用されるスペースであり、Sizeは通常によって報告される統計です他のプログラム。
ハードリンクのサポートをオンにすると、パフォーマンスが低下します(必要に応じて、シンボリックリンクとマウントも)。カラーパレットは私の好みには派手ですが、それはこのジャンルのコースと同等のようです。また、ボックスチャート領域をクリックするときは注意してください。フォルダを展開するだけの場合に、誤ってドラッグアンドドロップでフォルダを移動してしまう可能性があります。