Как скопировать большие двоичные объекты в хранилище Azure с помощью PowerShell без переопределения и без подтверждения для каждого файла?

#powershell #azure #azure-blob-storage #azure-powershell

#powershell #azure #azure-blob-storage #azure-powershell

Вопрос:

Я пытаюсь создать сценарий PowerShell с использованием модулей Azure PowerShell для резервного копирования контейнера службы Blob-объектов в другой контейнер резервной учетной записи хранилища.

Из-за размера контейнера (несколько ТБ) я хочу, чтобы резервная копия была инкрементной, поэтому я хочу никогда не переопределять файлы в контейнере назначения (для нас этого достаточно, потому что мы никогда не обновляем существующие файлы в исходном контейнере).

Однако я не могу найти способ заставить скрипт вести себя подобным образом (не переопределять файлы в контейнере назначения) без запроса подтвердить / отклонить каждое потенциальное переопределение. Я хочу, чтобы это подтверждение было подавлено.

Пример:

 $sourceContext = New-AzureStorageContext -StorageAccountName $SourceStorageAccountName -StorageAccountKey $sourceStorageAccountKey
$destinationContext = New-AzureStorageContext -StorageAccountName $DestinationStorageAccountName -StorageAccountKey $destinationStorageAccountKey 

$blobs = Get-AzureStorageBlob -Context $sourceContext -Container $SourceContainerName

# Asks for confirmation for every blob that already exists in the destination container
$blobs | Start-AzureStorageBlobCopy -Context $sourceContext -DestContext $destinationContext -DestContainer $DestinationContainerName
  

Ответ №1:

Пожалуйста, попробуйте использовать -Force параметр.

Из documentation :

-Принудительно

Указывает, что этот командлет перезаписывает конечный большой двоичный объект без запроса подтверждения.

Итак, ваша команда будет:

 $blobs | Start-AzureStorageBlobCopy -Context $sourceContext -DestContext $destinationContext -DestContainer $DestinationContainerName -Force
  

Ответ №2:

Согласно справочному документу команды Start-AzureStorageBlobCopy, возможно, у него нет способа не перезаписывать существующие файлы параметром без запроса. Поскольку размер контейнера резервной копии составляет несколько ТБ, исключение существующих файлов (больших двоичных объектов) с помощью кода PowerShell, возможно, не лучший выбор.

Пожалуйста, попробуйте с -confirm: $ true запрос будет задан только один раз, если вы выберете [Да для всех] или [Нет для всех]. Поскольку вы не хотите перезаписывать существующие файлы, пожалуйста, выберите опцию [Нет для всех].

 $blobs | Start-AzureStorageBlobCopy -Context $sourceContext -DestContext $destinationContext -DestContainer $DestinationContainerName -Confirm:$true
  

Подтвердите

Кстати, принудительно он перезапишет все существующие файлы без запроса.