Перейти до вмісту
    Без категорії / Автоматичний Деплой та Бекап: Bash Скрипт за 30 Рядки

    Автоматичний Деплой та Бекап: Bash Скрипт за 30 Рядки

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    Часті збої у продакшені через відсутність автоматизованих бекапів та деплоїв – звична проблема для багатьох команд. Це призводить до втрати даних, простою сервісів та зайвих нервів вночі. Автоматизація цих процесів, навіть на базовому рівні, суттєво зменшує ризики та економить час.

    Контекст і чому це важливо

    Ручне деплоювання та створення резервних копій вимагає багато часу та схильне до людських помилок. Розробники часто стикаються з необхідністю повторювати одні й ті самі дії, що призводить до вигорання та зниження продуктивності.

    Ігнорування автоматизації може призвести до втрати даних, простою сервісів на кілька годин, а в деяких випадках – і до значних фінансових втрат. Наприклад, простій сервісу електронної комерції на 30 хвилин може коштувати тисячі доларів.

    Практична реалізація

    Скрипт автоматизує деплой нового коду та створення бекапу поточного стану системи. Він використовує `rsync` для ефективного копіювання файлів та `git` для отримання останньої версії коду.

    #!/bin/bash
    
    # Конфігурація
    BACKUP_DIR="/mnt/backup/app"
    DEPLOY_DIR="/var/www/app"
    REPO_URL="git@github.com:your-org/your-repo.git"
    BRANCH="main"
    
    # Отримання останньої версії коду
    echo "Оновлення коду з Git..."
    cd "$DEPLOY_DIR" || exit
    git pull origin "$BRANCH"
    
    # Створення бекапу
    echo "Створення бекапу..."
    TIMESTAMP=$(date +%Y%m%d%H%M%S)
    rsync -av --delete "$DEPLOY_DIR/" "$BACKUP_DIR/$TIMESTAMP"
    
    # Перезапуск сервісу (за потреби)
    echo "Перезапуск сервісу..."
    sudo systemctl restart your-app-service
    
    echo "Деплой та бекап завершено!"
    

    Скрипт спочатку оновлює код з репозиторію Git, потім створює бекап поточного стану в директорію `$BACKUP_DIR`, додаючи поточний timestamp до назви директорії бекапу. На завершення перезапускає сервіс, щоб застосувати зміни.

    Поширені помилки та підводні камені

    • Неправильні права доступу: Скрипт може не мати достатньо прав для запису в директорії `$BACKUP_DIR` та `$DEPLOY_DIR`. Вирішення: Переконайтеся, що користувач, під яким запускається скрипт, має необхідні права.
      • Проблеми з Git: Помилки підключення до Git репозиторію. Перевірте налаштування SSH ключів та URL репозиторію.
    • Недостатньо місця на диску: Недостатньо місця для створення бекапу. Моніторьте вільний простір на диску та налаштуйте ротацію бекапів.

    Порівняння підходів

    Ручний бекап та деплой займає близько 30 хвилин на кожну ітерацію, а будь-яка помилка може призвести до простою сервісу. Автоматизований скрипт виконує ті ж операції за 5 хвилин, мінімізуючи ризик людської помилки та звільняючи час для розробки.

    Висновки

    Цей скрипт – відмінний старт для автоматизації деплою та бекапу на Linux серверах. Застосовуйте його для будь-яких проектів, де важлива швидкість та надійність. Спробуйте додати ротацію бекапів та систему сповіщень для підвищення надійності процесу.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *