Перейти до змісту

Копії та записи

Усе, що копіює BombVault, стоїть в одному списку в розділі Резервні копії: контейнери, віртуальні машини, набори папок, флешка, набори даних ZFS та автобекап. Кожен із них — запис зі своєю сторінкою. Ця сторінка проводить по списку, по сторінці запису та її трьох вкладках і по налаштуваннях, які може мати запис.

Список «Резервні копії» з вибраною плиткою «Контейнери»: кожен рядок показує останні запуски смужкою й один стан. Список «Резервні копії» з вибраною плиткою «Контейнери»: кожен рядок показує останні запуски смужкою й один стан.

Що зберігає кожен розділ

Розділ Що зберігається
Контейнери Папка appdata та визначення контейнера: образ, змінні, порти, мітки й томи. Картка Папки для резервного копіювання на вкладці Налаштування контейнера позначає, які саме папки охоплює копія, із живим лічильником шляхів і списком того, що ви виключили. Дані, які контейнер зберігає поза Host Data, наприклад в ixVolume TrueNAS або в проєкті Compose у /opt, не копіюються, і запуск називає пропущені папки. Запуск називає й папку всередині Host Data, якої зараз немає. Системні шляхи на кшталт /etc/localtime чи сокета Docker даними не вважаються.
Віртуальні машини Образи дисків, визначення XML та UEFI NVRAM, з коректним вимкненням або живим знімком, через SSH. Див. Копії віртуальних машин.
Flash Лише Unraid. Уся USB-флешка (/boot): ОС, ліцензія, конфігурація масиву, спільні ресурси, мережа й конфігурація плагінів.
Автобекап Власний /config BombVault: база даних налаштувань, облікові дані місць призначення, пара SSH-ключів libvirt, ключ і закріплені ключі хостів серверів ZFS та сертифікати, зняті через SQLite VACUUM INTO, щоб база даних ніколи не потрапляла в копію посеред запису.
Папки Будь-яка папка на сервері як набір папок, наприклад спільний ресурс, ваші документи чи фотоколекція, з необов'язковими шаблонами виключень. У наборів папок є розклади, зберігання, зовнішні копії, перевірки й навчання з відновлення, як і в усього іншого.
Набори даних ZFS Набір даних разом із кожним набором під ним, прочитаний з одного знімка ZFS, щоб усі вони були з одного моменту, і збережений через restic як папка. Запис ZFS може також тримати точну до блоків репліку на другому сервері ZFS. Див. Набори даних ZFS.

Будь-яка копія йде через restic, тому вона інкрементна й дедуплікована, і навіть великі диски віртуальних машин не роздувають репозиторій. BombVault ніколи не копіює, а отже, і не зупиняє, власний контейнер. Запуск можна безпечно зупинити, бо restic пише свій знімок останнім, тож перерваний запуск лишає дані без посилань і не лишає знімка. Блокування, що залишилося після перезапуску посеред запуску, знімається, і запуск пробується ще раз, але лише після того, як блокування десять хвилин не оновлювали.

Список

Плитки над списком вибирають вид, наприклад Контейнери або ZFS, і кожна плитка рахує свої записи. Плитка вибирає, а не ховає решту сторінки.

У кожному рядку останні чотирнадцять запусків запису показано маленькими квадратами й одним станом, наприклад Захищено, Не захищено, Відкладено або Реплікується. Усе інше про нього лежить в інформаційній підказці поруч із назвою, а поки вказівник стоїть на рядку, цей текст показується в самому рядку. Значок поруч із назвою контейнера каже, що після його останньої копії контейнер перестворили з іншим образом, іншими портами, змінними чи томами. Він зникає після наступної копії.

Три кнопки над списком звужують його:

  • Фільтри: за Розклад (Усі, Заплановано, Призупинено), за Резервне копіювання (Є копія, Без копій) і для Контейнери та віртуальні машини за Встановлені або Не встановлено.
  • Сортування: за іменем, станом, IP, останньою копією, розміром або розкладом. Кожне поле, окрім IP, сортується в обидва боки, наприклад Розмір, спочатку великі та Розмір, спочатку малі.
  • Пошук: за іменем, образом або IP.

Записи, які більше не встановлені, але в яких ще є копії, стоять окремо в розділі Не встановлено (лише резервні копії). Відновіть їх або видаліть їхні копії, щоб звільнити місце.

Головна дія сторінки пливе внизу праворуч: Створити копію всього зараз запускає прохід по всіх ввімкнених розділах. У Більше лежить решта:

  • Вибрати починає вибір, див. нижче.
  • Знайти резервні копії читає, що зберігають місця призначення, і заново будує за ними записи, наприклад після чистої установки. Контейнер без власних даних не має знімка, і він повертається з визначення, яке зберігається поруч із репозиторієм. Зовнішні копії перебудованих розділів потім чекають, поки ви не приймете їхні копії як копії цього сервера, див. Після перебудови.
  • З'єднання ZFS із цим сервером відкриває SSH-тест розділу ZFS, див. Набори даних ZFS.
  • Реплікувати все зараз за вибраної плитки ZFS надсилає репліку кожного запису ZFS.

Той самий список на телефоні. Той самий список на телефоні.

Вибір кількох записів

Вибирайте рядки так само, як файли у файловому менеджері: Ctrl+клацання, Shift+клацання, Ctrl+A або довге натискання на телефоні. Вибраний рядок показує галочку замість значка, а панель над списком рахує їх і пропонує Створити копію вибраних, Призупинити розклад і Відновити розклад, Вибрати всі та Скасувати вибір. У кожного рядка є й своє контекстне меню з його діями.

Вибране копіюється на сервері, запис за записом, тож триває, навіть коли ви закриваєте вкладку. Щоб відновити кілька записів разом, скористайтеся сторінкою «Відновлення».

Два вибрані контейнери та панель над списком. Два вибрані контейнери та панель над списком.

Додавання папки або набору даних ZFS

Контейнери, віртуальні машини та флешка з'являються самі, щойно їхній розділ ввімкнено в Налаштування, Загальні. Папки й набори даних ZFS ви вибираєте самі, бо BombVault не може вгадати, які саме ви маєте на увазі. Додати відкриває Що ще має копіювати BombVault?:

  • Одна папка перелічує спільні ресурси, які знайшов BombVault, і приймає будь-яку іншу папку всередині Host Data. Дайте набору папок ім'я, наприклад Documents. Після першої копії ім'я фіксується, бо знімки зберігаються під ним.
  • Набір даних ZFS перелічує набори даних цього сервера. Виберіть той, що стоїть на початку того, що ви хочете копіювати, див. Записи та дочірні набори даних.
  • Конфігурація системи з'являється на хості без Unraid, чий Host Data сягає /etc. Це початковий набір папок /etc, який ви переглядаєте перед збереженням.

Виключити запис

Запис, який ви залишаєте без копії навмисно, наприклад тестовий контейнер, можна позначити Не копіювати. Тоді він перестає вважатися незахищеним, а Більше не виключати повертає його. Призупинити розклад — м'якший шлях: запис виходить із розкладу та повного бекапу, отримує сірий значок Розклад призупинено, а Створити резервну копію й далі працює. Це той самий перемикач, що й У розкладі на вкладці запису «Налаштування».

Сторінка запису

Клацання по рядку відкриває сторінку запису. У шапці одним рядком названо запис і його стан, наприклад Остання копія 3 години тому або Відкладено, наступна спроба о 03:15, і лежать його дії: Створити резервну копію, Відновити та в розділі Більше рідкісні, такі як Експорт найновішої копії, Експорт контейнера або Експорт ВМ, Зв'язати з попереднім записом, Видалити всі резервні копії, Видалити запис та Видалити резервні копії всюди. Кнопка «назад» ліворуч від значка веде до списку. Поки йде копіювання, поруч із ходом виконання стоїть Скасувати резервне копіювання, а скасований запуск записується як скасований, а не як невдалий.

Видалити резервні копії всюди за один раз видаляє резервні копії запису в усіх місцях призначення, включно із зовнішніми копіями. Вікно показує кожне місце і скільки копій у ньому є, а кнопка стає доступною, щойно ви введете назву запису. Місце в режимі append-only зберігає свої копії і повідомляє про це. Запис і його налаштування залишаються, тож запис, який ви більше не копіюєте, таким і залишиться, а зникнуть лише його резервні копії та їхня історія.

На сторінці три вкладки: Резервні копії, Налаштування та Перевірка.

Вкладка «Резервні копії»

Ця вкладка перелічує знімки запису, спершу нові, зі смугою на кожен день. Копія, що лежить у кількох місцях, показана один раз із позначкою кожного місця призначення, яке її зберігає. Клацання по знімку відновлює його, а клацання по місцю всередині знімка відновлює саме звідти.

  • Місця призначення називає кожне місце з копіями цього запису та їхню кількість. Зовнішні місця читаються, лише коли ви натискаєте Перевірка, бо перелічення хмарного сховища забирає час. Місце, у яке запис більше не копіює, стоїть як Лише старіші резервні копії, і з нього досі можна відновлювати.
  • У кожного знімка є меню: Додати тег або Змінити тег, Порівняти з іншою копією, яке перелічує файли, що з'явилися, зникли чи змінилися, Експорт у tar, zip або власний репозиторій restic і видалення лише в одному місці.
  • Дампи бази даних контейнера стоять в окремому списку із завантаженням, збереженням у папку та імпортом.

Скільки знімків залишається, задає місце призначення, див. Як довго зберігати.

Вкладка «Резервні копії» контейнера: смуга на кожен день і місця призначення, що зберігають кожен знімок. Вкладка «Резервні копії» контейнера: смуга на кожен день і місця призначення, що зберігають кожен знімок.

Вкладка «Налаштування»

Кожен запис починається з Розклад і місце призначення:

  • У розкладі вмикає запис у планові запуски або виключає його.
  • Власний план дає цьому одному запису свій план, див. Власний план для одного запису. Без нього він працює за планом свого розділу або в повному бекапі.
  • Ряд кнопок, Локально і по одній на кожне зовнішнє місце призначення, каже, куди йдуть копії. Слідує значенню за замовчуванням означає, що запис іде туди ж, куди його розділ, а клацання по ній відкриває Місця призначення за розділами. Див. Розміщення для окремого запису.
  • Репозиторій називає місце, куди пишуться копії (Збережено на). Це місце фіксується з першої копії, а копії можна змінювати будь-коли.

Картки нижче залежать від виду запису:

Вид Картки
Контейнер Папки для резервного копіювання (які підключені папки копіюються, з Пропускати папки кешу (CACHEDIR.TAG)), Шаблони виключень, Зупинити інші контейнери, Команди до та після, База даних, Коли застосунок зайнятий, Оновлювати після успішного резервного копіювання, Знімок замість зупинки, Колишні назви
ВМ ВМ з Метод (Graceful (вимкнення) або Живий знімок) і Лише змінені блоки, див. посібник із копіювання віртуальних машин
Набір папок Папка та Шаблони виключень
Флешка Експорт flash у ZIP, який записує кожну копію флешки як звичайний .zip у вибрану вами папку, за один крок, щоб програма синхронізації ніколи не побачила файл наполовину. Якщо в копії флешки менше, ніж має бути, останній ZIP лишається на місці, і запуск експорту про це повідомляє.
Набір даних ZFS дочірні набори даних, контейнери для зупинки й команди навколо знімка, Репліка та Перевірити доступ до знімків, див. Набори даних ZFS

Налаштування зберігаються самі, коли ви їх змінюєте.

Вкладка «Налаштування» контейнера з «Власний план» у першій картці. Вкладка «Налаштування» контейнера з «Власний план» у першій картці.

Вкладка «Перевірка»

  • Перевірки показує перевірку відновлення, яка йде після першої копії. Перевірити відновлення запускає її знову на найновішій копії: BombVault відновлює вибірку до 100 файлів і 256 МіБ у тимчасову папку й змушує restic прочитати кожен файл назад і звірити з його хешами.
  • Тест запуску у контейнера відновлює найновішу копію в ізольовану копію й запускає її: ім'я починається з bombvault-test-, власна внутрішня мережа Docker без опублікованих портів і без виходу в локальну мережу, 1 CPU та 2 ГіБ пам'яті. Тест проходить, коли копія повідомляє, що здорова, відповідає на першому відкритому порту або, якщо немає ні того, ні іншого, продовжує працювати. Оригінал ніколи не зачіпається, а копія, її мережа та її дані потім видаляються, зокрема й після перезапуску посеред тесту. Контейнери в мережі хоста, привілейовані, з пристроями та ті, яким потрібен інший контейнер, позначаються як такі, що не піддаються перевірці. Тест запуску в Налаштування, Перевірка, Автоматичні перевірки перевіряє по одному контейнеру за запуск, починаючи з того, який перевіряли найдавніше.
  • Аномалії задають чутливість цього запису та рівень сповіщень і показують його відкриті знахідки.
  • Розмір за теками показує, що займає місце в найновішій копії і скільки з цього принесла остання копія, по одному рівню за раз.
  • Останні запуски перелічують останні запуски з початком, кінцем і тривалістю. Клацання показує подробиці.

Вкладка «Перевірка» контейнера з відкритим «Розмір за теками». Вкладка «Перевірка» контейнера з відкритим «Розмір за теками».

Шаблони виключень

Картка Шаблони виключень приймає по одному шаблону в рядку. Вводьте шляхи так, як ви бачите їх усередині контейнера, наприклад /config/Library/Application Support/Plex Media Server/Cache, або просте ім'я на кшталт .git, яке збігається на будь-якій глибині. Для набору папок вводьте шлях так, як його знає хост, наприклад /mnt/user/data/cache. Попередній перегляд під полем показує, чому відповідає кожен рядок, і попереджає, якщо рядок нічому не відповідає або виключив би все. Рядок / чи * або рядок, що називає цілу копійовану папку, ігнорується, тож виключення ніколи не спорожнить копію. Щоб пропустити папку повністю, краще зніміть її позначку в Папки для резервного копіювання.

Для відомих образів, таких як Plex, Jellyfin, Sonarr, Radarr, Immich і Nextcloud, картка пропонує папки, які застосунок заповнює заново сам, наприклад кеші, журнали та мініатюри. Нічого не виключається, поки ви не натиснете Виключити вибране.

Та сама картка несе попередження, яких сканування папок побачити не може. Наприклад, Immich зберігає свої альбоми, обличчя й дати в базі даних PostgreSQL в окремому контейнері, тому файлова копія самого лише контейнера Immich відновить знімки без усього цього, а відновлення виглядатиме вдалим. Копіюйте й контейнер із базою даних.

Дампи баз даних

Контейнери PostgreSQL, MySQL і MariaDB, які впізнає BombVault, перед кожною копією вивантажуються з працюючого сервера у власну точку відновлення поруч із файлами. Це охоплює офіційні образи, PostGIS, TimescaleDB, pgvector, pgautoupgrade, образи баз даних Immich, образи MariaDB від linuxserver, yobasystems і jc21 та mysql-server від Oracle. Контейнер, який лише схожий на базу даних, отримує ту саму можливість, вимкнену, поки ви її не оберете.

Дамп іде прямо в репозиторій і ніколи не записується на диск. Облікові дані беруться з власних змінних контейнера, зокрема секрети *_FILE, і ніколи його не залишають. Картка База даних на вкладці контейнера «Налаштування» каже, чи зберігається папка даних під час зупинки, чи копіюється на ходу, чи не зберігається, і вмикає або вимикає дамп для цього контейнера. Мітка bombvault.dbdump=false робить те саме й важливіша за картку. Автоматичні дампи баз даних в Налаштування, Загальні перемикає це для всіх одразу.

Невдалий дамп не провалює копію. Він з'являється як окремий невдалий запуск із причиною і надсилає сповіщення. Дампи ніколи не завантажуються назад самі: завантажте один, звичайний або стиснений, збережіть у папку чи імпортуйте в щойно запущену базу даних одним клацанням на вкладці Резервні копії. Як повернути дамп без BombVault, див. Як повернути дамп бази даних. Якщо дамп не вдався, див. Дамп бази даних не вдався.

Команди та інші контейнери

  • Команди до та після виконуються всередині контейнера через sh -c, наприклад щоб скинути кеш на диск. Команда перед копією, що завершилася помилкою, перериває копіювання. Команда перед копією, що завершилася з кодом 75, натомість відкладає планову копію, див. нижче.
  • Зупинити інші контейнери називає контейнери, які потрібно зупинити на час копіювання цього, наприклад його базу даних. Потім вони запускаються знову в порядку depends_on з Compose, і типово кожен має повідомити, що він здоровий, перш ніж запуститься наступний. Очікування та його тайм-аут лежать у Перезапуск після резервного копіювання в картці Порядок в Налаштування, Розклад.
  • Контейнер, який ділить простір імен мережі, PID чи IPC з контейнером, що зупиняється, через --net=container: або network_mode: service: з Compose, зупиняється й запускається разом із ним, навіть якщо його немає в списку, і запускається після контейнера, до якого приєднаний. Перезапущений контейнер отримує нову мережу, а в контейнера, що лишився працювати в старій мережі, був би лише loopback. Сам список лишається таким, яким ви його задали. Якщо такий контейнер не вдалося зупинити, запуск повідомляє, що в нього немає мережі, поки його не перезапустять. Це стосується й власного контейнера BombVault, який ніколи не зупиняє сам себе й не може бути в списку.
  • Контейнер, який потім не запрацював знову, називається в запуску та в сповіщенні, навіть якщо сама копія не вдалася.

Коли застосунок зайнятий

Копія зупиняє свій контейнер, тому планова може чекати, поки хтось користується застосунком, і сама пробувати знову. Картка Коли застосунок зайнятий на вкладці контейнера «Налаштування» налаштовує це:

  • Перевірка активності перед плановою копією питає Plex, Jellyfin або Emby, чи хтось дивиться. Plex питається з токеном із його власного Preferences.xml, тому вводити нічого не потрібно. Jellyfin і Emby приймають Ключ API, створений на панелі сервера в розділі API keys.
  • Не враховувати призупинені сеанси через (хв) дозволяє фільму, поставленому на паузу на ніч, перестати враховуватися.
  • Копіювати, якщо сервер не відповідає вирішує, що відбувається, коли сервер спитати не можна: якщо ввімкнено, копія запускається, і журнал про це пише. Якщо вимкнено, вона чекає, ніби хтось дивиться.
  • Чекати, поки контейнер надсилає дані потрібно для застосунків без такої перевірки, наприклад ігрового сервера чи завантажувача. Копія чекає, поки контейнер надіслав більше, ніж Зайнятий від (KiB/s), за будь-якого виміру за останні Тихо протягом (хв) хвилин.
  • Повторювати кожні (хв), Пробувати лише у вікні часу з Пробувати між і Чекати не довше (годин) задають, як ідуть спроби.
  • Наприкінці очікування або здається, і тоді копія показується в Потребує уваги з Повторити, або Однаково копіювати.

Копія, що чекає, записується як Відкладено, бурштиновим, а решта запуску триває. Огляд, список і запис показують її з наступною спробою, а сповіщення про прострочення та стан захисту чекають на неї до терміну. Ви отримуєте одне сповіщення, коли її відкладено, і одне, коли вона закінчується, а не по одному на спробу. Спроба чекає, поки йде інша копія, а очікування триває після перезапуску. Копія, яку ви запускаєте самі, завжди йде одразу, чи то Створити резервну копію, Повторити, вибір, API або MCP, а та, що проходить, закінчує очікування, яке було в ході.

На вкладці контейнера «Налаштування» є й старіший, простіший спосіб: Чекати, доки застосунок простоює з Чекати не довше (годин). Копія починається, щойно застосунок простоює, що визначає картка Простій перед копією в Налаштування, Розклад. Учасники стека Compose, яким пора в одному й тому самому запуску, чекають разом, а копія, що чекає, не тримає блокування, тому решта контейнерів іде вперед.

Картка «Коли застосунок зайнятий» контейнера Plex з налаштованою перевіркою активності. Картка «Коли застосунок зайнятий» контейнера Plex з налаштованою перевіркою активності.

Приклад: Plex чекає, поки хтось дивиться

Повний бекап іде щоночі о 03:00. Ніхто не має бачити, як фільм зупиняється через те, що Plex вимкнули заради копії, але копія все ж має пройти до ранку.

  1. Відкрийте Резервні копії, потім запис plex, потім його вкладку Налаштування.
  2. У Коли застосунок зайнятий виберіть у Перевірка активності Plex. Вводити нічого не потрібно.
  3. Задайте Не враховувати призупинені сеанси через (хв) рівним 30, щоб фільм, поставлений на паузу опівночі, переставав враховуватися о пів на першу.
  4. Залиште Копіювати, якщо сервер не відповідає ввімкненим.
  5. Задайте Повторювати кожні (хв) рівним 15.
  6. Увімкніть Пробувати лише у вікні часу і задайте Пробувати між 22:00 та 06:00.
  7. Задайте Чекати не довше (годин) рівним 3, а Наприкінці очікування значенням Однаково копіювати.

Що відбувається в ніч, коли о 03:00 хтось ще дивиться: BombVault питає Plex, знаходить поточний сеанс і записує копію як Відкладено з наступною спробою о 03:15. Решта контейнерів запуску копіюється як звичайно. Коли фільм закінчується о 04:10, спроба о 04:15 знаходить Plex вільним і копіює його, а очікування закінчується одним сповіщенням. Якби фільм ще йшов о 06:00, очікування дійшло б до кінця і Plex однаково було б скопійовано, тож його копії ніколи не відстають більш ніж на три години.

Для власної перевірки зробіть так, щоб Команда перед копією завершувалася з кодом 75, поки застосунок зайнятий, наприклад [ "$(cat /tmp/players)" = 0 ] || exit 75. Більше ознак і рішень у розділі Усунення несправностей.

Звичайні експорти

restic лишається рушієм, але експорт дає вам копію, якій не потрібні ні BombVault, ні restic.

  • Експорт контейнера та Експорт ВМ у розділі Більше на сторінці запису пишуть копію в тому вигляді, як вона є зараз, поруч із репозиторієм: копійовані папки контейнера та його шаблон Unraid або образи дисків віртуальної машини та її визначення, які відновлюються через virsh define.
  • Експорт у знімка записує збережену копію в папку експорту на сервері як tar, zip або власний репозиторій restic і може взяти один знімок або всі. Копія флешки й автобекап містять ключі, тому для їх експорту потрібні пароль для входу та вхід на самому екземплярі.

Типово експорти — звичайні файли. Шифрувати експорти за допомогою age у Налаштування, Система запечатує їх, зокрема ZIP флешки, для перелічених вами отримувачів, кожен з яких відкритий ключ age або відкритий ключ SSH. Пізніше ви розшифровуєте їх поза сервером відповідним закритим ключем. Якщо шифрування ввімкнено, а допустимого отримувача немає, експорт завершується зрозумілою помилкою і ніколи не записує звичайні файли.

Що розповідає запуск

  • Час. Кожен запуск показує початок, кінець і тривалість, а в кожного запису є свої Останні запуски.
  • Чому копія була повільною. Поки йде копіювання, BombVault стежить, наскільки зайняті процесор, диски й мережа. Коли копія займає значно довше за звичайне і щось одне явно вперлося в межу, запуск про це каже, наприклад «Цільовий диск disk1 був зайнятий на 98%». Інакше він нічого не каже.
  • Хід перевірок і очищень. Журнал активності та картка Перевірити резервні копії показують, скільки restic уже порахував, наприклад 12 з 47 пакетів, із залишком часу цього кроку, коли даних достатньо для оцінки.
  • Файли, які не вдалося прочитати. Копія, яка пройшла, але щось пропустила, фарбує свій рядок у помаранчевий і називає, що пропущено.