Как перенести существующие резервные копии в PBS, Proxmox Backup Server
proximoxi2
Guest
0
02.03.2024 00:00:00
В данный момент у нас есть два сервера на Debian с пулом ZFS, на который мы делаем резервные копии наших контейнеров и виртуальных машин (через NFS). Сейчас мы хотим перейти на PBS. Заменить один из серверов на PBS, мигрировать уже существующие бэкапы, а потом заменить второй сервер. Но как перенести существующие резервные копии в PBS? Я не нашёл никакой документации по этому поводу.
proximoxi2
Guest
0
10.05.2024 18:47:00
vma-to-pbs работает хорошо. Было всего два неожиданных минуса. По умолчанию vma-to-pbs при импорте бэкапа использует текущее время, из-за чего импорт становится малоэффективным, если у меня есть 10 бэкапов с «сейчас». Есть опция `--backup-time <EPOCH>`, но, на мой взгляд, её стоило бы указывать в примерах. Ещё было бы здорово, если бы `vma-to-pbs --help` объяснял, что такое EPOCH — похоже, это unix timestamp в секундах. Если у вас уже есть более свежие бэкапы виртуальной машины, появляется ошибка: `Error: proxmox_backup_connect failed: command error: backup timestamp is older than last backup.` Но это можно обойти, переместив некоторые файлы на PBS-сервере. И вот скрипт, который, возможно, можно добавить в вики, так как, думаю, миграция с файловых бэкапов на PBS — самый распространённый кейс для этого инструмента:
У импортированных ВМ комментарий остаётся пустым, хотя эта информация есть в файле `qemu-server.conf`. Было бы круто, если бы имя оттуда автоматически использовалось как комментарий.
keonik
Guest
0
14.06.2024 17:15:00
В продолжение ответа @proximoxi2:
1. Я поправил его скрипт, он неправильно считал дату. 2. Добавил логирование в файл. 3. Нашёл способ добавлять комментарии к бэкапам, но пока не внедрил — причина ниже.
# Подготовка данных для бэкапа cd $PATH_TO_BACKUP_DUMPS touch $LOG_FILE_PATH for file in *.vma.zst; do vmid=$(echo "$file" | grep -oP '(\d+)-\d{4}_\d{2}_\d{2}-\d{2}_\d{2}_\d{2}' | grep -oP '^\d+') backup_day="$(echo "$file" | grep -oP '\d{4}_\d{2}_\d{2}' | tr '_' '/')" backup_time="$(echo "$file" | grep -oP '\-\d{2}_\d{2}_\d{2}' | tr '_' ':')" backup_time="${backup_time:1}" backup_full_time=$(date -d "$backup_day $backup_time" +"%s")
# Запуск бэкапа echo "Start backup: $file" | tee -a $LOG_FILE_PATH zstd -d --stdout "$file" | \ vma-to-pbs \ --fingerprint "${PBS_FINGERPRINT}" \ --repository "${PBS_REPOSITORY}" \ --vmid "$vmid" \ --backup-time "$backup_full_time" \ --password-file ${PBS_PASSWORD_FILE} 2>&1 | tee -a $LOG_FILE_PATH >/dev/null tail -n 1 /tmp/vma-to-pbs.log echo -e "\n\n\n" | tee -a $LOG_FILE_PATH done echo "Log file path: $LOG_FILE_PATH" ```
Теперь про добавление комментариев. Комментарии можно добавить через proxmox API, вот ссылка на нужный метод: {store}/notes
В чём проблема: я нашёл инструкции по использованию API (), но следуя им авторизация у меня постоянно срывалась. При этом, если "перехватить" запрос из браузера и немного его подправить — всё отлично работает.
Теперь расскажу, как "перехватить" этот запрос: 1. Открываете Datastore -> my-storage -> Content 2. Выбираете любой бэкап -> кликаете "Edit" в поле комментариев -> печатаете что-то, но НЕ жмёте "Ok". 3. Нажимаете F12 и открываете вкладку "Network" 4. Жмёте "Ok" для сохранения комментария 5. Ищете запрос с названием "notes" в списке, кликаете по нему правой кнопкой -> Copy -> Copy as cURL 6. В итоге получите что-то вроде:
7. Теперь отредактируйте его по своему усмотрению — замените нужные id и сделайте так, чтобы комментарий для бэкапа считывался из переменной. Этот запрос можно вставить после команды импорта бэкапа.
Источники: - - - - -
proximoxi2
Guest
0
10.05.2024 02:30:00
Я заметил, что теперь есть . Но есть ли также инструмент или документация по импорту резервных копий контейнеров?
fabian
Guest
0
10.05.2024 09:57:00
Нет, для бэкапов контейнеров такого инструмента пока не существует. Всегда можно извлечь бэкап (это tar-файл, содержащий rootfs и конфигурации контейнера), а потом создать резервную копию снова с помощью proxmox-backup-client, как это делает vzdump (так можно синхронизировать временную метку снимка PBS с временной меткой старого бэкапа), либо использовать pct restore и vzdump, но тогда временные метки будут потеряны.
Creat
Guest
0
25.01.2026 17:39:00
Просто хотел быстро добавить комментарий для тех, кто может наткнуться на этот пост через Google или что-то подобное: это уже не нужно, потому что вся функциональность (включая комментарии/заметки) теперь встроена напрямую в vma-to-pbs. Можно просто указать директорию с дампами, и он импортирует всё содержимое в заданное хранилище PBS, сохраняя правильные временные метки, комментарии и всё остальное.
У меня были пару бэкапов, которые отказывались импортироваться с какой-то странной ошибкой (proxmox_backup_write_data failed: command error: write_data: got invalid null chunk), но я просто пропустил эти бэкапы, и для меня это не проблема. Ограничение на невозможность импортировать бэкапы старше тех, что уже есть в PBS, всё ещё сохраняется — тогда vma-to-pbs ругается и прерывает процесс. Полагаю, в таких случаях этот скрипт всё равно поможет и сработает.
К тому же теперь vma-to-pbs принимает параметр для «notes-file», чтобы можно было импортировать комментарии напрямую. Это легко добавить в скрипт блоком вроде такого перед комментарием «start backup»:
Bash: notes_arg="" if [ -f "${file}.notes" ]; then notes_arg="--notes-file ${file}.notes" fi
Дальше просто добавьте ${notes_arg} перед 2>&1 в вызове vma-to-pbs — и всё должно работать. Это проверялось частично, потому что я перешёл на метод с дамп-директорией, встроенный в официальный инструмент.