четверг, 27 августа 2020 г.

Proxmox BS. Debian Linux клиент.


Хорошая новость!
Со времени выхода обзора интерфейса прошло обновление и в пункте "Администрирование"/"Статус сервера" появилась кнопка вызова консоли: теперь мы можем обойтись без SSH

Установка клиента в Debian Linux осуществляется стандартным образом:

Добавляем ключ тестового репозитория:
# sudo wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg

добавляем тестовый репозиторий

# sudo echo 'deb http://download.proxmox.com/debian/pbs buster pbstest'> /etc/apt/sources.list.d/pbstest-beta.list

устанавливаем клиент

# sudo apt update
# sudo apt install proxmox-backup-client

Использование клиента


Примечание
Я не планирую приводить всеобъемлющего описания работы с клиентом: он сырой и на мой взгляд в данном виде не вполне удобен.

Как и в предыдущем случае, нам потребуется создать на сервере хранилище и пользователя: для простоты назову их обоих debian-test

дам права пользователю на хранилище

Проверяем пингуется ли с клиентской машины наш бэкап сервер по имени, если нет - добавляем запись для него на DNS сервере или в /etc/hosts

Создание архивов

Пояснение
Клиент умеет работать с 2 мя форматами архивов:
  1. <name>.pxar - файловый архив
  2. <name>.img - образ блочного устройства

Для создания файлового архива на Debian машине из под root нужно выполнить:

# proxmox-backup-client backup root.pxar:/ --repository debian-test@pbs@pbs:debian-test
Starting backup: host/debian-test/2020-08-25T13:59:27Z
Client name: debian-test
Starting protocol: 2020-08-25T16:59:27+03:00
Upload directory '/' to 'debian-test@pbs@pbs:debian-test' as root.pxar.didx
root.pxar: had to upload 3.33 GiB of 3.34 GiB in 179.69s, average speed 18.99 MiB/s).
root.pxar: backup was done incrementally, reused 9.13 MiB (0.3%)
Uploaded backup catalog (4.23 MiB)
Duration: PT179.781544170S
End Time: 2020-08-25T17:02:26+03:00

В итоге я получил бэкап корневого раздела своей Debian машины (точки монтирования по умолчанию не бэкапятся: в моем случае /home /var /tmp)

Вот так это выглядит в интерфейсе

Нажав на значок папки возле значка скачивания архива можно просмотреть его содержимое

Для того, чтоб включить в архив примонтированные разделы необходимо их указать в команде архивирования, например для того чтоб включить /home наша предыдущая команда должна выглядеть так:

# proxmox-backup-client backup root.pxar:/ home.pxar:/home --repository debian-test@pbs@pbs:debian-test
Starting backup: host/debian-test/2020-08-25T14:18:30Z
Client name: debian-test
Starting protocol: 2020-08-25T17:18:30+03:00
Upload directory '/' to 'debian-test@pbs@pbs:debian-test' as root.pxar.didx
root.pxar: had to upload 2.37 GiB of 3.34 GiB in 148.08s, average speed 16.40 MiB/s).
root.pxar: backup was done incrementally, reused 993.98 MiB (29.0%)
Upload directory '/home' to 'debian-test@pbs@pbs:debian-test' as home.pxar.didx
home.pxar: had to upload 27.02 MiB of 27.02 MiB in 1.81s, average speed 14.93 MiB/s).
Uploaded backup catalog (4.23 MiB)
Duration: PT150.002499619S
End Time: 2020-08-25T17:21:00+03:00
Видим, что появился архив для /home

Чтоб не писать такую длинную строку можно настроить переменную окружения PBS_REPOSITORY, так же можно настроить PBS_PASSWORD, чтоб не вводить пароль.

export PBS_REPOSITORY=debian-test@pbs@pbs:debian-test

Для сохранения после перезагрузки есть смысл добавить эту строку в .bashrc файл тогда команда будет выхлядеть так:

# proxmox-backup-client backup root.pxar:/ home.pxar:/home
Примечание
Далее в этом посте все примеры предполагают, что переменная окружения PBS_REPOSITORY установлена.

Для того, чтоб исключить какие то файлы из архива, используется достаточно запутанная, на мой взгляд метода:
В каталог, в котором мы хотим управлять включением/исключением файлов необходимо поместить файл .pxarexclude с шаблонами исключений. Файл обрабатывается сверху вниз более поздние шаблоны переопределяют более ранние.
Файл должен содержать по одному шаблону исключения на строку. Пустые строки игнорируются. То же самое верно и для строк, начинающихся с #, что указывает на комментарий. A ! в начале строки меняет шаблон с исключения на явное включение. Это позволяет исключить все записи в каталоге, за исключением нескольких отдельных файлов/подкаталогов. Строки, заканчивающиеся /совпадением, только в каталогах. Каталог, содержащий .pxarexclude файл, считается корнем данных шаблонов. Сопоставлять файлы можно только в этом каталоге и его подкаталогах. \ используется для экранирования специальных символов.
? соответствует любому одиночному символу.
* соответствует любому символу, включая пустую строку.
** используется для сопоставления подкаталогов. Его можно использовать, например, для исключения всех файлов, оканчивающихся на, .tmp в каталоге или подкаталогах с помощью следующего шаблона **/*.tmp.
[...]соответствует одному символу из любого из предоставленных символов в квадратных скобках.
[!...]является дополнительным и соответствует любому одиночному символу, не заключенному в скобки. Также можно указать диапазоны двумя символами, разделенными знаком -. Например, [a-z]соответствует любому буквенному символу нижнего регистра и [0-9]любой отдельной цифре.

Например, мы в нашем предыдущем бэкапе хотим исключить каталог /etc оставив в архиве только /etc/firebird и /etc/firefox-esr
для этого мы должны в корень / поместить следующий .pxarexclude файл:

etc/*
!/etc/fire*

Итоговый архив получим следующий

Примечание
Примеры из документации не работают: следует использовать относительные пути

Чтобы создать резервную копию блочного устройства, необходимо выполнить следующую команду:

proxmox-backup-client backup mydata.img:/dev/mylvm/mydata

Например Вот мой частичный вывод команды mount:

# mount
/dev/sda8 on /home type ext4 (rw,relatime)
/dev/sda5 on /var type ext4 (rw,relatime)
/dev/sda7 on /tmp type ext4 (rw,relatime)

Если я хочу сделать образ /dev/sda8, на котором находится /home? я должен выполнить следующую команду:

proxmox-backup-client backup home.img:/dev/sda8

Бэкап блочного устройства делается не в пример дольше файлового и занимает много дискового пространства - не стоит им злоупотреблять без необходимости

27 Mb vs 19.55 Gb

Клиент, так же, поддерживает шифрование (не рассматриваю).

Восстановление данных

Посмотреть существующие копии на клиенте можно командой:

# proxmox-backup-client snapshots
┌───────────────────────────────────────┬─────────────┬──────────────────────────────────────────────┐
│ snapshot                              │        size │ files                                        │
╞═══════════════════════════════════════╪═════════════╪══════════════════════════════════════════════╡
│ host/debian-test/2020-08-25T13:59:27Z │  3593039782 │ catalog.pcat1 index.json root.pxar           │
├───────────────────────────────────────┼─────────────┼──────────────────────────────────────────────┤
│ host/debian-test/2020-08-25T14:18:30Z │  3621381929 │ catalog.pcat1 home.pxar index.json root.pxar │
├───────────────────────────────────────┼─────────────┼──────────────────────────────────────────────┤
│ host/debian-test/2020-08-26T05:43:15Z │  3621382283 │ catalog.pcat1 home.pxar index.json root.pxar │
├───────────────────────────────────────┼─────────────┼──────────────────────────────────────────────┤
│ host/debian-test/2020-08-26T05:53:57Z │  3593040138 │ catalog.pcat1 index.json root.pxar           │
├───────────────────────────────────────┼─────────────┼──────────────────────────────────────────────┤
│ host/debian-test/2020-08-26T06:00:40Z │  3593040183 │ catalog.pcat1 index.json root.pxar           │
├───────────────────────────────────────┼─────────────┼──────────────────────────────────────────────┤
│ host/debian-test/2020-08-26T06:46:23Z │         671 │ catalog.pcat1 index.json root.pxar           │
├───────────────────────────────────────┼─────────────┼──────────────────────────────────────────────┤
│ host/debian-test/2020-08-26T06:50:31Z │  3589540024 │ catalog.pcat1 index.json root.pxar           │
├───────────────────────────────────────┼─────────────┼──────────────────────────────────────────────┤
│ host/debian-test/2020-08-26T06:57:48Z │  3589581742 │ catalog.pcat1 index.json root.pxar           │
├───────────────────────────────────────┼─────────────┼──────────────────────────────────────────────┤
│ host/debian-test/2020-08-26T07:32:07Z │ 20991443265 │ home.img index.json                          │
└───────────────────────────────────────┴─────────────┴──────────────────────────────────────────────┘

Увидем список, аналогичный интерфейсу сервера

Можно просмотреть каталог (пользователю нужны права datastortAdmin)

proxmox-backup-client catalog dump host/debian-test/2020-08-26T05:53:57Z
f "./root.pxar.didx/usr/share/zsh/vendor-completions/_systemd-inhibit" 1163 2019-02-14T12:11:58+02:00
f "./root.pxar.didx/usr/share/zsh/vendor-completions/_systemd-resolve" 2595 2019-02-14T12:11:58+02:00
f "./root.pxar.didx/usr/share/zsh/vendor-completions/_systemd-run" 3363 2019-02-14T12:11:58+02:00
f "./root.pxar.didx/usr/share/zsh/vendor-completions/_systemd-tmpfiles" 736 2019-02-14T12:11:58+02:00
f "./root.pxar.didx/usr/share/zsh/vendor-completions/_timedatectl" 2042 2019-02-14T12:11:58+02:00
f "./root.pxar.didx/usr/share/zsh/vendor-completions/_udevadm" 6347 2019-02-14T12:11:58+02:00
f "./root.pxar.didx/usr/share/zsh/vendor-completions/_youtube-dl" 3343 2019-04-28T00:03:56+03:00
d "./root.pxar.didx/usr/src"
d "./root.pxar.didx/var"
l "./root.pxar.didx/vmlinuz"
l "./root.pxar.didx/vmlinuz.old"

Команда восстановления позволяет восстановить отдельный архив из резервной копии.

proxmox-backup-client restore host/debian-test/2020-08-26T06:00:40Z root.pxar /target/path/

Так же можно использовать интерактивную оболочку для восстановления единичных файлов.(пользователю нужны права datastortAdmin)

proxmox-backup-client catalog shell host/debian-test/2020-08-25T13:59:27Z root.pxar
Error: no permissions on '/datastore/debian-test'

Так же есть возможность примонтировать архив через FUSE(у меня не получилось)

Error: manifest does not contain file 'root.pxar'

Резюме

На данном этапе я не готов рекомендовать клиент к использованию:
Копии создаются, с архивом можно работать через веб интерфейс сервера, можно разархивировать архив в целевую папку на клиенте, можно восстанавливать файлы через интерактивную оболочку, но постоянно вылазят какие то нюансы.

P.S.
Снова напоминаю, что это обзорная заметка бета версии продукта и не в коем случае не описание рабочего продукта!

Комментариев нет:

Отправить комментарий