#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
Кстати, принудительно он перезапишет все существующие файлы без запроса.