15 KiB
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:
- Datacenter → Storage → olimpbkp → Content
- Выбрать бэкап → Restore
- Указать:
- Storage: целевое хранилище (local-lvm, vmsystem)
- VMID: новый ID (или существующий для перезаписи)
- 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:
- PBS веб-интерфейс → Datastore → Content
- Выбрать бэкап → File Restore
- Смонтировать бэкап
- Скачать нужные файлы
- 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 с прошлой неделей
&&&
Связанные разделы: