Рубрики
Uncategorized

Разобраться с 0 байтовыми файлами в хранилище Azure Blob с легкостью с помощью Azure PowerShell

Введение Вы когда-нибудь чувствовали, что вы столкнулись с проблемой, который заберет вас … Помечено с лазурным лазурным, дежоптом, PowerShell.

Вступление

Вы когда-нибудь чувствовали, что вы столкнулись с проблемой, который доставит вам долгое время, чтобы решить? У меня было это чувство, когда мне пришлось отслеживать поврежденные файлы в хранилище Azure Blob. К счастью, с помощью некоторых скриптов PowerShell для Azure я смог легко проследить и исправить файлы, в моем случае удаляя их.

Если это звучит вам знакомы, и если вы ищете пошаговый план обрабатывать файлы навалом, то вы пришли на правильное место. В этой статье я буду кратко обсудить, как файлы повреждены. Затем я покрою ручной подход, который я взял, чтобы найти файлы. Наконец, я представлю пошаговый план сценариев PowerShell для поиска и удаления файлов байтов 0.

Причина проблемы: вне памяти

Обеспечение приложения — это платформа цифрового опыта ( Kentico Xperience ), которая состоит из типичных компонентов Azure, таких как Azure Web App, Azure SQL базы данных и хранение BLOB Azure для хранения мультимедийных файлов. Синхронизация с системой управления информацией о продукте осуществляется каждую ночь через запланированную задачу, в результате чего новейшие данные продукта, включая изображения, обновляются и хранятся в хранилище Azure Blob. Синхронизация проходила гладко до некоторой точки сообщения об ошибке: Тип исключения: система. OutofMemoryException произошел.

Сбой синхронизации не был напрямую связан с сломанными изображениями. Только после того, как отчеты пришли в эти изображения были случайным образом отсутствуют на сайте, стало ясно, что происходит больше. Отладка процессора изображения показала, что из-за исключения памяти миниатюры были сгенерированы как 0 изображений байтов, распространяются над десятками папок 😱. И поскольку только обновленные продукты синхронизируются, в поисках сломанных изображений миниатюры похоже на поиск иглы в стоге сена.

Ручной подход к поиску и удалению сломанных изображений

В поисках байтовых файлов я попал на папки Azure Temp и Azure Cache в Azure Web App. Приложение использует эти папки для хранения временных данных из хранения Azure Blob. Через Куду Консоль Услуга доступна для Azure Web Apps, можно перемещаться по этим папкам с помощью командной строки. Выполняя следующий скрипт командной строки, все 0 файлов байтов будут искать и записаны в файл TXT:

forfiles /S /M *.* /C "cmd /c if @fsize EQU 0 (if @isdir EQU FALSE echo @path)" > list.txt

Источник: Как найти и перечислите нулевые байтовые файлы в Windows и Linux

Теперь, когда у нас есть список сломанных файлов, мы можем отслеживать их в контейнере для хранения носителя Azure Blob. Для этого я могу очень рекомендовать Microsoft Azure Storage Explorer 💯.

Этот подход работает нормально, если вам нужно только пройти разумное количество файлов и папок. В моем случае это касается десятков файлов в еще большего количества папок. Вот почему я пошел в поисках способа поиска и удалять все 0 байтовых файлов в одном Go. Azure PowerShell к спасению!

Пошаговое руководство Azure PowerShell для поиска и удаления 0 Байтовые файлы

Это руководство основано на командах Azure PowerShell. Для получения дополнительной информации проверить, как вы можете Установите модуль Azure AZ PowerShell Отказ Шаги состоят из команд Azure PowerShell для:

  • Доступ к подписке Azure
  • Укажите учетную запись Azure Storage
  • Выполните команду поиска, чтобы найти файлы
  • Расширить команду поиска с инструкцией для удаления

В следующих шагах нам нужно будет предоставить некоторые данные из Azure. Рекомендуется проверить, есть ли у вас необходимые разрешения для доступа к вышеупомянутым ресурсам Azure через Azure PowerShell.

ПРИМЕЧАНИЕ. Я рекомендую проверить сценарии широко в тестовой среде, прежде чем идти на дикий на производстве.

Шаг 1: Подключитесь к вашей Azure Account Вы можете необязательно указать желаемый арендатор Azure, проходя в -Тенантид параметр. Смотрите Документация для получения дополнительной информации.

Connect-AzAccount 

Шаг 2: Создайте контекст хранения Azure Далее мы укажем, какое хранение Azure Blob мы собираемся нацелить. Это можно сделать с помощью Контекст хранения Azure . Поскольку нам нужен контекст на следующих шагах, мы храним контекст хранения Azure в $ Контекст Переменная.

$Context = New-AzStorageContext -StorageAccountName "< Account Name >" -StorageAccountKey "< Storage Key ends with == >"

Шаг 3: Поиск файлов Используя контекст хранения Azure, хранящийся на предыдущем шаге, мы можем извлечь файлы из желаемого Azure Consier. Расширяя Get-azstorageblob Команда с Где-объект Трубопровод Мы можем точно указать, что нам нужно, а именно все 0 байтовых файлов.

Get-AzStorageBlob -Context $Context -Container "< Container Name >"  | Where-Object {$_.Length -eq 0}

Вы можете продлить состояние, чтобы отфильтровать только изображения (JPG) путем дополнительно прохождения в типе содержимого:

Get-AzStorageBlob -Context $Context -Container "< Container Name >"  | Where-Object {$_.Length -eq 0 -and $_.ContentType -eq "image/jpeg"}

Шаг 4: Удалить 0 байтовых файлов Если вы отслеживаете сломанные изображения, удаление их должна быть супер простым. Вам нужно только добавить Удалить-azstorageblob Трубопровод в конце команды с предыдущего шага:

Get-AzStorageBlob -Context $Context -Container "< Container Name >"  | Where-Object {$_.Length -eq 0} | Remove-AzStorageBlob

В случае дополнительных JPG изображений типа содержимого фильтра:

Get-AzStorageBlob -Context $Context -Container "< Container Name >"  | Where-Object {$_.Length -eq 0 -and $_.ContentType -eq "image/jpeg"} | Remove-AzStorageBlob

И с тем, что у вас есть все скрипты, необходимые для поиска сломанных файлов и удалите их в навалом 😊.

Заключение

В этой статье я поделился своим подходом, чтобы решить проблему, с которым я столкнулся, в каких изображениях стал поврежден из-за проблем с памятью Azure Web Application. В первой части статьи я предоставил решение вручную обнаруживать и удалить сломанные файлы объединенными усилиями консоли KUDU и Explorer Microsoft Azure. Потому что в моем случае он включал существенное количество файлов, я также предоставил пошаговое руководство, состоящее из команд Azure PowerShell для поиска соответствующих файлов и удалять их в одном.

В конце я надеюсь, что вы не бегите в эти ситуации, и что ваше приложение продолжает работать гладко. Во всех остальных случаях я надеюсь, что этот пост был полезен.

Спасибо за чтение!

Оригинал: «https://dev.to/truelime/tackle-0-byte-files-in-azure-blob-storage-with-ease-using-az-powershell-5fb7»