Кейсы
Валидатор SQL архивов
Разработка Bash-скрипта для глубокой проверки архивных копий баз данных. Инструмент автоматизирует аудит дампов, проверяя не только целостность самих архивов (ZIP/Tar.GZ), но и корректность SQL-содержимого внутри них.
Скрипт предназначен для системных администраторов и DevOps-инженеров, которым необходимо гарантировать восстанавливаемость данных. Он решает проблему «битых» бэкапов, которые создаются без ошибок в кроне, но оказываются бесполезными при восстановлении (например, из-за обрыва записи или пустых таблиц). Утилита сканирует указанную директорию, распаковывает временные копии и анализирует структуру SQL-файла по нескольким критериям качества.
Требовалось исключить человеческий фактор при проверке резервных копий. Основные цели: убедиться, что архив открывается без ошибок, проверить размер дампа, выявить наличие синтаксических ошибок `mysqldump` внутри файла, подтвердить фактическое наличие данных (`INSERT INTO`) и убедиться, что файл не был обрезан в процессе записи (поиск меток завершения дампа).
Логика реализована в виде модульного Bash-скрипта. Этап 1 — проверка транспортного контейнера с помощью `tar -t` или `unzip -t`. Этап 2 — извлечение SQL-файла во временную директорию и его контент-анализ. Скрипт использует быстрые утилиты `head`, `tail` и `grep`, что позволяет проверять гигабайтные дампы за секунды без полного прочтения файла в память. Проверка завершения поддерживает форматы стандартного `mysqldump`, дампов Битрикса и `phpMyAdmin`.
Основные возможности
- Двухуровневая проверка: анализ целостности архива и валидация SQL-синтаксиса
- Контроль полноты данных: автоматическая проверка наличия фактических записей в таблицах
- Поддержка форматов: работа с архивами `.zip` и `.tar.gz`
- Детекция ошибок экспорта: поиск текстовых маркеров ошибок `mysqldump` в заголовке файла
- Маркеры завершения: верификация корректного финала дампа для защиты от «обрубленных» файлов
- Итоговый репорт: сводная статистика по количеству успешных проверок и критических ошибок