You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell脚本在多台机器备份文件夹中保留最新7组.tgz及对应.txt文件

PowerShell脚本实现备份文件保留逻辑

脚本说明

这个脚本会批量处理指定机器的backup文件夹,仅保留最新7份.tgz备份文件及其对应的.txt日志/校验文件,删除其余旧文件,适配多机器批量操作场景。

完整脚本

# 配置要处理的机器列表
$targetMachines = @("A", "B", "C", "D")
# 目标文件夹路径模板({0}会被替换为机器名,可根据实际路径修改)
$backupFolderTemplate = "\\{0}\c$\backup"

foreach ($machine in $targetMachines) {
    Write-Host "正在处理机器: $machine" -ForegroundColor Cyan
    
    # 拼接当前机器的备份文件夹路径
    $currentBackupPath = $backupFolderTemplate -f $machine
    
    # 检查文件夹是否存在
    if (-not (Test-Path -Path $currentBackupPath)) {
        Write-Warning "机器$machine的备份文件夹不存在: $currentBackupPath"
        continue
    }

    # 获取所有.tgz文件,按最后修改时间降序排序
    $tgzFiles = Get-ChildItem -Path $currentBackupPath -Filter "*.tgz" | Sort-Object LastWriteTime -Descending

    # 若.tgz文件数量≤7,无需清理
    if ($tgzFiles.Count -le 7) {
        Write-Host "机器$machine的.tgz文件数量不足7份,无需清理" -ForegroundColor Green
        continue
    }

    # 筛选出需要删除的.tgz文件(跳过前7个最新文件)
    $tgzToDelete = $tgzFiles | Select-Object -Skip 7

    foreach ($tgzFile in $tgzToDelete) {
        # 匹配对应的.txt文件名(假设与.tgz文件前缀完全一致)
        $txtFileName = $tgzFile.BaseName + ".txt"
        $txtFilePath = Join-Path -Path $currentBackupPath -ChildPath $txtFileName

        # 删除.tgz文件
        Remove-Item -Path $tgzFile.FullName -Force -ErrorAction SilentlyContinue
        Write-Host "已删除旧备份文件: $($tgzFile.FullName)" -ForegroundColor Yellow

        # 若对应.txt文件存在,一并删除
        if (Test-Path -Path $txtFilePath) {
            Remove-Item -Path $txtFilePath -Force -ErrorAction SilentlyContinue
            Write-Host "已删除对应日志文件: $txtFilePath" -ForegroundColor Yellow
        }
    }

    Write-Host "机器$machine的备份文件清理完成`n" -ForegroundColor Green
}

Write-Host "所有机器处理完毕" -ForegroundColor Cyan

使用说明

  • 修改机器列表:将$targetMachines数组中的机器名替换为你的实际机器名(支持NetBIOS名称或IP地址)。
  • 调整文件夹路径:如果backup文件夹不在目标机器的C盘根目录,修改$backupFolderTemplate的路径,例如改为"\\{0}\d$\backup"。
  • 权限要求:运行脚本的账号需拥有目标机器backup文件夹的读写权限,建议以管理员身份启动PowerShell。
  • 测试建议:首次运行前,可将Remove-Item命令替换为Write-Host "将要删除: $($tgzFile.FullName)",先确认待删除文件是否正确,避免误删。

关键逻辑说明

  • 先按LastWriteTime降序排序.tgz文件,确保最新备份排在最前面。
  • 跳过前7个最新文件,剩余的即为需要清理的旧备份。
  • 自动匹配同前缀的.txt文件,保证备份文件与配套日志/校验文件同步删除。

内容的提问来源于stack exchange,提问作者Xue Ying

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:42:34