Резервное копирование
Резервное копирование (backup) — обязательная практика для обеспечения сохранности данных. В зависимости от контекста (локальные файлы, СУБД, облачные среды), используются разные инструменты и методы. Ниже приведены распространённые утилиты, скрипты и встроенные механизмы резервного копирования для различных сред.
1. Универсальные утилиты резервного копирования файлов и каталогов
| Инструмент | Описание | Способ установки / ссылка |
|---|---|---|
| rsync | Утилита для синхронизации и инкрементного копирования файлов и каталогов между локальными и удалёнными системами. Поддерживает сжатие, фильтрацию, сухой запуск. | Уже входит в большинство Linux-дистрибутивов. Установка: sudo apt install rsync (Debian/Ubuntu), sudo dnf install rsync (Fedora/RHEL) |
| restic | Современная, кроссплатформенная, криптографически защищённая утилита резервного копирования. Поддерживает дедупликацию, инкрементные бэкапы, работу с облаком. | Установка: go install github.com/restic/restic@latest или через пакетный менеджер (brew install restic, sudo apt install restic) |
| borgbackup (Borg) | Аналог restic с акцентом на локальные и сетевые бэкапы, дедупликацию и сжатие. Поддерживает шифрование. | Установка: pip install borgbackup или через пакетный менеджер (sudo apt install borgbackup) |
| Duplicity | Резервное копирование с поддержкой шифрования (GPG), инкрементных бэкапов и отправки в облако (S3, Google Drive и др.). | Установка: sudo apt install duplicity |
| Rclone | Утилита для синхронизации и бэкапа в облачные хранилища (S3, Google Drive, OneDrive и др.). Поддерживает шифрование, фильтрацию, mounting. | Скачать: https://rclone.org/downloads/ |
| Amanda | Сетевая система резервного копирования для Unix-систем. Поддерживает централизованное управление бэкапами. | Установка: sudo apt install amanda-server amanda-client |
| Bareos | Открытая система резервного копирования, форк Bacula. Поддерживает клиент-серверную архитектуру, инкрементные бэкапы, веб-интерфейс. | Установка: https://www.bareos.org/en/download.html |
| Timeshift | Утилита для создания снапшотов системы Linux (аналог Time Machine на macOS). Использует rsync или BTRFS. | Установка: sudo apt install timeshift |
2. Утилиты резервного копирования для СУБД
Реляционные СУБД
| СУБД | Инструмент / команда | Описание | Способ использования |
|---|---|---|---|
| PostgreSQL | pg_dump, pg_dumpall | Утилиты для логического дампа базы или кластера. Поддерживают plain SQL, custom format, tar. | pg_dump -U user -d dbname > dump.sql |
pg_basebackup | Физическое резервное копирование (бинарный снимок кластера). Требует WAL-архивацию для PITR. | pg_basebackup -h localhost -D /backup/pg -U replicator -P -v | |
| WAL-G / WAL-E | Инструменты для архивирования WAL-логов в облако и восстановления. | Установка: pip install wal-g | |
| MySQL / MariaDB | mysqldump | Утилита для логического дампа в формате SQL. Поддерживает единичные таблицы, базы или весь сервер. | mysqldump -u root -p --all-databases > dump.sql |
mysqlpump | Современная альтернатива mysqldump с параллелизмом. | mysqlpump --user=root --password > dump.sql | |
Percona XtraBackup | Инструмент горячего физического бэкапа для InnoDB. Не блокирует запись. | Установка: https://www.percona.com/doc/percona-xtrabackup | |
mydumper | Параллельная альтернатива mysqldump от Percona. | Установка: sudo apt install mydumper | |
| Microsoft SQL Server | sqlcmd + BACKUP DATABASE | Встроенный SQL-оператор для создания полного, дифференциального или логического бэкапа. | BACKUP DATABASE [dbname] TO DISK = 'C:\backups\db.bak' |
sqlpackage.exe | Утилита из состава SQL Server Data Tools для экспорта/импорта DACPAC/BACPAC. | Входит в состав SSMS или можно установить отдельно | |
| SQLite | Копирование файла | SQLite — файловая СУБД. Резервная копия создаётся простым копированием .db-файла при условии, что СУБД не занята. | cp database.db backup-$(date +%F).db |
sqlite3 + .backup | Встроенная команда CLI для безопасного бэкапа в работающей базе. | sqlite3 source.db ".backup 'backup.db'" |
NoSQL СУБД
| СУБД | Инструмент | Описание | Способ использования |
|---|---|---|---|
| MongoDB | mongodump / mongorestore | Утилиты для логического дампа и восстановления. Поддерживают фильтрацию, сжатие, аутентификацию. | mongodump --uri="mongodb://user:pass@host:port/db" |
mongobackup (в Enterprise) | Физический бэкап с поддержкой PITR. | Доступен в коммерческой версии | |
| Cassandra | nodetool snapshot | Встроенная команда для создания снапшотов всех или выбранных колонок. | nodetool snapshot -t backup123 keyspace_name |
sstableloader | Утилита для загрузки снапшотов обратно в кластер. | Входит в состав дистрибутива | |
| Redis | RDB / AOF | Встроенные механизмы: RDB — снапшоты на диск, AOF — лог транзакций. | Конфигурируется через redis.conf (save, appendonly) |
| Elasticsearch | Snapshot API | Встроенный API для создания снапшотов в репозитории (локальный путь или S3). | PUT _snapshot/repo1/snapshot_1 |
3. Скрипты и автоматизация
| Средство | Описание | Пример использования |
|---|---|---|
| Cron + Shell-скрипты | Классический способ автоматизации бэкапов в Linux. Обычно комбинируется с rsync, pg_dump, mysqldump. | 0 2 * * * /usr/local/bin/backup.sh |
| Ansible | Можно использовать для централизованного запуска бэкап-задач на множестве хостов через модули shell, command, copy. | Playbook с вызовом pg_dump и копированием на NFS-шару |
| systemd timers | Альтернатива cron в системах с systemd. Позволяет задавать расписание через unit-файлы. | systemctl enable --now backup.timer |
| Borgmatic | Обёртка над Borg для автоматизации через конфигурационный файл YAML. Поддерживает pre/post-хуки, prune-политики. | Установка: pip install borgmatic; конфиг: /etc/borgmatic/config.yaml |
| AutoMySQLBackup | Скрипт для автоматического ротационного бэкапа MySQL. Поддерживает ежедневные/еженедельные/ежемесячные копии. | https://sourceforge.net/projects/automysqlbackup/ |
4. Стратегии резервного копирования
| Тип | Описание | Применение |
|---|---|---|
| Полный (full) | Копируется всё содержимое источника. | Базовая точка восстановления. Часто выполняется раз в неделю. |
| Инкрементный (incremental) | Копируются только данные, изменённые с момента последнего бэкапа любого типа. | Минимизирует объём данных, но увеличивает время восстановления. |
| Дифференциальный (differential) | Копируются все изменения с момента последнего полного бэкапа. | Баланс между объёмом и временем восстановления. |
| Снапшоты (snapshots) | Мгновенный снимок файловой системы или СУБД. | Требует поддержки со стороны файловой системы (LVM, ZFS, BTRFS) или СУБД. |
| PITR (Point-in-Time Recovery) | Восстановление на произвольный момент времени с использованием логов транзакций. | Поддерживается PostgreSQL (WAL), MySQL (binlog), SQL Server (T-log). |