Перейти к основному содержимому

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

Резервное копирование (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. Утилиты резервного копирования для СУБД

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

СУБДИнструмент / командаОписаниеСпособ использования
PostgreSQLpg_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 / MariaDBmysqldumpУтилита для логического дампа в формате 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 Serversqlcmd + 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 СУБД

СУБДИнструментОписаниеСпособ использования
MongoDBmongodump / mongorestoreУтилиты для логического дампа и восстановления. Поддерживают фильтрацию, сжатие, аутентификацию.mongodump --uri="mongodb://user:pass@host:port/db"
mongobackup (в Enterprise)Физический бэкап с поддержкой PITR.Доступен в коммерческой версии
Cassandranodetool snapshotВстроенная команда для создания снапшотов всех или выбранных колонок.nodetool snapshot -t backup123 keyspace_name
sstableloaderУтилита для загрузки снапшотов обратно в кластер.Входит в состав дистрибутива
RedisRDB / AOFВстроенные механизмы: RDB — снапшоты на диск, AOF — лог транзакций.Конфигурируется через redis.conf (save, appendonly)
ElasticsearchSnapshot 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).