Резервное копирование и восстановление данных в Linux
TIP
Эта статья — часть серии Linux administration, посвящённой самостоятельному администрированию Linux, Self-Hosting и DevOps. Резервное копирование — не опция. Это необходимость. Без него один сбой может уничтожить месяцы работы.
📌 О чём эта статья?
Сколько стоит ваша система? Данные, конфигурации, пользовательский контент — всё это может исчезнуть в любой момент: сбой диска, ошибка администратора, ransomware.
В современном мире информационных технологий, где данные являются одним из самых ценных активов, резервное копирование и восстановление данных играют ключевую роль в обеспечении стабильности и безопасности операционных систем, таких как Linux. Командная строка Linux предоставляет невероятную гибкость и доступность для решения этих задач.
В этой статье вы узнаете:
- Принципы надёжного резервного копирования (3-2-1)
- Как использовать
rsync,tar,cpioдля бэкапа - Современные инструменты:
borg,restic - Автоматизация с
cron - Практические примеры и лучшие практики
- Как проверить, что бэкап работает
WARNING
“Я не делал бэкап — но всё будет хорошо.”
— Последние слова перед катастрофой
🧩 Принцип 3-2-1: основа надёжности
QUOTE
3-2-1 Backup Rule:
- 3 копии данных (оригинал + 2 бэкапа)
- На 2 разных типах носителей (HDD, SSD, cloud)
- 1 копия — вне места хранения (offsite: облако, компьютер друга, другой город)
Пример:
- Оригинал: сервер дома
- Копия 1: внешний диск (локально)
- Копия 2: облако (Backblaze, AWS S3, или удалённый сервер)
INFO
Этот принцип рекомендуется NIST, Veeam, и другими экспертами по ИТ-безопасности.
Источник: NIST SP 800-34 Rev. 1 — Contingency Planning Guide
🛠️ Основные инструменты резервного копирования
1. rsync — синхронизация файлов
rsync — самый популярный инструмент для копирования и синхронизации.
🔹 Преимущества:
- Инкрементальное копирование (только изменения)
- Поддержка SSH (безопасная передача)
- Возобновление после обрыва
- Сжатие (
-z) - Синхронизация с удалёнными серверами
🔹 Базовые команды
# Локальный бэкап
rsync -av /home/ /backup/home/
# С сжатием и удалением удалённых файлов
rsync -avz --delete /var/www/ user@backup-server:/backups/www/
# С SSH-ключом и портом
rsync -av -e "ssh -p 2222" /data/ user@192.168.1.100:/backups/data/🔹 Флаги:
-a— архивный режим (сохраняет права, владельца, символические ссылки)-v— подробный вывод-z— сжатие--delete— удалять файлы на приёмнике, которых нет на источнике--exclude='*.tmp'— исключить файлы
INFO
rsync— идеален для ежедневной синхронизации.
Источник: rsync — Official Documentation
2. tar — создание архивов
tar — стандартный инструмент для архивации.
🔹 Примеры
# Архив без сжатия
tar -cf backup.tar /home/alice/docs/
# Сжатие gzip
tar -czf backup.tar.gz /home/alice/docs/
# Сжатие xz (лучшее сжатие)
tar -cJf backup.tar.xz /etc /home
# Распаковка
tar -xzf backup.tar.gz -C /restore/
# Просмотр содержимого
tar -tzf backup.tar.gz🔹 Инкрементальный бэкап с tar
# Полный бэкап
tar -g /backup/snapshot.full -czf /backup/full-$(date +%F).tar.gz /data/
# Инкрементальный (только изменения с момента последнего)
tar -g /backup/snapshot.inc -czf /backup/inc-$(date +%F).tar.gz /data/WARNING
tarне умеет “синхронизировать” какrsync. Лучше использовать для периодических полных бэкапов.
3. borg — современный дедуплицирующий бэкап
borg — мощный инструмент с шифрованием, дедупликацией и сжатием.
🔹 Установка
sudo apt install borgbackup # Debian/Ubuntu
sudo dnf install borg # Fedora🔹 Создание репозитория
borg init --encryption=repokey /backup/borg-repo🔹 Создание бэкапа
borg create \
--verbose \
--filter AME \
--list \
--stats \
--show-rc \
--compression lz4 \
/backup/borg-repo::'home-{now:%Y-%m-%d}' \
/home /etc🔹 Просмотр бэкапов
borg list /backup/borg-repo🔹 Восстановление
borg extract /backup/borg-repo::home-2025-04-05🔹 Монтирование (как файловая система)
borg mount /backup/borg-repo::home-2025-04-05 /mnt/restoreINFO
borgподдерживает удалённые репозитории через SSH.
Источник: Borg — Official Docs
4. restic — альтернатива borg (проще, но менее гибкий)
restic — современный бэкап с поддержкой S3, Google Drive, Backblaze B2.
🔹 Установка
sudo apt install restic🔹 Инициализация (в S3)
export RESTIC_REPOSITORY="s3:s3.amazonaws.com/mybucket/backups"
export AWS_ACCESS_KEY_ID="..."
export AWS_SECRET_ACCESS_KEY="..."
restic init🔹 Бэкап
restic backup /home /etc🔹 Восстановление
restic restore latest --target /restoreINFO
resticпроще в использовании, ноborgпредлагает больше контроля.
Источник: Restic — Official Docs
🔄 Автоматизация с cron
Чтобы бэкапы были регулярными, настройте cron.
Пример: ежедневный rsync
# crontab -e
0 2 * * * /usr/bin/rsync -avz --delete /var/www/ backup@192.168.1.100:/backups/www/Скрипт с логированием
#!/bin/bash
# /usr/local/bin/backup-www.sh
LOG="/var/log/backup-www.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATE] Starting backup" >> $LOG
rsync -avz --delete /var/www/ backup@remote:/backups/www/ >> $LOG 2>&1
if [ $? -eq 0 ]; then
echo "[$DATE] Backup successful" >> $LOG
else
echo "[$DATE] Backup FAILED" >> $LOG
# Отправить уведомление (например, через curl или mail)
fiTIP
Используйте
systemd timersдля более сложных сценариев.
🔁 Восстановление: как проверить, что бэкап работает?
WARNING
Бэкап, который нельзя восстановить — это не бэкап.
Проверка:
- Регулярно тестируйте восстановление (хотя бы раз в квартал)
- Проверяйте целостность:
borg check /backup/borg-repo restic check - Сравнивайте контрольные суммы:
find /data -type f -exec md5sum {} \; > /backup/data.md5 # Позже: md5sum -c /backup/data.md5
🧪 Практические примеры
Пример 1: Бэкап Self-Hosted сервисов
# Бэкап Nextcloud (данные + БД)
mysqldump nextcloud > /backup/db/nextcloud.sql
rsync -av /var/www/nextcloud/data/ /backup/nextcloud-data/Пример 2: Инкрементальный бэкап с borg
# Ежедневно
borg create --compression zstd /backup/repo::'{now:%Y-%m-%d}' /home
# Ежемесячно — экспорт полного
borg prune -v --list /backup/repo --keep-daily 7 --keep-weekly 4 --keep-monthly 6Пример 3: Облачный бэкап с restic + Backblaze B2
export RESTIC_REPOSITORY="b2:bucket-name:backups"
export B2_ACCOUNT_ID="..."
export B2_ACCOUNT_KEY="..."
restic backup /home⚠️ Лучшие практики
TIP
Следуйте этим правилам, чтобы избежать катастроф.
- Тестируйте восстановление — регулярно.
- Шифруйте бэкапы, если они вне доверенной сети.
- Используйте 3-2-1 стратегию.
- Не храните бэкап на том же диске, что и оригинал.
- Автоматизируйте — ручные бэкапы это плохая практика.
- Логируйте и уведомляйте о сбоях.
- Используйте дедупликацию (
borg,restic) для экономии места.
📊 Полезные команды диагностики
# Сколько места занимают бэкапы?
du -sh /backup/
# Проверить, работает ли cron?
systemctl status cron
# Посмотреть логи бэкапа
tail /var/log/backup.log
# Проверить доступность удалённого сервера
ping backup-server.localВажный нюанс:
Файл
/etc/fstab: При переустановке Linux не следует восстанавливать файл/etc/fstabиз резервной копии, так как файловые системы получают новые уникальные идентификаторы (UUID), и старые настройки могут привести к ошибкам.
✅ Заключение
Теперь вы можете:
- Настроить надёжный бэкап по принципу 3-2-1
- Использовать
rsync,tar,borg,restic - Автоматизировать процесс с
cron - Восстанавливать данные и проверять целостность
QUOTE
“Администратор делает бэкап.
Хороший администратор проверяет, что он работает.”