Бърз и интелигентен бекъп на физически Debian 12/13 сървър с BorgBackup

При физическите (Bare-Metal) сървъри липсват автоматичните snapshots, с които сме свикнали във среди като Proxmox или ESXi. Ако системният ви NVMe/SSD диск дефектира, губите операционната система, конфигурациите и работещите услуги за милисекунда.

Ето практично и изпитано решение за архивиране на Debian 12/13 сървър, което използва вторичен RAID масив за локално бекъп депо, BorgBackup за умна дедупликация и автоматични имейл известия при възникнал проблем.

 

Архитектурата накратко

  • Основен диск (NVMe/SSD): Операционна система (Debian 12/13), системни конфигурации, уеб сървъри и бази данни.

  • RAID масив: Голямо дисково пространство за съхранение на данни и локални бекъпи.

  • Цел: Автоматично копие на цялата ОС върху RAID масива с минимален IOPS товар и известяване по имейл само при грешка.

Защо BorgBackup?

За разлика от обикновения rsync или tar, Borg предлага:

  1. Дедупликация: Записва само променените блокове. 10 ежедневни бекъпа заемат място почти колкото за един.

  2. Бързина и компресия: Изключително ниско натоварване върху дисковата подсистема.

  3. Лесно възстановяване: Всеки бекъп може да се монтира като обикновена папка през borg mount за бърз преглед или извличане на единичен файл.

Настройката стъпка по стъпка

1. Подготовка на хранилището

Инсталираме необходимите пакети и инициализираме Borg репозитори върху RAID масива:

sudo apt update && sudo apt install borgbackup mailutils -y
sudo mkdir -p /mnt/raid/backups/system-disk
sudo borg init --encryption=none /mnt/raid/backups/system-disk

 

2. Bash скрипт с имейл известия

Създаваме /usr/local/bin/backup-system.sh, който бекъпва системата, пропуска временните папки и проверява за грешки:

 

#!/bin/bash

NOTIFY_EMAIL="[email protected]



"
SERVER_NAME=$(hostname)
LOG_FILE="/tmp/borg_error.log"
REPOSITORY="/mnt/raid/backups/system-disk"
ARCHIVE_NAME="system-$(date +%Y-%m-%d_%H:%M)"

> "$LOG_FILE"

# 1. Създаване на архив (пропускаме системни и временни папки)
borg create --stats \
    $REPOSITORY::$ARCHIVE_NAME \
    / \
    --exclude '/proc/*' --exclude '/sys/*' --exclude '/dev/*' \
    --exclude '/run/*' --exclude '/mnt/*' --exclude '/tmp/*' \
    --exclude '/var/tmp/*' --exclude '/var/cache/*' >> "$LOG_FILE" 2>&1

# При фатална грешка (код 2) -> изпращане на имейл
if [ $? -eq 2 ]; then
    mail -s "❌ [ГРЕШКА] Borg Backup на $SERVER_NAME" "$NOTIFY_EMAIL" < "$LOG_FILE"
    exit 2
fi

# 2. Ротация: пазим 7 дневни, 4 седмични и 6 месечни копия
borg prune -v --list $REPOSITORY \
    --keep-daily=7 --keep-weekly=4 --keep-monthly=6 >> "$LOG_FILE" 2>&1

rm -f "$LOG_FILE"

 

3. Автоматизация в Cron

Добавяме задача в crontab -e за изпълнение всяка нощ в 03:00 ч.:

 

0 3 * * * /usr/local/bin/backup-system.sh >> /var/log/borg-system.log 2>&1

 

Управление и възстановяване (Restore)

 

Преглед на наличните бекъпи

За да видите списък с всички направени архиви в репозиторито:

sudo borg list /mnt/raid/backups/system-disk

Възстановяване на данни (Restore)

При срив на системния диск правим чиста инсталация на Debian 12/13, закачаме RAID масива и възстановяваме.

Вариант 1: Монтиране за преглед или извличане на единичен файл (Препоръчително) Можете да монтирате даден архив като виртуална папка и да си копирате само това, което ви трябва (напр. конкретен файл или конфигурация):

sudo mkdir -p /mnt/backup-inspect
sudo borg mount /mnt/raid/backups/system-disk::system-2026-07-29_03:00 /mnt/backup-inspect

# Сега разглеждате съдържанието в /mnt/backup-inspect
# След като приключите:
sudo borg umount /mnt/backup-inspect

Вариант 2: Пълно възстановяване или извличане на цели папки За да извлечете конкретни папки (например /etc и /var/www) или целия архив директно в коренната директория:

cd /
sudo borg extract /mnt/raid/backups/system-disk::system-2026-07-29_03:00 etc var/www

 

Резултатът

При дефект на системния диск разполагаме с бърз начин да сглобим машината наново. Бързо, сигурно и без излишен спам в пощата — получаваме имейл само когато системата наистина се нуждае от внимание.

Коментари