设置 DFS 副本时的一项常见任务是确定已复制文件夹中 32 个最大文件的大小 - 根据当前最佳实践,这些文件的总和应该是暂存区域的最小大小。
Technet 博客中给出了查找和计算此前 32 个文件大小的方法:https ://blogs.technet.microsoft.com/askds/2011/07/13/how-to-determine-the-minimum-staging -area-dfsr-needs-for-a-replicated-folder/
它依赖于使用Get-ChildItem
来查找路径中的所有文件及其大小,按大小排序,丢弃除 32 个最大的文件之外的所有文件,然后计算总和。
当您的路径中的文件数量有限时,这很好,但是在索引包含数十万(如果不是数百万)文件的文件夹时存在严重的缺点。该进程在执行时会将所有内容转储到内存中 - 在我的示例中,它消耗超过 2GB 的虚拟内存 - 并且需要很长时间,即使单个文件非常小也是如此。内存保持分配状态,直到 PS 实例关闭。
PS C:\> measure-command { (get-childitem F:\Folder\with\966693\items -recurse |
sort-object length -descending | select-object -first 32 |
measure-object -property length -sum).sum }
Days : 0
Hours : 0
Minutes : 6
Seconds : 6
Milliseconds : 641
Ticks : 3666410633
TotalDays : 0.00424353082523148
TotalHours : 0.101844739805556
TotalMinutes : 6.11068438833333
TotalSeconds : 366.6410633
TotalMilliseconds : 366641.0633