Переместить журналы IIS в корзину AWS s3 - PullRequest
0 голосов
/ 05 октября 2018

Требуется загрузить журналы IIS на 7 дней старше в AWS S3 Bukcet.Используя приведенный ниже код, я могу получить доступ к папкам AWS в сегменте

Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"
$AKey = ""
$SKey = ""
$source = "C:\inetpub\logs\LogFiles\*"
$outputpath = "C:\scripts\Logs\logs3.txt"
Set-AWSCredentials -AccessKey $AKey -SecretKey $SKey

function Get-Subdirectories {
    param  (
        [string] $BucketName,
        [string] $KeyPrefix,
        [bool] $Recurse
    )

    @(Get-S3Object -BucketName $BucketName -KeyPrefix $KeyPrefix -Delimiter '/') | Out-Null

    if ($AWSHistory.LastCommand.Responses.Last.CommonPrefixes.Count -eq 0) {
        return
    }

    $AWSHistory.LastCommand.Responses.Last.CommonPrefixes

    if ($Recurse) {
        $AWSHistory.LastCommand.Responses.Last.CommonPrefixes | ForEach-Object { Get-Subdirectories -BucketName $BucketName -KeyPrefix $_ -Recurse $Recurse }
    }
}

function Get-S3Directories {
    param  (
        [string] $BucketName,
        [bool] $Recurse = $false
    )
    Get-Subdirectories -BucketName $BucketName -KeyPrefix '/' -Recurse $Recurse 
}

Теперь, если я наберу Get-S3Directories -BucketName backups, я получу следующий вывод:

SERVER-xxx-OLogs/
SERVER-xxx-untime-logs /
SERVER-xxx-FRLogs/
SERVER-oooooRLogs/
SERVER-IISLogFiles/

Теперь проблема в том, что у меня естьпереместить IIS старше 7 дней в SERVER-IISLogFiles/ Каталог

Итак, я создал этот

$sfolder = Get-S3Directories -BucketName Backups
Foreach ($folder in $sfolder) {
    $wc = New-Object System.Net.WebClient

    Set-AWSCredentials -AccessKey $AKey -SecretKey $SKey -StoreAs For_Move
    Initialize-AWSDefaults -ProfileName For_Move -Region US-east-1

    Start-Transcript -path $outputpath -Force
    foreach ($i in Get-ChildItem $source -include *.log -recurse) {
        if ($i.CreationTime -lt ($(Get-Date).AddDays(-7))) {
            $fileName = (Get-ChildItem $i).Name
            $parentFolderName = Split-Path (Split-Path $i -Parent) -Leaf
            Write-S3Object -BucketName $folder -File $i
        }
    }
}
Stop-Transcript

Я не совсем уверен, будет ли он перемещен в каталог SERVER-IISLogFiles/, не уверенесли я что-то здесь упускаю, кроме этого, я сомневаюсь, что он сохранит структуру папок локальной папки IIS на IIS

1 Ответ

0 голосов
/ 16 октября 2018

ОБНОВЛЕНИЕ:

Вы можете попробовать использовать следующий метод для создания структуры папок в вашем S3 Bucket.Использование параметра «Префикс ключа» и разделение пути к папкам должны работать.

$Params = @{
    BucketName = 'backup'
    Folder = '$Source or whatever path'
    KeyPrefix = (Split-Path -Path 'C:\PATHTO\SOURCE\DIRECTORY' -Leaf).TrimEnd('\')
    Recurse = $true
    Region = 'REGION'
}
Write-S3Object @Params
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...