如果最新文件大小不小,请删除旧的备份文件

时间:2019-03-07 13:20:20

标签: powershell backup delete-file

我正在尝试创建一个powershellscript来计划备份删除,以使HDD不会变满。

  • 我想要做的是验证哪个文件是最新的
  • 然后,我要检查文件大小与最新的第二个文件的差异是否超过10%。
  • 如果文件大小在大小范围内,则删除除最新文件以外的所有文件。
  • 如果文件大小小于或大于第二个最新文件的10%,则删除除最新文件和第二个最新文件以外的所有文件。

我希望你们能帮我解决如何使代码起作用的想法。

我从下面开始删除所有早于2天的文件,但是我不确定如何更改该文件以使最新文件不依赖日期。

$Path = "C:\Temp\Backup\Folder1\"
$Days = 2
$Date = Get-Date
$Include = "*.gpg"
$Exclude = "*.txt"

Get-ChildItem $Path -Recurse |
Where-Object {-not $_.PSIsContainer -and $Date.Subtract($_.CreationTime).Days -gt $Days } |
Remove-Item -WhatIf

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

$BackupFiles = Get-ChildItem -File | Sort-Object LastWriteTime -Descending

$LatestBackup = $BackupFiles | Select -First 1
$PrevBackup = $BackupFiles | Select -Skip 1 -First 1

$BackupSizeThreshold = $PrevBackup.Length * 0.1


$FilesToRemove = If ($LatestBackup.Length -le ($PrevBackup.Length + $BackupSizeThreshold) -and $LatestBackup.Length -ge ($PrevBackup.Length - $BackupSizeThreshold)) {
    $BackupFiles | Select -Skip 1
}
Else {
    $BackupFiles | Select -Skip 2
}

$FilesToRemove | Remove-Item -WhatIf

如果看到期望的结果,请删除-WhatIf