← Назад к вопросам

Какими командами делал бэкап

2.2 Middle🔥 151 комментариев
#Linux и администрирование#Базы данных

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Развернутый ответ про команды для бэкапа в DevOps-практике

В моей практике как DevOps Engineer я использовал широкий спектр команд и инструментов для резервного копирования, начиная от базовых системных утилит до специализированных облачных сервисов. Подход к бэкапу всегда зависит от контекста: что именно бэкапируем (файлы, БД, конфигурации, целые системы), какие требования к RPO (Recovery Point Objective) и RTO (Recovery Time Objective), и где храним данные.

Базовые утилиты командной строки

Для файловых бэкапов на уровне ОС я часто использую классические утилиты:

tar - основная рабочая лошадка для создания архивов:

# Создание сжатого архива с исключением временных файлов
tar -czpf backup_$(date +%Y%m%d_%H%M%S).tar.gz \
    --exclude='*/tmp/*' \
    --exclude='*/cache/*' \
    /path/to/backup

rsync - для инкрементальных копий с дельта-передачей:

# Инкрементальный бэкап с сохранением прав и ссылок
rsync -avz --delete \
    --link-dest=/backups/previous \
    /source/data/ \
    /backups/current/

dd - для бэкапа на блочном уровне (например, целых дисков или разделов):

# Создание образа раздела
dd if=/dev/sda1 of=/backup/sda1.img bs=4M status=progress

Работа с базами данных

Для СУБД используются специфичные утилиты экспорта:

PostgreSQL (pg_dump/pg_dumpall):

# Логический бэкап одной БД с форматированием custom (поддерживает сжатие)
pg_dump -Fc -Z 9 -U postgres mydatabase > backup_$(date +%F).dump

# Полный бэкап всех БД кластера
pg_dumpall -U postgres --clean | gzip > full_backup_$(date +%F).sql.gz

MySQL/MariaDB (mysqldump):

# Бэкап всех баз одним файлом
mysqldump --all-databases --single-transaction --routines \
    --events --triggers | gzip > full_mysql_backup.sql.gz

MongoDB (mongodump):

# Бэкап конкретной БД с аутентификацией
mongodump --host localhost --port 27017 \
    --db mydatabase --out /backup/mongodb/ \
    --authenticationDatabase admin -u admin -p

Современные инструменты и подходы

В современных облачных средах я активно использую:

  1. Объектное хранилище (S3-совместимое):

    # Загрузка в AWS S3 через AWS CLI
    aws s3 sync /local/backup/ s3://my-backup-bucket/$(date +%Y/%m/%d)/
    
    # Загрузка с настройкой lifecycle и классами хранения
    aws s3 cp backup.tar.gz s3://backup-bucket/ \
        --storage-class GLACIER_IR \
        --metadata "BackupDate=$(date -Iseconds)"
    
  2. Снимки (snapshots) дисков в облаке:

    # Создание снапшота диска в GCP
    gcloud compute disks snapshot disk-name \
        --snapshot-names="disk-name-$(date +%s)" \
        --zone=europe-west1-b \
        --storage-location=eu
    
  3. Специализированные утилиты:

    • borgbackup - дедуплицирующий бэкап с шифрованием:

      # Создание дедуплицированного зашифрованного архива
      borg create --stats --progress \
          /backup/repo::"server-{now:%Y-%m-%d_%H:%M}" \
          /etc /home /var/www
      
    • restic - современная кроссплатформенная утилита:

      # Инициализация репозитория и бэкап
      restic -r s3:s3.amazonaws.com/bucketname init
      restic -r s3:s3.amazonaws.com/bucketname backup /data
      

Автоматизация в CI/CD и оркестрации

В инфраструктуре как код и пайплайнах:

# Пример в Ansible для настройки регулярных бэкапов
- name: Configure backup cron job
  cron:
    name: "Daily database backup"
    minute: "0"
    hour: "2"
    job: "/opt/scripts/backup-db.sh && /opt/scripts/upload-to-s3.sh"
# Скрипт для Kubernetes (бэкап PVC через снапшоты)
velero backup create daily-backup \
    --include-namespaces production \
    --snapshot-volumes \
    --ttl 720h

Ключевые принципы в моей практике

  1. Правило 3-2-1: минимум 3 копии, на 2 разных носителях, 1 вне площадки
  2. Верификация: всегда проверяю целостность бэкапов командой restic check или аналогичной
  3. Автоматизация: все регулярные бэкапы через cron, systemd timers или оркестраторы
  4. Мониторинг: алерты на failed бэкапы в Prometheus/Grafana
  5. Документация восстановления: наличие и регулярное тестирование runbooks

В современных облачных средах все чаще используются managed-сервисы вроде AWS Backup, Azure Backup или специализированные решения типа Veeam, но понимание работы низкоуровневых команд остается критически важным для диагностики проблем и построения гибких решений под специфичные требования бизнеса.