Proxmox. Бэкапирование конфигурации

Материал из Wiki
Перейти к навигации Перейти к поиску

Ссылки

https://forum.proxmox.com/threads/how-to-backup-proxmox-configuration-files.67789/

https://github.com/DerDanilo/proxmox-stuff

https://gist.github.com/mrpeardotnet/6bdc4b504f43ce57fa7eaee96d376edf

Бэкапирование конфигурации

Необходимо бэкапить:

Не 100% что всё восстановится норм, проверить

/etc

/root

/var/spool/cron

### под вопросом - служба pve-cluster не стартует после восстановления файлов

### /var/lib/pve-cluster

Скрипт бэкапирования

nano proxmoxConfigBackup.sh

#!/bin/bash

proxmoxHostname=`hostname`
configBackupPathLocal="/tmp"
dateCurrent=`date +%Y-%m-%d_%H-%M-%S`
dayOfMonthCurrent=`date +%d`
configBackupName=`hostname`_proxmoxConfig_${dateCurrent}
configBackupFile="${configBackupPathLocal}/${configBackupName}.tar.gz"
backupServerIp="192.168.17.12" # must be available by SFTP (SSH)
backupServerUser="admin" # ssh login with rw access to backupServerBackupPath*
backupServerPass="PassWord#1" # pass for ssh login
backupServerBackupPathDaily="/mnt/d3/data02/proxmox/${proxmoxHostname}/backup/config/daily"
backupServerBackupPathMonthly="/mnt/d3/data02/proxmox/${proxmoxHostname}/backup/config/monthly"

backupServerBackupFilesLeaveType="lastFiles" # remove old backups type. "lastDays" - keep files for the last N days; "lastFiles" - keep the last N files
backupServerBackupFilesLastN="7" # number of keeping backup files - last days OR last files (depending on option "backupFilesLeaveType")

tar=`which tar`
ssh=`which ssh`
sshpass=`which sshpass`
rsync=`which rsync`
mkdir=`which mkdir`

sshParams="-q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" # SSH client params when connecting to SSH server
rsyncSshParams="--verbose --progress -ahe" # RSYNC client params when connecting to SSH server

#arrayItemsToBackup
IFS=' ' read -r -a arrayItemsToBackup <<< \
"\
/etc \
/var/spool/cron \
/root \
";

# debug
for i in "${arrayItemsToBackup[@]}";
    do echo "$i";
done

# arch items for backup
${tar} -czf ${configBackupFile} --absolute-names ${arrayItemsToBackup[@]}

# if arch success
if [[ $? == 0 ]] ; then

    # DAILY backup

    # create dir at remote server
    ${sshpass} -p "${backupServerPass}" ${ssh} ${sshParams} ${backupServerUser}@${backupServerIp} /bin/bash << HERE
    if ! [ -d "${backupServerBackupPathDaily}" ]; then
        mkdir -p ${backupServerBackupPathDaily}
    fi
HERE

    # send arch to ssh server
    ${sshpass} -p "${backupServerPass}" ${rsync} ${rsyncSshParams} "${ssh} ${sshParams}" ${configBackupFile} ${backupServerUser}@${backupServerIp}:${backupServerBackupPathDaily}/
    dailyBackupStatus=$?

    # MONTHLY backup

    if [[ ${dayOfMonthCurrent} == "01" ]]; then

        # create dir at remote server
        ${sshpass} -p "${backupServerPass}" ${ssh} ${sshParams} ${backupServerUser}@${backupServerIp} /bin/bash << HERE
        if ! [ -d "${backupServerBackupPathMonthly}" ]; then
            mkdir -p ${backupServerBackupPathMonthly}
        fi
HERE

        # send arch to ssh server
        ${sshpass} -p "${backupServerPass}" ${rsync} ${rsyncSshParams} "${ssh} ${sshParams}" ${configBackupFile} ${backupServerUser}@${backupServerIp}:${backupServerBackupPathMonthly}/
        monthlyBackupStatus=$?
    fi
fi

# if send to ssh success
if [[ ${dailyBackupStatus} == 0 ]] ; then

    # check if backup file-arch exist
    if test -f ${configBackupFile}; then
        # remove backup file-arch
        rm -f ${configBackupFile};
    fi
fi


# the following actions depend on value of var "backupServerBackupFilesLeaveType"

# remove old DAILY backups - older than N days
if [[ ${backupServerBackupFilesLeaveType} == "lastDays" ]]; then
 ${sshpass} -p "${backupServerPass}" ${ssh} ${sshParams} ${backupServerUser}@${backupServerIp} /bin/bash << HERE
    find ${backupServerBackupPathDaily}/ -mtime +${backupServerBackupFilesLastN} -type f -exec rm -rf {} \;
HERE
fi

# remove old DAILY backups - more than N last files
if [[ ${backupServerBackupFilesLeaveType} == "lastFiles" ]]; then
 ${sshpass} -p "${backupServerPass}" ${ssh} ${sshParams} ${backupServerUser}@${backupServerIp} /bin/bash << HERE
    if [[ -d ${backupServerBackupPathDaily} ]] ;then
        cd ${backupServerBackupPathDaily};
        ls -lt | sed /^total/d | awk 'FNR>${backupServerBackupFilesLastN} {print \$9}' | xargs rm -rf {};
    fi
HERE
fi

Восстановление конфигурации

Лучше после установки и окончательной настройки Proxmox сделать образ системного диска Proxmox Clonezilla или Acronis True Image, так как в отличие от чистой установки, в полностью настроенной системе будут дополнительно установлены утилиты типа cryptsetup, dropbear и их настройки

Накатываем образ системы, сделанный после полной настройки Proxmox

ИЛИ

Устанавливаем свежую систему Proxmox

(В ДАННОМ СЛУЧАЕ НУЖНО ПРОИЗВЕСТИ УСТАНОВКУ И НАСТРОЙКУ УТИЛИТ ТИПА cryptsetup, dropbear)

Проверяем настройки SSHD или устанавливаем SSHD и настраиваем

nano /etc/ssh/sshd_config

...
PermitRootLogin yes
...

systemctl restart sshd

Проверить имя сетевого интерфейса на текущей новой машине с Proxmox

ip a

В случае необходимости изменить имя сетевого интерфейса новой машины с Proxmox в файле:

/etc/network/interfaces

systemctl restart networking

Копируем файл с конфигурациями Proxmox pve01-test_proxmoxConfig_2021-02-28_05-19-37.tar.gz через SCP на новую систему Proxmox

Останавливаем системные службы

for i in pve-cluster pvedaemon vz qemu-server; do systemctl stop $i ; done

ЕСЛИ КОПИРОВАТЬ ВСЁ СОДЕРЖИМОЕ pve01-test_proxmoxConfig_2021-02-28_05-19-37.tar.gz В СВОИ ДИРЕКТОРИИ, ТО СКОРЕЕ ВСЕГО БУДУТ ОШИБКИ ПРИ ЗАПУСКЕ PVE (ВОЗМОЖНО, У МЕНЯ БЫЛИ ОШИБКИ ИЗ-ЗА ТОГО, ЧТО Я КОНФИГИ PROXMOX, УСТАНОВЛЕННОГО ИЗ ISO-СБОРКИ PROXMOX, ВОССТАНАВЛИВАЛ В СИСТЕМЕ DEBIAN, НА КОТОРУЮ ПОСЛЕ НАКАТИЛ PROXMOX),

ПОЭТОМУ:

ДЛЯ НАЧАЛА КОПИРУЕМ ИЗ АРХИВА ТОЛЬКО ЭТИ ФАЙЛЫ И ДИРЕКТОРИИ ПО СВОИМ МЕСТАМ:

/etc/pve/storage.cfg

/etc/pve/user.cfg

/etc/pve/vzdump.cron

/etc/pve/local/qemu-server/*

/etc/pve/priv/authorized_keys

/etc/pve/priv/known_hosts

/etc/pve/priv/storage

/etc/vzdump.conf

/var/spool/cron

ПЕРЕЗАПУСКАЕМ PVE, СМОТРИМ ЧТО РАБОТАЕТ, ЧТО - НЕТ

У МЕНЯ ВМ И СТОРАДЖИ ЗАРАБОТАЛИ

НО, ВОЗМОЖНО, НАДО СКОПИРОВАТЬ ЕЩЁ КАКИЕ-ТО ФАЙЛЫ ИЗ АРХИВА

ЕЩЁ РАЗ ПРАВИМ НАСТРОЙКИ ИМЕНИ СЕТЕВОГО ИНТЕРФЕЙСА,

ЕСЛИ КОПИРОВАЛИ ВСЕ ФАЙЛЫ ИЗ БЭКАПА, ТАК КАК ПЕРЕПИСАЛИ ВЫШЕ СДЕЛАННЫЕ ИЗМЕНЕНИЯ

Проверить имя сетевого интерфейса на текущей новой машине с Proxmox

ip a

В случае необходимости изменить имя сетевого интерфейса новой машины с Proxmox в файле:

/etc/network/interfaces

Проверяем что в файле /etc/hosts правильный локальный IP

/etc/hosts

reboot