При физическите (Bare-Metal) сървъри липсват автоматичните snapshots, с които сме свикнали във среди като Proxmox или ESXi. Ако системният ви NVMe/SSD диск дефектира, губите операционната система, конфигурациите и работещите услуги за милисекунда.
Ето практично и изпитано решение за архивиране на Debian 12/13 сървър, което използва вторичен RAID масив за локално бекъп депо, BorgBackup за умна дедупликация и автоматични имейл известия при възникнал проблем.
Архитектурата накратко
-
Основен диск (NVMe/SSD): Операционна система (Debian 12/13), системни конфигурации, уеб сървъри и бази данни.
-
RAID масив: Голямо дисково пространство за съхранение на данни и локални бекъпи.
-
Цел: Автоматично копие на цялата ОС върху RAID масива с минимален IOPS товар и известяване по имейл само при грешка.
Защо BorgBackup?
За разлика от обикновения rsync или tar, Borg предлага:
-
Дедупликация: Записва само променените блокове. 10 ежедневни бекъпа заемат място почти колкото за един.
-
Бързина и компресия: Изключително ниско натоварване върху дисковата подсистема.
-
Лесно възстановяване: Всеки бекъп може да се монтира като обикновена папка през
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
Резултатът
При дефект на системния диск разполагаме с бърз начин да сглобим машината наново. Бързо, сигурно и без излишен спам в пощата — получаваме имейл само когато системата наистина се нуждае от внимание.
