↩️ Назад

Категории

Автоматический бэкап Proxmox на NAS326

23.03.2026 | Статья из категории: Linux

Мой старый-добрый Zyxel NAS326 пылился в углу, пока я не решил: хватит хранить бекапы Proxmox на том же сервере. Захотелось простого, надёжного и автоматического — чтобы каждое воскресенье конфиги сами улетали в папку /i-data/68828e0d/pochta_backup. Без лишних телодвижений, без терактов с пробросом портов и с тёмной эстетикой консоли.

📦 ИТОГОВЫЙ РЕЗУЛЬТАТ
✔️ Бекап всей конфигурации Proxmox (/etc) — 628 КБ
✔️ Еженедельная отправка на NAS326 по SFTP
✔️ Автоудаление старых копий (30 дней)
✔️ Никаких облаков, только мой NAS и скрипт на 15 строк.

1. Проблема: проброс порта и «ручной режим»

Сначала я тупо пытался заливать .vma.zst на NAS через sftp, пока не понял — полные образы ВМ весят десятки гигов. Это несерьёзно. К тому же на роутере в самый ответственный момент оказался закрыт 22 порт. Пришлось открыть, но главное — зачем хранить тонны мусора, если можно сохранить только конфиги?

# Пробный бросок (ещё когда порт был закрыт)
$ nc -zv 95.84.188.43 22
❌ Порт закрыт

После открытия порта — понеслось. Но ключевой момент: /etc/pve — это симлинк на базу SQLite. Если архивировать без -h, то получишь пустышку. Я же просто заархивировал весь /etc — и баста.

2. Секретный ингредиент: архив всего /etc

bash / proxmox
# Создаём лёгкий, но полный бэкап всех настроек
sudo tar czf ~/pve-etc-$(date +%Y%m%d_%H%M%S).tar.gz /etc \
    --exclude='/etc/ssh/ssh_host_*' \
    --exclude='*.log' \
    --warning=no-file-changed 2>/dev/null

# Размер? Всего ~600-700 КБ! Весь /etc весит 5.5 МБ, а сжатие делает чудо.
💡 Почему /etc — это святое? Там лежат конфиги всех VM (qemu-server/*.conf), LXC, сеть, хранилища, vzdump.conf и даже SSH-конфиги. Восстановить систему после переустановки Proxmox — дело 5 минут.

3. Скрипт, который делает всё сам

Я не люблю изобретать велосипед, но хотелось, чтобы бэкап отправлялся без пароля в интерактиве. Решение: sshpass + файл с паролем. Никаких секретов в коде, только /root/.pve_backup_pass с чётким chmod 600.

#!/bin/bash
# /usr/local/bin/pve-backup.sh — мой друг

BACKUP_DIR="/home/mazzick/pve-backups"
DATE=$(date +%Y%m%d_%H%M%S)
ARCHIVE="$BACKUP_DIR/pve-etc-$DATE.tar.gz"
SFTP_HOST="95.84.188.43"
SFTP_USER="admin"
SFTP_PATH="/i-data/68828e0d/pochta_backup/pve-config"
PASS_FILE="/root/.pve_backup_pass"

mkdir -p "$BACKUP_DIR"

# Архив /etc
sudo tar czf "$ARCHIVE" /etc --warning=no-file-changed 2>/dev/null

if [ -f "$ARCHIVE" ]; then
    SIZE=$(du -h "$ARCHIVE" | cut -f1)
    echo "[$(date)] ✅ $SIZE — $ARCHIVE" >> /var/log/pve-backup.log

    if [ -f "$PASS_FILE" ]; then
        SFTP_PASS=$(cat "$PASS_FILE")
        sshpass -p "$SFTP_PASS" sftp \
            -o HostKeyAlgorithms=+ssh-rsa \
            -o PubkeyAcceptedKeyTypes=+ssh-rsa \
            -o StrictHostKeyChecking=no \
            ${SFTP_USER}@${SFTP_HOST} << EOF >> /var/log/pve-backup.log 2>&1
mkdir ${SFTP_PATH}
cd ${SFTP_PATH}
put ${ARCHIVE}
exit
EOF
        echo "🚀 Отправлено на NAS326" >> /var/log/pve-backup.log
    fi

    # Удаляем старые локальные бекапы (30 дней)
    find "$BACKUP_DIR" -name "pve-etc-*.tar.gz" -mtime +30 -delete
fi
✨ Результат после первого запуска:
✅ Архив создан: pve-etc-20260323_145451.tar.gz (628K)
✅ Отправлено на сервер
Лог пишется в /var/log/pve-backup.log, всё прозрачно.

4. Cron: забудь про ручной режим

Раз в неделю, в воскресенье в 2 часа ночи, система сама будит NAS326 и отправляет актуальный срез конфигов.

sudo crontab -e
# Добавляем магию:
0 2 * * 0 /usr/local/bin/pve-backup.sh

Никаких напоминаний, никаких забытых бэкапов. Даже если NAS выключен — скрипт просто подождёт до следующей недели (но лучше держать NAS включённым 😉).

5. Что в итоге на NAS326?

В папке /i-data/68828e0d/pochta_backup/pve-config/ аккуратно лежат архивы вида pve-etc-20260323_145451.tar.gz. Каждый весит ~600 КБ. За год накопится около 30 МБ — смешно для современного хранилища, но как приятно осознавать, что все VM-конфиги, сетевые настройки и параметры кластера в безопасности.

🧩 Восстановление (если вдруг)
# 1. Ставим Proxmox заново
# 2. Распаковываем архив:
tar xzf pve-etc-20260323_145451.tar.gz -C /
# 3. Перезапускаем pve-cluster:
systemctl restart pve-cluster pveproxy
# 4. Готово! Все VM и настройки на месте.

6. Бонус: тёмная сторона силы (aka почему это круто)




Категории:

Категории

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Посетителей сегодня: 0
о блоге | карта блога

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA