Мой старый-добрый Zyxel NAS326 пылился в углу, пока я не решил: хватит хранить бекапы Proxmox на том же сервере. Захотелось простого, надёжного и автоматического — чтобы каждое воскресенье конфиги сами улетали в папку /i-data/68828e0d/pochta_backup. Без лишних телодвижений, без терактов с пробросом портов и с тёмной эстетикой консоли.
/etc) — 628 КБСначала я тупо пытался заливать .vma.zst на NAS через sftp, пока не понял — полные образы ВМ весят десятки гигов. Это несерьёзно. К тому же на роутере в самый ответственный момент оказался закрыт 22 порт. Пришлось открыть, но главное — зачем хранить тонны мусора, если можно сохранить только конфиги?
# Пробный бросок (ещё когда порт был закрыт)
$ nc -zv 95.84.188.43 22
❌ Порт закрыт
После открытия порта — понеслось. Но ключевой момент: /etc/pve — это симлинк на базу SQLite. Если архивировать без -h, то получишь пустышку. Я же просто заархивировал весь /etc — и баста.
# Создаём лёгкий, но полный бэкап всех настроек
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 МБ, а сжатие делает чудо.
Я не люблю изобретать велосипед, но хотелось, чтобы бэкап отправлялся без пароля в интерактиве. Решение: 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, всё прозрачно.
Раз в неделю, в воскресенье в 2 часа ночи, система сама будит NAS326 и отправляет актуальный срез конфигов.
sudo crontab -e
# Добавляем магию:
0 2 * * 0 /usr/local/bin/pve-backup.sh
Никаких напоминаний, никаких забытых бэкапов. Даже если NAS выключен — скрипт просто подождёт до следующей недели (но лучше держать NAS включённым 😉).
В папке /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 и настройки на месте.
/root/.pve_backup_pass с правами 600, скрипт использует sshpass только локально./var/log/pve-backup.log, всегда можно проверить, когда последний раз был бэкап.
Комментарии
Пока нет комментариев. Будьте первым!