【发布时间】:2021-08-18 19:00:10
【问题描述】:
我有一个充满备份文件的目录,但需要自动清理该目录,因为空间不足。最简单的方法是使用 powershell 脚本。
备份每天创建 2 个备份。我想每天保留 2 个备份 7 天,超过 7 天但不超过 3 个月的备份我想每天保留 1 个,超过 3 个月的所有备份我想每周保留 1 个。超过 2 年的所有内容都会被删除。
我写的第一个函数会删除超过 2 年的所有内容:
$checkPath = "C:\demo\"
$list = (Get-ChildItem -Path $checkPath | Where-Object {$_.LastWriteTime -lt (Get-Date).AddYears(-2)}).FullName
$count = $list.Length
for ($i = 0; $i -lt $count; $i += 1)
{
Write-Verbose "[$i] $($list[$i])"
Remove-Item -Path $list[$i]
}
之后我创建了一个函数来删除每个第二次备份:
$checkPath = "C:\demo\"
$list = (Get-ChildItem -Path $checkPath | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-7)} | Where-Object {$_.LastWriteTime -lt (Get-Date).AddMonths(-3)}).FullName
$count = $list.Length
for ($i = 0; $i -lt $count; $i += 2)
{
Write-Verbose "[$i] $($list[$i])"
Remove-Item -Path $list[$i]
}
嗯,我觉得有点失落,我是在正确的道路上吗?有没有人可以建议“做得更好”?
【问题讨论】:
-
您能简化您的备份删除请求吗?大声笑关于日期是
-
@AbrahamZinala 我希望我可以。在这种情况下,我只能使用 CreationTime 或 LastWriteTime。在 7 天内,我需要在接下来的 3 个月内每天 1 次保留 14 次备份,之后每周 1 次在 2 年内保留一次。
-
备份是 same-ish 名称,都在同一个目录中吗?
标签: powershell file backup