Я пытаюсь понять как Measure-DedupFileMetadata
работает, поэтому я могу рекурсивно просматривать некоторые папки, чтобы сообщить, сколько места на самом деле используется. Я не знаю, как интерпретировать вывод.
Если я правильно понимаю документацию, DedupDistinctSize должен сообщить мне, сколько места будет освобождено, если я удалю эти файлы (после сборки мусора). Эти числа кажутся точными для большинства моих папок. Но для папок, в которых еще не производилась дедупликация, отображается 0.
Я также не знаю, как понять информацию о SizeOnDisk.
Вот результат для двух папок:
Path : {E:\veeam\folder1}
Volume : E:
VolumeId : \\?\Volume{77da8d6d-1416-4d2a-8c85-75c91f980398}
FilesCount : 19
OptimizedFilesCount : 3
Size : 2.38 TB
SizeOnDisk : 1.81 TB
DedupSize : 491.38 GB
DedupChunkCount : 6786488
DedupDistinctSize : 475.59 GB
DedupDistinctChunkCount : 6561011
Path : {E:\veeam\folder2}
Volume : E:
VolumeId : \\?\Volume{77da8d6d-1416-4d2a-8c85-75c91f980398}
FilesCount : 18
OptimizedFilesCount : 0
Size : 332.7 GB
SizeOnDisk : 332.7 GB
DedupSize : 0 B
DedupChunkCount : 0
DedupDistinctSize : 0 B
DedupDistinctChunkCount : 0
Я провел несколько тестов путем дедупликации различных типов данных и пришел к выводу, что фактическое используемое пространство - это SizeOnDisk + DedupDistinctSize.
Чтобы он выглядел красиво и отображался в ГБ, используйте вычисляемое свойство:
Measure-DedupFileMetadata -Path e:\folder1 | Select Path, @{label="TotalGB"; expression={[math]::Round(($_.SizeOnDisk + $_.DedupDistinctSize) / 1GB, 0)}}
А вот как его написать и создать отсортированную таблицу в текстовом файле:
$Folders = @()
foreach ($folder in (Get-ChildItem -Path E:\ -Directory))
{
Write-Host -NoNewline "Calcuating $($folder.FullName): "
$Result = Measure-DedupFileMetadata -ErrorAction Continue -Path $folder.FullName
$Folders += $Result
Write-Host $Result.DedupDistinctSize
}
$Folders | Select {$_.Path[0]}, @{label='DedupDistinctSizeGB'; expression={[math]::Round($_.DedupDistinctSize / 1GB, 0)}}, @{label='SizeOnDiskGB'; expression={[math]::Round($_.SizeOnDisk / 1GB, 0)}}, @{label="TotalGB"; expression={[math]::Round(($_.SizeOnDisk + $_.DedupDistinctSize) / 1GB, 0)}} | Sort TotalGB -Descending | Format-Table -AutoSize | Out-File -FilePath 'Dedup_Summary.txt' -Append
Результат выглядит так:
$_.Path[0] DedupDistinctSizeGB SizeonDiskGB TotalGB
---------- ------------------- ------------ -------
E:\veeam\xxxxxxx 3868 2178 6045
E:\veeam\xxxxx 840 3712 4553
E:\veeam\xxx 801 3244 4044
E:\veeam\xxxxxxxxxx 683 1213 1896
E:\veeam\xxxxxxxxxxxxxx 41 1636 1678
E:\StorageCraft\xxxxxxx 1537 56 1593
Я не уверен, почему эта команда такая медленная, но мне потребовалось больше недели на выполнение на томе 50 ТБ.