Skip to content

Instantly share code, notes, and snippets.

@rodolfofadino
Created May 14, 2012 02:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save rodolfofadino/2691325 to your computer and use it in GitHub Desktop.
Save rodolfofadino/2691325 to your computer and use it in GitHub Desktop.
Script de Backup no S3
Add-Type -Path "C:\Program Files (x86)\AWS SDK for .NET\bin\AWSSDK.dll"
$secretKeyID="secret key"
$secretAccessKeyID="access key"
$bucket="BucketName"
$backup_directory="C:\teste"
$new_folder_format = Get-Date -uformat "Backup_%Y_%m_%d/"
foreach($file in Get-ChildItem -Path $backup_directory){
Write-Host $file.fullname
$client=[Amazon.AWSClientFactory]::CreateAmazonS3Client($secretKeyID,$secretAccessKeyID)
$finalName=$new_folder_format+$file.name
$fileFullPath=$file.fullname
$uploadResponses = New-Object "System.Collections.Generic.List[Amazon.S3.Model.UploadPartResponse]"
$initRequest=New-Object "Amazon.S3.Model.InitiateMultipartUploadRequest"
[void] $initRequest.WithBucketName($bucket)
[void] $initRequest.WithKey($finalName)
$initResponse =$client.InitiateMultipartUpload($initRequest)
$fileInfo = New-Object -TypeName System.IO.FileInfo $fileFullPath
$lengh= $fileInfo.Length
$partSize= 5242880
$filePosition =New-Object "Long"
$filePosition = 0
for ( $partNumber = 1; $filePosition -le $lengh; $partNumber++)
{
$uploadRequest = New-Object "Amazon.S3.Model.UploadPartRequest"
[void] $uploadRequest.WithBucketName($bucket)
[void] $uploadRequest.WithKey($finalName)
[void] $uploadRequest.WithUploadId($initResponse.UploadId)
[void] $uploadRequest.WithPartNumber($partNumber)
[void] $uploadRequest.WithPartSize($partSize)
[void] $uploadRequest.WithFilePosition($filePosition)
[void] $uploadRequest.WithFilePath($fileFullPath)
$uploadResponses.Add($client.UploadPart($uploadRequest))
$filePosition += $partSize
Write-Host $partNumber
}
$compRequest = New-Object "Amazon.S3.Model.CompleteMultipartUploadRequest"
[void] $compRequest.WithBucketName($bucket)
[void] $compRequest.WithKey($finalName)
[void] $compRequest.WithUploadId($initResponse.UploadId)
[void] $compRequest.WithPartETags($uploadResponses)
$completeUploadResponse =$client.CompleteMultipartUpload($compRequest)
}
Write-Host "Backup Finalizado"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment