Держите установленное количество файлов резервных копий - PullRequest
0 голосов
/ 21 марта 2012

У меня есть несколько файлов и папок, для которых я хочу создать резервную копию с помощью 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 изрезервные копии, чтобы определить и пометить резервные копии, которые будут удалены при следующем запуске сценария.Бонусом было бы, если бы я мог использовать этот массив с или без массива расширений файлов и резервной копии папки (так что это был бы один шаг для создания обоих наборов резервных копий).

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

Вот что я имею после использования вашего примера кода.(Спасибо, кстати).

$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 all будет zip в txtBkup .... zip x1.xml x2.xml все будет zip в xmlBkup ....zip папка c: \ myfiles заархивируется в fldrBkup .... zip

Мне нужно иметь возможность связать набор расширений файлов с типом резервной копии и циклически выполнять эти резервные копии файлов, а затем идти впередс папками резервных копий.

0 голосов
/ 21 марта 2012

Я бы создал хеш-таблицу с префиксами файлов и счетчиками хранения и экспортировал бы ее в xml

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

$bkup_counts | export-clixml bkup_counts.xml

. В сценарии удаления импортируйте:

$bkup_counts = import-clixml bkup_counts.xml

идля выполнения gci используйте каждую из ключей хеш-таблицы, и вы получите желаемый счетчик хранения для этого типа в качестве значения записи таблицы с этим ключом.

...