我试图理解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)}} | 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
我不确定为什么这个命令如此缓慢,但是在50TB的音量上花了一个多星期的时间来运行.