Резервное копирование хоста не такое уж сложное, но зависит от некоторых деталей установки системы. Для хоста, использующего ZFS в качестве корневой файловой системы, я делаю примерно следующее: Bash: #!/bin/bash
# Настраиваем, куда сохранять резервную копию и что исключать, так как это меняется
# регулярно и содержит только временные данные.
pbspasswd="/etc/pbs-passwd"
pbshost="pbs.lan"
pbsns="pve-host"
pbsvol="pve-sys"
exclude=( '/dev/shm' '/tmp' '/run' '/var/cache' '/var/lib/rrdcached'
'/var/tmp' '/var/lib/vz#' '/var/log#' )
# Преобразуем список исключений в аргументы командной строки для клиента PBS.
# Обрабатываем каталоги, такие как /var/log, особым образом, поскольку нам нужно сохранить
# некоторую структуру каталогов и разрешения в резервной копии, но отбросить все
# фактические данные.
exdirs=
for ex in "${exclude[@]}"; do
exdirs="${exdirs} --exclude ${ex%#}/?*"
[ "${ex%#}" != "${ex}" ] &&
exdirs="${exdirs} --exclude ${ex%#}/**/?* --exclude !${ex%#}/**/"
done
# Используем возможности ZFS для создания атомарной снимка для резервного копирования.
# Мы сохраняем этот снимок в дальнейшем, так как он полезен для быстрого
# восстановления случайно поврежденных систем.
root="$(zfs list / | awk 'NR==2{ print $1 }')"
zfs destroy "${root}@backup" >&/dev/null || :
zfs snapshot "${root}@backup"
[ -d "/.zfs/snapshot/" ] || zfs set snapdir=visible "${root}"
# Учетные данные для доступа к PBS-серверу должны храниться в
# /etc/pbs-passwd
export PBS_REPOSITORY="$(sed -n 2p <"${pbspasswd}")@${pbshost}:${pbsvol}"
export PBS_PASSWORD_FILE="${pbspasswd}"
# Создаем новое пространство имен, если его еще нет, а затем копируем наш снимок
# на PBS-сервер. Исключаем временные данные, поскольку они просто заполняют сервер
# и вряд ли будут хорошо дедуплицироваться.
proxmox-backup-client namespace list 2>/dev/null | egrep "^${pbsns}$" >/dev/null ||
proxmox-backup-client namespace create "${pbsns}"
(set -f
proxmox-backup-client backup "proxmox-root.pxar:/.zfs/snapshot/backup" --ns "${pbsns}" \
--change-detection-mode=metadata ${exdirs}) Разумеется, вы можете внести всевозможные изменения, в зависимости от ваших местных нужд. А если вы не используете ZFS, вам нужно самостоятельно разобраться, как создавать атомарные снимки. Если у вас есть другие файловые системы ZFS, которые также нужно резервировать, не забудьте включить их сюда. Восстановление — это большой слон в комнате. Это потенциально сложнее. Если вам нужно восстановить только часть файловой иерархии, это достаточно просто сделать. Но если вы хотите запустить совершенно новую машину, вам нужно решить, что делать с загрузкой и как поступать с различиями в оборудовании. Вы можете, вероятно, загрузиться с диска восстановления Debian, вручную разделить ваши диски и/или создать подходящие пулы и файловые системы ZFS. Затем используйте proxmox-backup-client для восстановления файлов. После этого войдите в новый файловую систему с помощью chroot и настройте ваш загрузчик. Возможно, вам также придется отредактировать /etc/network/interfaces и, возможно, изменить файлы /etc/systemd/network/*.link, если вы назначаете стабильные имена сетевых интерфейсов на основе MAC-адреса. Редактировать /etc/hostname тоже не помешает. Это все немного сложно, и в зависимости от вашего уровня владения Linux, вам может потребоваться несколько часов, чтобы полностью восстановить систему после серьезного сбоя. Если у вас есть доступ к запасному оборудованию, я бы посоветовал попробовать это на практике, или я бы попытался создать собственный образ восстановления, с которого можно загрузиться для автоматизации этого процесса. Но специфика будет сильно зависеть от ваших местных нужд.