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

问题描述 投票:1回答:1

我正在尝试创建一个powershellscript来安排备份删除,以便硬盘不会满。

  • 我想要做的是验证哪个文件是最新的
  • 之后我想检查文件大小与第二个最新文件的差异是否超过10%。
  • 如果文件大小在大小范围内,则删除除最新文件大小之外的所有文件大小。
  • 如果filesize小于或大于第二个最新文件的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
powershell backup delete-file
1个回答
2
投票

你可以这样做:

$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

© www.soinside.com 2019 - 2024. All rights reserved.