根据SLA管理备份的最后一部分需要帮助

时间:2013-08-12 09:56:40

标签: powershell backup

作为我之前的问题的更新,我将发布我到目前为止的脚本,前两个任务我已经设法完美地编写脚本,留给我30天以下的备份,当更旧时,只在星期日创建备份。但是,我无法完成第3项任务。谁能请我提供一些关于如何完成第3项任务的指针?任何帮助将不胜感激。

这是我的代码sofar:

Function FirstCheck{

$Today = GET-Date

#Check for *.BAK files to see if older than 30 days.
$BackupsOlderThan30 = GET-CHILDITEM C:\Temp\OnTracBak\ –filter *.BAK | WHERE { (($Today - $_.LastWriteTime).Days –gt 30 ) }

#Check for files older than 30 days and that are not Sunday
$NotWeeklyBackups=$BackupsOlderThan30 | where { ($_.LastWriteTime ).DayOfWeek –ne ’Sunday’ }

$NotWeeklyBackups | REMOVE-ITEM

$NotWeeklyBackups.Count

} 

我可能对你有一个问题/一点挑战。 我会尽可能清楚地解释它。

情况: 我们公司为客户使用SLA。

此SLA中的一项是备用条款...... 在这里我们定义了几条规则:

  1. 从今天开始的前30天,应该每天进行备份并保留。
  2. 第二个月和第三个月应每周备份一次
  3. 第四个到第二十四个月应该每月备份一次。
  4. 现在,备份是每天进行的。 因此,我们的备份文件夹目前的大小约为4TB。 (通向大路。)

    当然,我们可以手动跟踪和删除或保存我们的备份文件,但当然,我想使用Powershell脚本自动执行此操作。

    脚本应该执行以下操作: 检查.bak和.trn文件的文件夹和子文件夹。 获取这些文件的日期并应用以下规则:

    1. 如果文件的使用期限为1到30天,请保留所有文件。
    2. 如果文件介于第二个月和第三个月之间,请每周保留一次完整备份(星期日)(删除其他适用的备份文件)
    3. 如果文件介于第4个月和第24个月之间,请保留evey第4周的完整备份...(删除其他适用的备份文件)
    4. 目前我不知道如何或在何处开始编写脚本或显然如何执行这些扩展搜索......: - (

1 个答案:

答案 0 :(得分:1)

使用Get-ChildItem cmdlet列出文件。每个文件都有LastWriteTime属性,您可以通过过滤集合。过滤的业务规则留给读者练习。简单的过滤示例是这样的,

$files = @(gci path-to-files) # Force gci to return an array
$cutPoint = (get-date).addDays(-30) # Get date 30 days ago
$filesToPrune = $files | ? { $_.LastWriteTime -lt $cutPoint } # Files for archive process