Created
July 22, 2020 09:14
-
-
Save comitieutu/050017563254458f2454ce2b5ef37032 to your computer and use it in GitHub Desktop.
Copy blobs from source container to destination container by powershell
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Server side storage copy | |
$SourceStorageAccount = "SourceStorageAccount" | |
$SourceStorageKey = "xysrvAjcX5vVZ6XicUBaJlRRCoMHEuX3OYO0/zCyhoQxSrJtW9EeSt2BTbSrXOsvJgtcjP/xTXRRZvpEhkm9Yg==" | |
$DestStorageAccount = "DestStorageAccount" | |
$DestStorageKey = "Npb0KXlbW/BhTCuvN/3SSw3UhNlv66MTmQaoNmsj/aanfGJnqsHGxRcwABXXRH1E4MxLg4fh7S5QUHRCo5FuBQ==" | |
$SourceStorageContext = New-AzureStorageContext -StorageAccountName $SourceStorageAccount -StorageAccountKey $SourceStorageKey | |
$DestStorageContext = New-AzureStorageContext -StorageAccountName $DestStorageAccount -StorageAccountKey $DestStorageKey | |
$Containers = Get-AzureStorageContainer -Context $SourceStorageContext | |
foreach($Container in $Containers) | |
{ | |
$ContainerName = $Container.Name | |
if (!((Get-AzureStorageContainer -Context $DestStorageContext) | Where-Object { $_.Name -eq $ContainerName })) | |
{ | |
Write-Output "Creating new container $ContainerName" | |
New-AzureStorageContainer -Name $ContainerName -Permission Off -Context $DestStorageContext -ErrorAction Stop | |
} | |
$Blobs = Get-AzureStorageBlob -Context $SourceStorageContext -Container $ContainerName | |
$BlobCpyAry = @() #Create array of objects | |
#Do the copy of everything | |
foreach ($Blob in $Blobs) | |
{ | |
$BlobName = $Blob.Name | |
Write-Output "Copying $BlobName from $ContainerName" | |
$BlobCopy = Start-CopyAzureStorageBlob -Context $SourceStorageContext -SrcContainer $ContainerName -SrcBlob $BlobName -DestContext $DestStorageContext -DestContainer $ContainerName -DestBlob $BlobName | |
$BlobCpyAry += $BlobCopy | |
} | |
#Check Status | |
foreach ($BlobCopy in $BlobCpyAry) | |
{ | |
#Could ignore all rest and just run $BlobCopy | Get-AzureStorageBlobCopyState but I prefer output with % copied | |
$CopyState = $BlobCopy | Get-AzureStorageBlobCopyState | |
$Message = $CopyState.Source.AbsolutePath + " " + $CopyState.Status + " {0:N2}%" -f (($CopyState.BytesCopied/$CopyState.TotalBytes)*100) | |
Write-Output $Message | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment