Резервное копирование

Бэкап — это не "копия на флешку раз в год", а политика: что копируем, как часто, куда складываем, за сколько шагов восстанавливаем и как проверяем, что restore реально работает.


Универсальные утилиты (файлы и каталоги)

Инструмент Суть
rsync Инкрементная синхронизация по SSH или локально
restic Шифрование, дедупликация, S3/B2/локально
BorgBackup Сжатие + шифрование, эффективные инкременты
Duplicity GPG + облачные бэкенды
rclone Синхронизация в облака
Timeshift Снапшоты системы Linux (как Time Machine)
# Пример rsync на удалённый сервер
rsync -avz --delete /var/www/ user@backup:/backups/www/

# restic — инициализация репозитория
restic -r /mnt/backup/restic init
restic -r /mnt/backup/restic backup /home/user/projects

Реляционные СУБД

СУБД Инструмент Команда / идея
PostgreSQL pg_dump, pg_basebackup Логический дамп vs физический + WAL (PITR)
MySQL/MariaDB mysqldump, Percona XtraBackup Горячий физический бэкап InnoDB
SQL Server BACKUP DATABASE Full / differential / log
SQLite .backup или копия файла sqlite3 db ".backup 'copy.db'"
pg_dump -U postgres -Fc mydb > mydb.dump
mysqldump -u root -p --all-databases > all.sql

NoSQL

СУБД Инструмент
MongoDB mongodump / mongorestore
Cassandra nodetool snapshot
Redis RDB-снапшоты, AOF в redis.conf
Elasticsearch Snapshot API в S3 или локальный path

Автоматизация

Средство Применение
cron + shell Классика: 0 2 * * * /usr/local/bin/backup.sh
systemd timers Альтернатива cron с журналированием
borgmatic YAML-конфиг поверх Borg
Ansible Один playbook на десятки хостов
Правило 3-2-1

3 копии данных, на 2 разных носителях, 1 копия вне офиса/ЦОД. Бэкап без тестового restore — только надежда, не гарантия.


PITR (Point-in-Time Recovery)

Восстановление "на момент времени" за счёт журналов:

  • PostgreSQL — WAL + pg_basebackup
  • MySQL — binary log
  • SQL Server — transaction log

Требует непрерывного архивирования логов, не только недельного full.


См. также