【发布时间】:2020-05-26 19:55:49
【问题描述】:
我有超过 10 TB 的日志文件数据。我想找到一种有效的方法来删除超过 3 年的日志文件。最初,我正在考虑安排这个 PowerShell 脚本:
# Delete all Files in PATH older than 3 years (1095 days) old
$Path = "Path to log files"
$Daysback = "-1095"
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
Get-ChildItem $Path | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item
我担心循环 10 TB 的数据将需要数小时才能运行,即使该脚本似乎在 O(n) 上运行。有人有更好的解决方案吗?
【问题讨论】:
-
文件占用的空间无关紧要。唯一重要的是文件的数量。
-
很遗憾,文件很多
-
我建议去掉
-1095周围的引号并将$DateToDelete设置为$CurrentDate.AddDays($Daysback).Date以将其设置为午夜。此外,将开关-File添加到 Get-Childitem 以确保您只处理文件,而不是目录。 -
为什么不用
AddYear(-3)而不是AddDays?
标签: windows powershell logging server