我有一台 Windows 2008 服务器,正在将其主驱动器备份到本地硬盘。
因为这个服务器不经常更改,所以只有当发生有价值的更改时我才会手动执行它。
到目前为止,我已经在磁盘上积累了 13 个备份。考虑到我真的只想要最后 2 个;我该如何清除它们?
更新: 需要明确的是,这个问题是关于 Windows 服务器操作系统;而不是 SQL 服务器。
答案1
我正在测试服务器上加载 Windows Server Backup 以进行确认,但以下帖子应该有所帮助:
对于基于卷影副本的备份,没有直接的方法使用 wbadmin 设置备份的最大大小。由于 Windows Server Backup 依赖卷影副本进行版本控制,因此您可以使用 MAX DIFF AREA Size 来控制分配多少空间用于存储版本。
此外,旧的备份版本会不断增长,直到所有可用空间都用完,Windows Server Backup 将自动删除旧版本备份,为新版本备份腾出空间。
您可以在此处调整此阈值:音量->设置->使用限制->XXX MB
或者,您也可以使用“vssadmin resize”命令行来增加卷影副本的存储量限制。
vssadmin resize shadowstorage /for=<ForVolumeSpec> /on=<OnVolumeSpec> /maxsize=<MaxSizeSpec>
例如 Vssadmin resize shadowstorage /for=F: /on=C: /Maxsize=900MB
答案2
使用 Powershell 脚本按日期执行此操作很容易,例如
$Days = 30
$TargetFolder = "D:\temp"
$Now = Get-Date
$LastWrite = $Now.AddDays(-$Days)
$Files = get-childitem $TargetFolder -include *.bkf | Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files)
{ write-host "Deleting File $File" -foregroundcolor "Red";
Remove-Item $File
}
这将删除文件夹 D:\temp 中所有超过 30 天的 *.bkf 文件。
经过一番思考,您可以调整此方法以仅保留一定数量的文件。您必须按日期倒序对 get-childitem 的输出进行排序,并跳过前 n 个文件。
JR