Here’s a neat PowerShell script to grab only the most recent backup files. Given a path, it will recurse the directories and only return the most recent *.bak file in all subdirectories.
$path = "H:\SourceDir"
$destPath = "\\Destination"
function CopyLastBackup
{
try
{
Remove-Item "$destPath\*" -include "*.bak"
$dirs = Get-ChildItem $path | where {$_.PSIsContainer} | where {$_.GetFiles().Count -ne 0}
foreach($dir in $dirs)
{
$file = Get-ChildItem -LiteralPath $dir.FullName -include "*.bak" | sort CreationTime -Descending | select -First 1
Copy-Item -LiteralPath $file.FullName -Destination $destPath -force
write-host $file
}
return 0;
}
catch
{
write-host $error[0]
return 1
}
}
$ret = CopyLastBackup
if($ret -eq 1)
{
throw "Failure"
}
Leave a comment