# 11. Резервное копирование ## Обзор Резервное копирование критически важно для защиты данных и возможности восстановления после сбоев, ошибок или атак. **Текущий статус (апрель 2026)**: ✅ **Настроена полнофункциональная система резервного копирования на базе Proxmox Backup Server** - Отдельный физический сервер PBS (192.168.1.199) - Хранилище 1 TB с дедупликацией и компрессией - Автоматические бэкапы всех критичных систем - Протестированное восстановление --- ## Текущее состояние ### ✅ Настроено и работает | Компонент | Статус | Описание | |-----------|--------|----------| | **Proxmox Backup Server** | ✅ | Отдельный сервер (Olimpbs, 192.168.1.199) | | **Хранилище** | ✅ | 1 TB (LVM), datastore `olimpbkp` | | **Бэкапы ВМ/LXC** | ✅ | Автоматические, по расписанию | | **Дедупликация** | ✅ | Встроена в PBS | | **Компрессия** | ✅ | ZSTD (fast and good) | | **Расписание** | ✅ | 2 раза в день (02:30 и 22:30) | | **Retention** | ✅ | 14 последних, 7 ежедневных, 4 недельных, 4 месячных | | **Режим** | ✅ | Snapshot (без остановки сервисов) | ### 📊 Архитектура ```mermaid graph TD A[Proxmox VE Host
Olimp 192.168.1.220] --> B[LXC Containers
201-211] A --> C[Virtual Machines
205, 213] A -->|Network| D[Proxmox Backup Server
Olimpbs 192.168.1.199] D --> E[Datastore: olimpbkp
1 TB LVM] E --> F[/var/lib/proxmox-backup/olimpbkp] ``` --- ## Что бэкапится ### LXC Контейнеры (10 шт.) | ID | Имя | Тип данных | Примерный размер | |----|-----|------------|------------------| | **201** | gateway | Конфигурации, прокси | ~5 GB | | **202** | data | Базы данных (BookStack, Mealie) | ~10 GB | | **203** | media | Конфигурации Jellyfin, метаданные | ~60 GB* | | **204** | photo | Immich конфиги | ~20 GB | | **206** | talk | Matrix, XMPP конфиги | ~10 GB | | **207** | games | Конфигурации игровых серверов | ~20 GB | | **208** | manage | Grafana, Loki, мониторинг | ~15 GB | | **209** | git | GitLab репозитории | ~30 GB | | **210** | ansible | Ansible конфиги, vault | ~5 GB | | **211** | torrent | qBittorrent настройки | ~5 GB | *Без медиафайлов (исключены из бэкапа) ### Виртуальные машины (2 шт.) | ID | Имя | Тип данных | Примерный размер | |----|-----|------------|------------------| | **205** | Nextcloud | Файлы, БД PostgreSQL | ~10 GB | | **213** | VPN | OpenVPN/WireGuard конфиги | ~12 GB | ### Исключено из бэкапа - **Большие диски** (16 TB RAID6): медиафайлы, игры, загрузки - **Причина**: занимают слишком много места, можно восстановить из источников - **Что включено**: только конфигурации и метаданные (через `backup=1`) --- ## Расписание бэкапов ### Автоматическое расписание **Два раза в день**: - **02:30** — ночной бэкап - **22:30** — вечерний бэкап **Proxmox Backup Server автоматически определяет**: - Первый бэкап — **полный** - Последующие — **инкрементальные** (только изменения) - Периодически — **полный** для целостности данных ### Retention политика | Тип хранения | Количество | Фактический срок | |--------------|------------|------------------| | **Keep Last** | 14 | Минимум 14 последних бэкапов | | **Keep Daily** | 7 | 7 ежедневных копий | | **Keep Weekly** | 4 | 4 недельных копии | | **Keep Monthly** | 4 | 4 месячных копии | **Итого**: ~1-2 месяца истории бэкапов --- ## Текущая конфигурация ### На Proxmox VE (Olimp) **Хранилище подключено**: - **ID**: `olimpbkp` - **Тип**: Proxmox Backup Server - **Server**: 192.168.1.199:8007 - **Datastore**: `olimpbkp` - **Content**: Backup - **Status**: ✅ Enabled **Backup Job**: ``` Node: Olimp Storage: olimpbkp Schedule: 02:30, 22:30 (daily) Mode: Snapshot Compression: ZSTD VM/CT: 201-211, 205, 213 Retention: keep-last=14, keep-daily=7, keep-weekly=4, keep-monthly=4 ``` ### На PBS (Olimpbs) **Datastore**: ``` Name: olimpbkp Path: /var/lib/proxmox-backup/olimpbkp Size: 1 TB (912 GB available) GC Schedule: daily Prune Schedule: daily ``` **Пользователи**: - `root@pam` — администратор (веб-интерфейс) - `pve@pbs` — для Proxmox VE (API токен) --- ## Управление бэкапами ### Просмотр бэкапов **Через веб-интерфейс PBS**: ``` https://192.168.1.199:8007 → Datastore → olimpbkp → Content ``` **Через Proxmox VE**: ``` https://192.168.1.220:8006 → Datacenter → Storage → olimpbkp → Content ``` **Через CLI**: ```bash # Список бэкапов proxmox-backup-client list --repository root@pam@192.168.1.199:8007:olimpbkp # Детальная информация proxmox-backup-client show-backup --repository root@pam@192.168.1.199:8007:olimpbkp ct/201 # Статистика datastore proxmox-backup-client datastore stats olimpbkp ``` ### Ручной запуск бэкапа **Один контейнер/ВМ**: ```bash vzdump 201 --storage olimpbkp --mode snapshot --compress zstd ``` **Все бэкапируемые системы**: ```bash for id in 201 202 203 204 205 206 207 208 209 210 211 213; do vzdump $id --storage olimpbkp --mode snapshot --compress zstd & done wait ``` ### Восстановление из бэкапа **Через веб-интерфейс Proxmox VE**: 1. Datacenter → Storage → olimpbkp → Content 2. Выбрать бэкап → Restore 3. Указать: - **Storage**: целевое хранилище (local-lvm, vmsystem) - **VMID**: новый ID (или существующий для перезаписи) 4. Start **Через CLI**: ```bash # LXC контейнер pct restore 216 olimpbkp:backup/ct/201/2026-04-11T13:19:03Z --storage local-lvm # Виртуальная машина qm restore 216 olimpbkp:backup/vm/205/2026-04-11T13:19:03Z --storage vmsystem ``` ### Восстановление отдельных файлов **Через File Restore**: 1. PBS веб-интерфейс → Datastore → Content 2. Выбрать бэкап → **File Restore** 3. Смонтировать бэкап 4. Скачать нужные файлы 5. Unmount **Через CLI**: ```bash # Смонтировать бэкап mkdir -p /mnt/restore proxmox-backup-client mount ct/201/2026-04-11T13:19:03Z /mnt/restore \ --repository root@pam@192.168.1.199:8007:olimpbkp # Скопировать файлы cp /mnt/restore/root.pxar/etc/config/file.conf /tmp/ # Размонтировать proxmox-backup-client unmount /mnt/restore ``` --- ## Мониторинг и обслуживание ### Проверка статуса бэкапов **Ежедневная проверка**: ```bash # Последние задачи pvesm status olimpbkp # Логи бэкапов tail -f /var/log/pve/tasks/* # Проверка места на PBS ssh root@192.168.1.199 "df -h /var/lib/proxmox-backup/olimpbkp" ``` ### Garbage Collection (очистка) PBS автоматически запускает GC ежедневно. Вручную: ```bash # На PBS сервере proxmox-backup-manager garbage-collection start olimpbkp # Проверка статуса proxmox-backup-manager garbage-collection status olimpbkp ``` ### Prune (удаление старых бэкапов) Автоматически по retention политике. Вручную: ```bash proxmox-backup-manager prune-job run ``` ### Проверка целостности (Verify) ```bash # Проверить все бэкапы proxmox-backup-manager verify olimpbkp # Проверить конкретный бэкап proxmox-backup-client verify ct/201/2026-04-11T13:19:03Z \ --repository root@pam@192.168.1.199:8007:olimpbkp ``` --- ## Миграция со старого PBS ### История **Март 2026**: PBS был развёрнут в LXC контейнере (CT 220) на том же хосте Olimp - Хранилище: ZFS dataset `rpool/pbs-backups` (187 GB) - Datastore: `ssd-backups` **Апрель 2026**: Развёрнут отдельный физический сервер PBS (Olimpbs) - Хранилище: 1 TB LVM - Datastore: `olimpbkp` ### Перенос старых бэкапов (опционально) ```bash # На новом PBS mkdir -p /mnt/old-pbs sshfs root@192.168.1.220:/rpool/pbs-backups /mnt/old-pbs # Копирование rsync -avh /mnt/old-pbs/data/ /var/lib/proxmox-backup/olimpbkp/ # Исправление прав chown -R backup:backup /var/lib/proxmox-backup/olimpbkp # Перезапуск systemctl restart proxmox-backup-proxy ``` ### Удаление старого PBS После подтверждения что новые бэкапы работают: ```bash # На Proxmox VE (Olimp) pvesm remove pbs-ssd # Удалить dataset zfs destroy rpool/pbs-backups # Удалить LXC контейнер (опционально) pct stop 220 pct destroy 220 ``` --- ## Безопасность ### Аутентификация - **PBS пользователи**: `root@pam`, `pve@pbs` - **API токены**: для автоматизации (без паролей) - **Fingerprint**: SHA-256 отпечаток сертификата ### Сетевая безопасность - **Порт**: 8007 (TCP) - **Шифрование**: TLS 1.3 - **Доступ**: только из локальной сети (192.168.1.0/24) ### Рекомендации - ✅ Включить **2FA** для root@pam - ✅ Создать **отдельного пользователя** для бэкапов (не root) - ✅ Настроить **firewall** на PBS сервере - ✅ Регулярно **обновлять** систему (unattended-upgrades) --- ## Планы на будущее ### 🔵 Краткосрочные (1-2 месяца) - [ ] Настроить **уведомления** (email/telegram) о статусе бэкапов - [ ] Включить **2FA** для доступа к PBS - [ ] Настроить **репликацию** в облако (Backblaze B2 / Wasabi) - [ ] Провести **тестовое восстановление** всех критичных ВМ ### 🔵 Долгосрочные (3-6 месяцев) - [ ] Добавить **второй PBS** для репликации - [ ] Настроить **оффсайт-копии** (внешний диск + облако) - [ ] Внедрить **шифрование** бэкапов на стороне клиента - [ ] Автоматизировать **тестирование восстановления** --- ## Troubleshooting ### Бэкап не запускается ```bash # Проверить хранилище pvesm status | grep olimpbkp # Проверить подключение к PBS ping 192.168.1.199 nc -zv 192.168.1.199 8007 # Переподключить хранилище pvesm remove olimpbkp pvesm add proxmox-backup olimpbkp \ --server 192.168.1.199 \ --datastore olimpbkp \ --username pve@pbs ``` ### Закончилось место на PBS ```bash # Проверить занятое место proxmox-backup-client datastore stats olimpbkp # Запустить GC proxmox-backup-manager garbage-collection start olimpbkp # Удалить старые бэкапы вручную proxmox-backup-client prune \ --repository root@pam@192.168.1.199:8007:olimpbkp \ --max-daily 7 --max-weekly 2 ``` ### Ошибка аутентификации ```bash # Сгенерировать новый токен proxmox-backup-manager user generate-token pve@pbs backup-token # Обновить в Proxmox VE pvesm update olimpbkp --password <новый_токен> ``` --- ## Полезные команды ### На Proxmox VE ```bash # Список хранилищ pvesm list # Статус бэкап хранилища pvesm status olimpbkp # Запустить бэкап vzdump --storage olimpbkp --mode snapshot # Восстановить pct restore olimpbkp:backup/ct// qm restore olimpbkp:backup/vm// ``` ### На PBS ```bash # Список datastore proxmox-backup-manager datastore list # Статистика proxmox-backup-client datastore stats olimpbkp # Список бэкапов proxmox-backup-client list --repository root@pam@192.168.1.199:8007:olimpbkp # Информация о бэкапе proxmox-backup-client show-backup ct/201 --repository root@pam@192.168.1.199:8007:olimpbkp # Проверка целостности proxmox-backup-manager verify olimpbkp # Garbage collection proxmox-backup-manager garbage-collection start olimpbkp ``` --- ## Метрики и отчётность ### Ежедневная проверка ```bash # Размер бэкапов за сегодня du -sh /var/lib/proxmox-backup/olimpbkp/data/* # Количество бэкапов proxmox-backup-client list --repository root@pam@192.168.1.199:8007:olimpbkp | wc -l # Свободное место df -h /var/lib/proxmox-backup/olimpbkp ``` ### Еженедельный отчёт ```bash # Дедупликация proxmox-backup-client datastore stats olimpbkp | grep "Deduplication" # Прирост за неделю # Сравнить размер datastore с прошлой неделей ``` --- **Связанные разделы:** - [Гипервизор Proxmox](02-hypervisor.md) - [Виртуальные машины и LXC](03-vms-lxcs.md) - [Безопасность](10-security.md) - [Мониторинг и логирование](08-monitoring.md)