Большинство руководств по резервному копированию Linux перестают показывать вам tar или rsync и называют это днем. BorgBackup идет дальше с дедупликацией, сжатием и шифрованием, что означает, что вторая резервная копия занимает секунды, а не минуты, потому что хранятся только измененные данные. Соедините его с Borgmatic (обертка, управляемая конфигурацией), и вы получите запланированные автоматические резервные копии с политиками хранения, крюками базы данных и интеграцией мониторинга из одного файла YAML.
Это руководство охватывает установку BorgBackup и Borgmatic на Ubuntu 26.04, инициализацию зашифрованных репозиториев, запуск ручных и автоматизированных резервных копий, восстановление файлов и настройку системных таймеров для безотказной работы.
Предпосылки
- Сервер под управлением Ubuntu 26.04
- Права пользователя: пользователь root или обычный пользователь с привилегиями sudo.
Конвенции
| |
Шаг 1. Обновите систему
Свежая установка Ubuntu 26.04 требует обновления пакетов до последних доступных версий.
| |
Система может нуждаться в перезагрузке после обновления.
| |
Шаг 2. Установите BorgBackup и Borgmatic
BorgBackup находится в репозиториях по умолчанию. Borgmatic устанавливается чисто через pipx, что делает его изолированным от системных пакетов Python:
| |
Добавьте двоичный путь pipx, чтобы borgmatic была доступна по всей системе:
| |
Шаг 3. Инициировать Зашифрованный Репозиторий BorgBackup
Прежде чем Borgmatic войдет в картину, она поможет понять необработанные команды Borg. Репозиторий Borg - это каталог, в котором хранятся все ваши резервные архивы. Создайте его с включенным шифрованием (вы всегда должны шифровать резервные копии):
| |
Borg подсказывает парольную фразу. Выберите что-то сильное и храните его отдельно. Режим repokey хранит ключ шифрования в репозитории (зашифрован с помощью вашей парольной фразы). Borg печатает предупреждение, напоминающее вам резервную копию ключа:
| |
Немедленно экспортируйте ключ и храните его в безопасном месте (менеджер паролей, USB-накопитель в пожаробезопасном сейфе или оба):
| |
Шаг 4. Создайте свою первую резервную копию с BorgBackup
Чтобы не вводить пароль каждый раз, храните его в файле с ограниченными разрешениями:
| |
Теперь создайте резервную копию /etc и /var/log с компрессией zstd:
| |
Borg показывает подробную статистику после завершения резервного копирования:
| |
19,75 МБ данных сжато до 1,18 МБ. Это снижение на 94%. Колонка дедупликации имеет большее значение, когда у вас есть несколько резервных копий, потому что Borg хранит только уникальные фрагменты данных во всех архивах.
Инкрементные резервные копии
Внесите изменения в систему (установите пакет, отредактируйте конфигурацию) и запустите другую резервную копию:
| |
Вторая резервная копия значительно быстрее и меньше:
| |
Сохранилось только 385,63 кБ новых дублированных данных. Резервное копирование завершилось за 0,31 секунды. Вот почему Borg так хорошо работает для ежедневных автоматизированных резервных копий: после первоначального полного резервного копирования каждый последующий запуск передает только дельту.
Шаг 5. Список, проверка и удаление архивов
Перечислите все архивы в репозитории:
| |
Каждый архив отмечен отпечатком пальца:
| |
Посмотреть общую статистику репозитория с информацией о Borg:
| |
Выход подтверждает статус шифрования хранилища, местоположение кэша и общий дублированный размер:
| |
Чтобы увидеть, что именно изменилось между двумя архивами, используйте borg diff:
| |
Borg показывает различия уровня байта для каждого измененного файла, что полезно для проверки того, что произошло между резервными копиями.
Шаг 6. Восстановление файлов из резервной копии
Извлеките определенные файлы из архива в целевой каталог:
| |
Извлеченные файлы появляются в текущем каталоге с их оригинальной структурой пути. Проверьте восстановление:
| |
Чтобы восстановить весь архив (полное восстановление системы), запустите borg extract без указания путей. Делайте это из живой USB или спасательной среды, если восстанавливаете /etc и системные каталоги в запущенной системе.
Шаг 7. Настройка Borgmatic для автоматического резервного копирования
Запуск команд borg работает, но Borgmatic заворачивает все в один файл конфигурации YAML и обрабатывает создание репо, резервное копирование, обрезку и проверку согласованности в одной команде. Создайте конфигурацию по умолчанию:
| |
Созданный файл имеет все опции, комментируемые примерами. Замените его готовой к производству конфигурацией. Откройте файл:
| |
Добавить следующую конфигурацию:
| |
Команда encryption_passcommand говорит Borgmatic прочитать парольную фразу из файла вместо подсказки. Опции keep_* контролируют, сколько архивов хранить после обрезки: 7 ежедневно, 4 еженедельно, 6 ежемесячно, 1 год. Проверяйте конфигурацию перед ее использованием:
| |
Вы должны увидеть пропуск проверки:
| |
Инициировать хранение через Borgmatic
Если вы еще не создали репо с сырым Borg, Borgmatic может сделать это:
| |
Запустите свою первую Borgmatic резервную копию
Создайте резервную копию с выходом статистики:
| |
Borgmatic считывает конфигурацию, подключается к репозиторию и создает архив:
| |
Borgmatic автоматически именует архивы, используя имя хоста и шаблон метки времени {hostname}-{now}. Вторая резервная копия после установки пакета заняла 0,39 секунды и хранила только 51,47 кБ новых дублированных данных.
Шаг 8. Отправьте Borgmatic пинг на ntfy (необязательно)
Создайте двух пользователей (используйте собственное имя администратора вместо someuser):
| |
Каждая команда подтверждает пользователя и его роль.
| |
Предоставьте тему ACLs с шаблоном wildcard, поэтому каждая новая тема homelab- покрыта без другой команды.
| |
Затем создайте токен для пользователя bots. Токен лучше, чем пароль бота в сценариях, потому что вы можете отозвать его самостоятельно, и его этикетка показывает, для чего он предназначен:
| |
Копируйте значение tk_ сейчас. Токен ниже является заполнителем в том же формате, что и напечатанный на нашем сервере, а остальная часть руководства использует его везде, где идет ваш реальный токен:
| |
Запуск ntfy access без аргументов перечисляет все правила, и это самый быстрый аудит, который у вас есть:
| |
Внимательно прочитайте последний блок. Анонимный пользователь * не имеет правил темы, а конфигурация сервера делает его «недоступным»:
| |
Храните токен в файле только для корней на каждой машине, которая отправляет оповещения, и экспортируйте его для следующих тестов завитков:
| |
Мы проверили ACL с обеих сторон. Токен bots может публиковаться в режиме homelab-backups, но получает 403 на тему вне шаблона и на чтение своих собственных тем.
Откройте файл:
| |
Добавить следующую конфигурацию:
| |
В веб-приложении неудача приземляется сверху с тегом черепа и максимальным маркером приоритета, выше старта и финиша.
Одна деталь, которую стоит скопировать: неудачный забег все равно отправил свой стартовый пинг. Если вы когда-либо видели начало без финиша или провал после него, borgmatic умер тяжело (из памяти, перезагрузка) до того, как его крюки могли работать, что само по себе является сигналом.
Шаг 9. Управление архивами с помощью Borgmatic
Перечислите все архивы:
| |
На выходе показаны все архивы с метками времени:
| |
Обрезайте старые архивы в соответствии с политикой хранения в конфигурации:
| |
Borg показывает, какие архивы он хранит и какие удаляет на основе ваших правил keep_*:
| |
Извлеките конкретный файл из последнего архива:
| |
Для полного восстановления пропустите --path, чтобы извлечь весь архив.
Шаг 10. Резервное копирование с помощью Systemd Timers
Системные таймеры более надежны, чем cron для долгосрочных задач, потому что они обрабатывают пропущенные запуски (от простоя системы) и поддерживают рандомизированные задержки, чтобы избежать штормов ввода-вывода. Создать сервисный блок:
| |
Добавить следующую конфигурацию:
| |
Приоритет Nice=19 и IOSchedulingPriority=7 обеспечивают работу резервных копий с наименьшим приоритетом процессора и ввода-вывода, поэтому они не мешают производственным нагрузкам. ConditionACPower=true пропускает резервные копии на аккумуляторе (полезно для ноутбуков). Теперь создайте таймер:
| |
Установите его для ежедневной работы с рандомизированной 3-часовой задержкой:
| |
``Persistent=true` гарантирует, что пропущенные резервные копии (от простоя) запускаются сразу же, когда система возвращается. Включите и запустите таймер:
| |
Подтвердите, что таймер активен:
| |
Выход показывает, когда будет запущена следующая резервная копия:
| |
Шаг 11. Назад к удаленному серверу через SSH
Локальные резервные копии защищают от сбоев программного обеспечения, но не от сбоев оборудования. Для защиты вне сайта Borg поддерживает удаленные репозитории через SSH. Сначала настройте аутентификацию на основе ключа на сервер резервного копирования:
| |
Установите BorgBackup на удаленный сервер (он должен быть доступен на обоих концах). Затем обновите конфигурацию Borgmatic, чтобы использовать удаленное хранилище:
| |
С двумя репозиториями, сконфигурированными, Borgmatic поддерживает оба в последовательности. Если один терпит неудачу, другой все равно завершается. Инициируйте удаленное репо перед первым запуском:
| |
Завершение
Дедупликация и сжатие BorgBackup означают, что ваши дополнительные резервные копии измеряются в килобайтах, а не мегабайтах. Borgmatic заворачивает весь рабочий процесс (создавать, обрезать, проверять) в один файл конфигурации, который ежедневно запускается системным таймером. С включенным шифрованием, удаленными репозиториями только для приложений и проверенной процедурой восстановления у вас есть система резервного копирования, которая обрабатывает как случайные удаления, так и сбои диска. Для дополнительной защиты соединяйте Borg с Timeshift для снимков системы на настольных компьютерах или используйте отдельный инструмент для резервных копий в конкретных базах данных, где имеет значение восстановление в момент времени.
Если вам понравился этот пост о том, как установить Borgbackup с помощью Borgmatic на Ubuntu 26.04, пожалуйста, поделитесь им со своими друзьями в социальных сетях, используя кнопки обмена ниже, или просто оставьте комментарий в разделе комментариев. Спасибо.