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

PowerShell 5.1归档位设置及每日备份相关技术问询

日常备份脚本的归档位优化方案

问题解答

  • 当日首次执行备份时,如何修改文件的归档位?
    备份完成后,通过Set-ItemProperty命令将文件的Archive属性设为$false,以此清除归档位(Windows中归档位用于标记文件是否需要备份)。

  • 当日晚些时候覆盖该文件后,归档位会被重置吗?
    会。当文件被修改(包括覆盖、编辑)时,Windows系统会自动将该文件的归档位设置为$true,标记为需要备份。

  • 如何添加功能跳过当日已备份的文件?
    在筛选文件时,新增归档位为$true的判断条件,只选择需要备份的文件;备份完成后清除归档位。这样当日后续备份时,已备份过且未修改的文件会因归档位为$false被跳过。

优化后的脚本代码

# 筛选符合条件的文件:指定时间内修改、非文件夹、归档位已标记为需备份
$files = @(Get-ChildItem $i -Include *.* -Exclude *.zip, *.rar, *.exe -Recurse | 
    Where-Object {
        $_.LastWriteTime -gt (Get-Date).AddDays(-$days).AddHours(-$hours).AddMinutes(-$mins) -and
        -not $_.PSIsContainer -and
        ($_.Attributes -band [IO.FileAttributes]::Archive)
    })

if ($files -ne $null) {
    foreach ($file in $files) {
        Write-Host ("待备份文件: " + $file.Name) -ForegroundColor Red
        if ($file.Length -lt 9999999) {
            Copy-Item -Path $file.FullName -Destination $BACKUPATH
            # 备份完成后清除归档位,标记为已备份
            Set-ItemProperty -Path $file.FullName -Name Archive -Value $false
        }
    }
}

方案说明

  • 当日首次备份:仅归档位为$true的文件(上次备份后修改过的)会被选中,备份后清除归档位,后续当日备份时这些文件会被跳过。
  • 当日修改文件:文件被修改/覆盖后,归档位自动重置为$true,再次执行备份时会被重新选中并备份,备份后再次清除归档位。
  • 次日备份逻辑:若文件次日被修改,LastWriteTime更新且归档位设为$true,会被纳入当日备份范围;若未修改,LastWriteTime不在指定时间区间内,不会被备份,避免永久跳过的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:05:13