Proxmox. Бэкапирование конфигурации
Ссылки
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