Автоматический бэкап виртуальных машин в Proxmox VE с исключением папок
В этой статье я расскажу, как настроить автоматическое резервное копирование виртуальных машин в Proxmox VE, исключая из бэкапа смонтированные папки с большим объемом данных.
Проблема
При использовании vzdump для бэкапа виртуальных машин, по умолчанию копируются все данные, включая смонтированные через mp (mount point) папки. Если такие папки содержат большие объемы данных (например, 2 ТБ), это приводит к:
- Очень долгому процессу бэкапирования
- Заполнению хранилища ненужными копиями
- Увеличению времени восстановления
Решение
Используем параметр --exclude-path в vzdump, который позволяет исключить указанные пути из бэкапа.
1. Создаем скрипт для бэкапа
Создадим файл /root/scripts/vm_backup_exclude.sh:
#!/bin/bash
# Параметры:
VMID="100" # ID вашей виртуальной машины
EXCLUDE_PATH="/mnt/data" # Путь внутри ВМ, который исключаем
BACKUP_DIR="/mnt/backups/vms" # Куда сохранять бэкапы
MAX_BACKUPS=7 # Сколько бэкапов хранить
# Создаем директорию для бэкапов
mkdir -p "$BACKUP_DIR"
# Делаем бэкап с исключением указанной папки
vzdump "$VMID" \
--mode snapshot \
--compress zstd \
--storage local \
--exclude-path "$EXCLUDE_PATH" \
--dumpdir "$BACKUP_DIR" \
--quiet 1
# Удаляем старые бэкапы
find "$BACKUP_DIR" -name "vzdump-qemu-$VMID-*.vma.zst" -type f | sort -r | tail -n +$((MAX_BACKUPS + 1)) | xargs rm -f
Примечание: Убедитесь, что у скрипта есть права на выполнение: chmod +x /root/scripts/vm_backup_exclude.sh
2. Настраиваем автоматизацию через cron
Добавляем задание в планировщик:
crontab -e
Добавляем строку для ежедневного бэкапа в 3:00 ночи:
0 3 * * * /root/scripts/vm_backup_exclude.sh >> /var/log/vm_backup.log 2>&1
Проверка работы
После настройки:
- Запустите скрипт вручную:
/root/scripts/vm_backup_exclude.sh - Проверьте логи:
tail -f /var/log/vm_backup.log - Убедитесь, что бэкап создался:
ls -lh /mnt/backups/vms/
Важно: Исключенные из бэкапа данные нужно резервировать отдельно, если они важны!
Дополнительные возможности
- Бэкап нескольких ВМ: Добавьте цикл в скрипт для обработки нескольких ID
- Отправка уведомлений: Добавьте отправку email или в Telegram при завершении бэкапа
- Хранение на удаленном сервере: Используйте
rsyncдля копирования бэкапов на другой сервер
Заключение
Это решение позволяет:
- Значительно сократить время создания бэкапов
- Экономить место в хранилище
- Автоматизировать процесс резервного копирования
- Поддерживать актуальность бэкапов без ручного вмешательства
Комментарии
Пока нет комментариев. Будьте первым!