保留一定数量的备份文件

时间:2012-03-21 14:05:08

标签: arrays powershell rotation backup delete-file

我有一些文件&文件夹我想使用PowerShell备份。我正在使用数组来保存我想备份到一个备份的文件扩展名,然后我也备份整个文件夹。我创建的zip文件名为TxtFileBkup_yyyymmdd_hhMMss.zip和FldrBkup_yyyymmdd_hhMMss.zip。

我构建要备份的项目列表(按扩展名),如下所示:

$extArray = @("*.txt","*.asc")
foreach ($ea in $extArray) {
    $filelist += Get-ChildItem $ToBeZipped"\*" -Recurse -Include $ea |Select-Object fullname
}

foreach ($fn in $fileList) {
    $fileName = $fn.FullName
    create-7zip $filename $zipFolder\$DataFileOut
    }

然后在另外的步骤中单独备份该文件夹。

稍后,我在备份文件夹中设置所有文件的属性字节,然后计算匹配特定模式的文件夹中的文件数,如果超过5,则取消设置检查的属性字节(并删除)在下一次运行。

$delfiles=0 
$delfiles= (dir $zipFolder\TargetBackup*.zip).count-5 
if ($delfiles -gt 0) 

# If there are more than 5 zipped backups, we'll turn off the archive bit on them
{dir $zipFolder\TargetBackup* | sort-object -property {$_.CreationTime} |
select-object -first $delfiles |
foreach-object { attrib $_.FULLNAME -A} }}

我想要做的是将通用备份名称(TxtFileBkup,FldrBkup)与我想要的一些备份一起存储在一个数组中,然后使用该数组& nbr of backup用于确定并标记下次运行脚本时要删除的备份。如果我可以使用带有或不带有文件扩展名数组的数组,那将是一个额外的好处。文件夹备份(因此创建两组备份将是一步)。

2 个答案:

答案 0 :(得分:0)

我创建了一个文件前缀和保留计数的哈希表,并将其导出到xml

$bkup_counts = @{
TxtFileBkup = @('File',5)
FldrBkup = @('Folder',6)
}

$bkup_counts | export-clixml bkup_counts.xml

在删除脚本中,导入:

$bkup_counts = import-clixml bkup_counts.xml

并通过哈希表键来进行gci,并且您已将该类型的所需保留计数作为具有该键的表条目的值。

答案 1 :(得分:0)

这是我使用您的示例代码后的内容。 (谢谢,BTW)。

$bkup_Counts = @{
FldrBkup = 5
txtBkup = 6
}

$type = $null
#set Backup Types from the array we just defined
foreach ($type in $bkup_Counts.Keys) {
    $bkupTypeArr += $type
    }
# nameConv has dt stamp of getdate, 
# fArray will have filename in it FldrBkupYYYYMMDD_HHmmSS.zip and
#     txtBkupYYYYMMDD_HHmmSS.zip
$type = $null
foreach ($type in $bkup_Counts.Keys) {
    $fArray += $type + $nameConv
    }
# Array of extensions txt, asc 
foreach ($ea in $extArray) {
    $filelist += Get-ChildItem $ToBeZipped"\*" -Recurse -Include $ea |Select-Object fullname
}

我需要做的是,有办法将一组扩展与一组bkup类型相关联,然后将这些备份类型与一组文件或文件夹备份相关联。

示例 - f1.txt f2.txt f3.asc f4.asc   所有将拉入txtBkup .... zip x1.xml x2.xml   所有将拉入xmlBkup .... zip 夹   c:\ myfiles将压缩到fldrBkup .... zip

我需要能够将一组文件扩展名与备份类型相关联,并通过这些备份文件循环,然后继续使用文件夹备份。