Возможности¶
BombVault прост по умолчанию и глубок, когда это нужно. Интерфейс показывает только самое необходимое, пока вы не переключите переключатель Простой / Расширенный. Эта страница группирует полный набор возможностей.
Область резервного копирования¶
| Что | Что сохраняется |
|---|---|
| Контейнеры Docker | Каталог appdata плюс определение контейнера (образ, переменные окружения, порты, метки, тома). |
| Виртуальные машины KVM / libvirt | Образ(ы) диска VM, определение XML и UEFI NVRAM (корректное выключение или живой снимок, через SSH). Живые снимки автоматически откатываются к корректной резервной копии, если снимок не удаётся создать, поэтому резервное копирование VM никогда не завершается просто ошибкой. |
| Unraid flash | Вся USB-флешка (/boot): ОС, лицензия, конфигурация массива, общие ресурсы, сеть и конфигурация плагинов. Восстановление, это загрузка .zip в один клик, и оно никогда не перезаписывает работающую flash. |
| Конфигурация приложения | Собственный /config BombVault (база данных настроек, учётные данные внешней копии, SSH-пара ключей libvirt), снятый снимком с помощью SQLite VACUUM INTO, поэтому база данных в режиме WAL никогда не захватывается в момент записи. Восстанавливается через самоперезапуск, поэтому работающая база данных никогда не перезаписывается под открытым дескриптором. |
| Файлы и папки | Именованные наборы файлов: любая папка на сервере (общий ресурс, ваши документы, фотоколлекция), каждая с необязательными шаблонами исключений для набора. Полный паритет с остальными доменами (расписания, хранение, внешняя копия, проверки целостности и учебные восстановления). |
Восстановление¶
- Полное восстановление в один клик. Выберите снимок, нажмите Восстановить. Готово.
- Восстановление из локальной или внешней копии. У каждого браузера резервных копий есть переключатель Локально / Внешнее, поэтому, если локальный репозиторий потерян или повреждён, вы можете перечислить и восстановить прямо из внешней реплики. Удаление действует по источнику: удаление резервной копии затрагивает только ту копию, которую вы просматриваете.
- Контейнеры переустанавливаются автоматически. Определение контейнера воспроизводится через Docker API, поэтому контейнер снова появляется во вкладке Docker в Unraid ровно таким, каким был.
- Виртуальные машины пересоздаются автоматически. XML заново импортируется через SSH, поэтому VM снова появляется в VM Manager с повторно подключёнными диском и UEFI NVRAM, даже после того как VM была удалена. Найти резервные копии пересобирает запись, которая исчезла целиком (например после чистой установки).
- Индивидуальное восстановление. Восстановите один контейнер, одну VM или один набор файлов, не затрагивая остальные.
- Восстановление flash, это загрузка
.zip. Оно передаётся в ваш браузер какflash-<id>.zip, готовый к загрузке в создатель USB Unraid. Работающая/bootникогда не затрагивается. - Плановый экспорт flash в zip. После каждого резервного копирования flash можно опционально записать снимок в виде обычного
.zipв выбранную вами папку (единственный перезаписываемыйflash-latest.zipили скользящая история). Направьте его в папку Syncthing или rclone, чтобы ваша резервная копия загрузочной USB автоматически покидала сервер. - Предполётная проверка конфликтов. Прежде чем что-либо останавливается или удаляется, восстановление проверяет, что статический IP контейнера и опубликованные порты хоста свободны, и прерывается с ясным сообщением вместо того, чтобы оставить наполовину завершённое восстановление.
- Восстановление на уровне файлов. Разверните раздел Файлы снимка контейнера, отфильтруйте, отметьте любое число файлов и папок, затем восстановите выбранное на месте или в выбранную вами папку.
- Восстановление набора файлов. Восстановите снимок набора файлов на месте (после явного подтверждения) или в выбранную вами папку, никогда молча. Выборочное восстановление работает и здесь.
- Восстановление сохраняет состояние запуска. Контейнер или VM, работавшие в момент резервного копирования, возвращаются работающими; те, что были остановлены, остаются остановленными. Отметьте Оставить остановленным после восстановления, чтобы пересоздать без запуска.
- Восстановление целого стека. Контейнеры из одного проекта Docker Compose группируются в панель Стеки. Восстановить стек пересобирает каждого участника из его последней резервной копии, оставляя остановленным, а затем опционально запускает их в порядке
depends_on. - Живой прогресс, отмена и индикация занятости. Долгое восстановление показывает живую полосу процентов и может быть отменено с подтверждением, учитывающим тип. Отменённое восстановление записывается как отменённое, а не как ошибка.
- Управляемое восстановление. Отдельная вкладка Восстановление проводит свежую установку через сценарий аварии. См. Внешняя копия и восстановление.
- Восстановление из репозитория другого BombVault. Одноразовая сессия только для чтения открывает репозиторий другого экземпляра BombVault с
APP_KEYэтого экземпляра, поэтому вы можете вытянуть контейнер с сервера A на сервер B, не трогая собственные настройки. См. Внешняя копия и восстановление.
Хранилище и планирование¶
- Инкрементальные, дедуплицированные резервные копии через restic, поэтому даже большие диски VM не раздувают репозиторий.
- Назначения: локальный путь или внешняя копия. SMB/CIFS и NFS (смонтируйте общий ресурс в Unraid и укажите на него Путь резервных копий), нативные бэкенды restic без rclone (
s3:...,rest:http://host:8000/repo,b2:...,sftp:user@host:/repo) или любое удалённое хранилище rclone черезrclone:<remote>:<bucket>/path. Все учётные данные хранятся в зашифрованном виде. - Целям SSH ничего не нужно устанавливать на дальней стороне.
sftp:требует лишь SSH-сервера, поэтому голый Raspberry Pi (без Docker, без restic) работает как внешнее назначение. Ключи хоста закрепляются автоматически при первом контакте. - Внешняя копия (локальная + удалённая). Сохраняйте быструю локальную резервную копию и добавьте одну или несколько внешних реплик, реплицируемых через
restic copyпо принципу максимальных усилий (сбой внешней копии никогда не проваливает локальную резервную копию). У каждого домена своё расписание внешней копии, плюс кнопка Реплицировать сейчас. - Несколько внешних целей на домен. Каждый домен (контейнеры, VM, flash, config и наборы файлов) может реплицироваться сразу в несколько внешних назначений, а не только в одно. Добавляйте дополнительные цели на вкладке Внешнее, каждую со своим репозиторием, классом хранения S3, флагом append-only, хранением и бюджетом роста. Ваша существующая внешняя копия переносится как первая цель, поэтому ничего не меняется, пока вы не добавите вторую, и каждая цель домена реплицируется по расписанию внешней копии этого домена.
- Ручной порядок резервного копирования. Задайте точный порядок, в котором резервируются ваши контейнеры, на панели порядка резервного копирования на странице Контейнеры. Запланированные и множественные запуски следуют ему; любой контейнер, оставленный без порядка, сохраняет прежнее поведение наибольшей просрочки, а резервное копирование одного контейнера не меняется.
- Настраиваемое хранение: keep-last / ежедневные / еженедельные / ежемесячные, очищаемые автоматически после каждой резервной копии, задаваемые для каждого источника (локально рядом с путями резервных копий, внешне на вкладке Внешнее, чтобы можно было хранить внешние копии дольше как архив).
- Планирование по доменам (ежедневно / еженедельно, включая многодневные наборы / каждые N дней / необработанный cron), всё редактируется в одном месте в Настройки, Расписания.
- Ограничения пропускной способности внешней копии. Ограничьте скорость выгрузки/загрузки restic, чтобы репликация не насыщала ваш WAN.
- Холодный и архивный класс хранения (S3). Для нативного внешнего репозитория S3 вы можете выбрать класс хранения, ограниченный уровнями, читаемыми для восстановления (Standard, Standard-IA, One Zone-IA, Intelligent-Tiering, Glacier Instant Retrieval), поэтому архивное ценообразование никогда молча не ломает восстановление. Уровни глубокого архива, которым сначала нужна асинхронная разморозка (Glacier Flexible, Deep Archive), намеренно исключены. Только нативные бэкенды S3; удалённые хранилища rclone задают свой класс в конфигурации rclone.
- Папки резервных копий остаются копируемыми за пределы машины. После каждой резервной копии BombVault ослабляет права дерева локального репозитория до каталогов
0755/ файлов0644(репозитории зашифрованы, поэтому ничто не раскрывается), чтобы пользователь синхронизации не под root через SMB не оказался заблокирован. Определения восстановления живут внутри каждого репозитория, поэтому скопированная папка репозитория полностью самодостаточна.
Обзор, проверка и мониторинг¶
- Состояние защиты (RPO). Панель показывает зелёный / жёлтый / красный индикатор по каждому домену, сравнивая последнюю успешную резервную копию с её расписанием, поэтому просроченная резервная копия становится красной, а не прячется в журнале.
- Тепловая карта состояния резервных копий. Календарь в стиле вкладов GitHub с ежедневными результатами резервного копирования по каждому домену, с переключателем Контейнеры / VM / Flash / Config / Files.
- Тайминг запусков повсюду. Каждая запись истории запусков читается как
начало, конец (длительность), а у каждого контейнера и VM есть свой список Последние запуски на его странице. - Панель, которую можно перестроить. Включите режим настройки, чтобы перетащить карточки в нужный вам порядок и скрыть ненужные. Раскладка сохраняется для каждого браузера.
- Размер репозитория и тренд дедупликации. Текущий размер репозитория, коэффициент дедупликации и число снимков по каждому домену, со спарклайном роста хранилища.
- Учебные восстановления для проверки. BombVault периодически доказывает, что ваши резервные копии восстановимы (
restic check --read-data-subset, ограниченно), и показывает бейдж последний раз подтверждено восстановимым по каждому домену. - Самовосстанавливающиеся операции. Доказуемо осиротевшая блокировка restic (оставленная перезапуском в середине операции) принудительно снимается и один раз повторяется, автоматически. Хранение устойчиво к идентичности (очищается по каждому элементу, невосприимчиво к изменениям путей или хоста), а сбой хранения отправляет уведомление.
- Набор для восстановления ключа шифрования. Загрузка в один клик мастер-ключа, производного пароля restic и точных расположений репозиториев и команд, чтобы вы могли восстановить без работающего BombVault. См. Внешняя копия и восстановление.
- Экспорт и импорт ваших настроек. Карточка Экспорт и импорт настроек на странице Настройки записывает всю вашу конфигурацию (настройки доменов, внешние цели, расписания, хранение, уведомления) в переносимый файл JSON, поэтому переезд на новую машину или клонирование установки не означает повторный ручной ввод всего. Вы выбираете, включать ли учётные данные внешней копии и уведомлений; с ними файл так же чувствителен, как ваш набор для восстановления. Импорт показывает предпросмотр и запрашивает подтверждение, и он никогда не трогает ваши данные резервных копий или историю.
- Уведомления. Webhook (Discord / Slack / Gotify / ntfy), Matrix, Healthchecks.io, эл. почта (SMTP), self-hosted сервер Apprise API и собственная система уведомлений Unraid. Политика на каждую резервную копию: никогда / при сбое / всегда. Плановый запуск множества элементов может отправить одну сводку N из M успешно. Healthchecks получает полный жизненный цикл (
/start, затем успех или/fail) всякий раз, когда задан URL. - Prometheus
/metrics. По желанию (по умолчанию отключено, необязательный bearer-токен) для Grafana или Uptime Kuma. Публикует статус резервных копий, размеры и метки времени, без секретов или путей в метках.
Защита от программ-вымогателей¶
- Неизменяемая (append-only) внешняя копия. Пометьте внешний репозиторий как append-only, чтобы программа-вымогатель или скомпрометированный хост не могли удалить или переписать ваши резервные копии. Дальняя сторона (
restic/rest-serverв режиме--append-only) обеспечивает это; BombVault лишь проверяет и никогда не показывает зелёный только на основании заявления о конфигурации. - Тест на подделку. BombVault периодически доказывает гарантию append-only, фактически пытаясь выполнить удаление в отношении внешнего репозитория (нацеленное на несуществующий объект): отказ означает защищено, принятие означает не защищено. Неубедительный результат никогда не переворачивает сохранённый вердикт.
- Управляемая настройка внешней копии. Мастер проводит вас от выбора бэкенда через готовый к вставке фрагмент развёртывания rest-server, тест соединения, переключатель неизменяемости и стратегию хранения.
- Учебные DR (внешние). Восстановите реальную цель из внешнего репозитория в одноразовую песочницу, проверьте её файл за файлом и байт за байтом, затем очистите. См. Внешняя копия и восстановление.
- Оценочная карта защиты от программ-вымогателей. Карточка на Панели с зелёной / жёлтой / красной позицией по каждому домену и чек-листом с отметками возраста; каждая красная строка ведёт прямо к исправлению. Она становится зелёной только на проверенных фактах.
- Тревога бюджета роста. Для неизменяемой внешней копии (где старые снимки намеренно никогда не очищаются) задайте бюджет размера и получайте оповещение, прежде чем он выйдет из-под контроля.
- Панель получателя (принимающая сторона). На машине, которая принимает неизменяемые внешние копии от другого BombVault, включите переключатель Получатель (Настройки), чтобы открыть вкладку Получатель. Зарегистрируйте полученный репозиторий только для чтения (открытый ключом отправляющего экземпляра), чтобы видеть его инвентарь снимков, сгруппированный по источникам, когда каждый источник в последний раз приходил, и запускать независимый
restic checkна принимающем оборудовании. Она оповещает вас, когда источник перестаёт отправлять в заданном вами окне (выключатель мертвеца) или когда проверка целостности не проходит. Строго только для чтения, поэтому она никогда не пишет в полученный репозиторий, и по умолчанию отключена. См. Внешняя копия и восстановление.
Обычные экспорты¶
- Обычный экспорт контейнера. Кнопка Экспорт для каждого контейнера записывает просматриваемую, не требующую инструментов копию рядом с репозиторием:
<name>.tar.gzпапок резервной копии плюс шаблон Unraid<name>.xml. Restic остаётся движком; это дополнительная удобная копия. - Обычный экспорт VM. У виртуальных машин тот же Экспорт (обычный tar):
<name>.tar.gzобраза(ов) диска плюс<name>.xml, восстанавливаемый с помощьюvirsh defineплюс диск, без нужды в BombVault или restic. - Шифрование обычных экспортов (age). Экспорты находятся вне restic, поэтому по умолчанию они в открытом виде. Включите шифрование age в Настройках и добавьте одного или нескольких получателей (публичный ключ age или публичный ключ SSH). Каждый экспорт (
.tar.gzконтейнера и VM, их файлы-спутники.xmlи ZIP flash) затем запечатывается для этих получателей, и вы расшифровываете его позже за пределами машины соответствующим закрытым ключом. В качестве правила безопасности при включённом шифровании и без заданного действительного получателя экспорт завершается ясной ошибкой вместо записи открытого текста.
Прочее¶
- Резервное копирование многих сразу. Выберите несколько контейнеров и нажмите Создать копию выбранных. Пакет выполняется на стороне сервера, поэтому продолжает работать, даже если вы закроете вкладку или потеряете соединение. BombVault никогда не резервирует (и потому никогда не останавливает) собственный контейнер.
- Браузер снимков со списком точек восстановления, удалением по каждому снимку и сворачиваемым деревом папок для восстановления на уровне файлов.
- Обслуживание репозитория по доменам: Проверить (
restic check), Разблокировать (снять зависшую блокировку) и Очистить (применяет политику хранения по запросу, когда она задана, иначе обычное освобождение места). - Хуки до и после резервного копирования для каждого контейнера. Команды оболочки выполняются внутри контейнера (например
mysqldumpв appdata перед резервным копированием); неудачный пре-хук прерывает резервное копирование. - Остановка других контейнеров во время резервного копирования, с перезапуском, зависящим от работоспособности. Назовите зависимые контейнеры (например базу данных), которые нужно остановить, пока этот резервируется. После этого BombVault возвращает их в порядке
depends_onиз Compose и по умолчанию ждёт, пока каждый сообщит о работоспособности (или о работе, если у него нет healthcheck), прежде чем запустить контейнеры, которые от него зависят, поэтому зависимость вроде Pi-hole, базы данных или VPN-шлюза действительно поднята прежде сервисов, которым она нужна, вместо того чтобы те возвращались с connection refused. Ожидание ограничено тайм-аутом на каждый контейнер (120 секунд по умолчанию), поэтому медленный или никогда не работоспособный контейнер не может подвесить запуск; и ожидание, и тайм-аут живут в Настройки, Расписания (отключите ожидание для прежнего одновременного перезапуска). Тот же упорядоченный, зависящий от работоспособности перезапуск также оборачивает обновление образа после резервного копирования, поэтому в день, когда приходит обновление, зависимые удерживаются в остановленном состоянии на время пересоздания и возвращаются, с проверкой работоспособности, только когда оно завершено. - Шаблоны исключений для каждого контейнера. Перечислите подкаталоги, которые нужно пропустить внутри резервируемого тома, по одному в строке. Вводите пути так, как вы видите их внутри контейнера; живой предпросмотр показывает, во что разрешается каждая строка, и предупреждает, когда строка не исключит ничего.
- Обновление после успешной резервной копии (расширенное, по умолчанию отключено). Включите это для контейнера, и BombVault загрузит новейший образ и пересоздаст его, но только когда действительно есть более новый образ, поэтому свежая точка восстановления всегда существует первой. Необязательные дополнения: уведомление на каждый обновлённый контейнер и очистка образов (базовый образ, разделяемый другими контейнерами, никогда не удаляется). После обновления BombVault также просит Unraid перепроверить статус обновления этого одного контейнера, поэтому устаревший баннер update available во вкладке Docker очищается сам, а не задерживается (обновления Unraid идут прямо через Docker API, поэтому его закэшированный статус, а на некоторых версиях закэшированный дайджест, иначе продолжал бы показывать баннер). Это по принципу максимальных усилий, никогда не влияет на резервную копию, по умолчанию включено и имеет переключатель в Настройках.
- Восстановление в альтернативную папку для клонирования или инспекции.
- Сравнение снимков и теги. Сравните два снимка, чтобы увидеть, что изменилось, и присваивайте снимкам теги, чтобы фильтровать их.
- Что нового после обновления. Заметки о выпуске всплывают один раз на каждую новую версию, обслуживаются из заметок, встроенных в бинарник, поэтому диалог работает офлайн.
- HTTPS из коробки (самоподписанный или свой собственный сертификат за обратным прокси).
- Docker healthcheck. Контейнер сообщает о работоспособности/неработоспособности из собственного
/api/health, поэтому инструмент авто-восстановления может перезапустить его, если движок когда-либо зависнет. - Тёмный/светлый интерфейс на 26 языках с выбором по флагу.