PVE/Backup Server: различия между версиями

Материал из ALT Linux Wiki
< PVE
Нет описания правки
Строка 24: Строка 24:


Установить сервер PBS можно следующей командой:
Установить сервер PBS можно следующей командой:
<source lang="text" highlight="1"># apt-get install proxmox-backup-server</source>
<syntaxhighlight lang="bash"># apt-get install proxmox-backup-server</syntaxhighlight>


Запустить и добавить в автозагрузку Proxmox Backup API Proxy Server:
Запустить и добавить в автозагрузку Proxmox Backup API Proxy Server:
<source lang="text" highlight="1"># systemctl enable --now proxmox-backup-proxy.service</source>
<syntaxhighlight lang="bash"># systemctl enable --now proxmox-backup-proxy.service</syntaxhighlight>


Служба proxmox-backup-proxy предоставляет API Proxmox Backup Server через TCP-порт 8007 с использованием HTTPS. Она имеет весьма ограниченные разрешения. Операции, требующие дополнительных разрешений, перенаправляются в локальную службу proxmox-backup.
Служба proxmox-backup-proxy предоставляет API Proxmox Backup Server через TCP-порт 8007 с использованием HTTPS. Она имеет весьма ограниченные разрешения. Операции, требующие дополнительных разрешений, перенаправляются в локальную службу proxmox-backup.
Строка 36: Строка 36:


Включить модуль можно следующей командой:
Включить модуль можно следующей командой:
<source lang="text" highlight="1"># modprobe zfs</source>
<syntaxhighlight lang="bash"># modprobe zfs</syntaxhighlight>


Чтобы не вводить эту команду после перезагрузки, следует раскомментировать строку:
Чтобы не вводить эту команду после перезагрузки, следует раскомментировать строку:
Строка 46: Строка 46:
Установить клиент PBS:
Установить клиент PBS:


<source lang="text" highlight="1"># apt-get install proxmox-backup-client</source>
<syntaxhighlight lang="bash"># apt-get install proxmox-backup-client</syntaxhighlight>


== Веб-интерфейс ==
== Веб-интерфейс ==
PBS предлагает интегрированный веб-интерфейс для управления сервером. Все административные задачи можно выполнять в веб-браузере. Веб-интерфейс также предоставляет встроенную консоль.
PBS предлагает интегрированный веб-интерфейс для управления сервером. Все административные задачи можно выполнять в веб-браузере. Веб-интерфейс также предоставляет встроенную консоль.


Веб-интерфейс PBS доступен по адресу https://<ip-адрес|имя>:8007. Потребуется пройти аутентификацию (логин по умолчанию: root, пароль указывается в процессе установки).  
Веб-интерфейс PBS доступен по адресу https://<IP-адрес|имя>:8007. Потребуется пройти аутентификацию (логин по умолчанию: root, пароль указывается в процессе установки).  


[[Изображение:Pbs-auth.png|Аутентификация в веб-интерфейсе PBS]]
[[Изображение:Pbs-auth.png|Аутентификация в веб-интерфейсе PBS]]
Строка 61: Строка 61:
=== Управление дисками ===
=== Управление дисками ===


Увидеть диски, подключенные к системе, можно в веб-интерфейсе «Управление» → «Storage/Disks» («Хранилище/Диски»):
Увидеть диски, подключенные к системе, можно в веб-интерфейсе «Управление» → «Хранилище/Диски»:


[[Изображение:Pbs-backup-disks.png|Диски, подключенные к системе]]
[[Изображение:Pbs-backup-disks.png|PBS. Диски, подключенные к системе]]


Также можно воспользоваться командой:  
Просмотр списка дисков в командной строке:  
<source lang="text" highlight="1"># proxmox-backup-manager disk list
<syntaxhighlight lang="bash"># proxmox-backup-manager disk list
┌─────────┬────────────┬─────┬───────────┬─────────────┬──────────────────────┬─────────┬─────────┐
┌─────────┬─────────┬─────┬───────────┬──────────────┬──────────────────────┬─────────┬─────────┐
│ name    │ used       │ gpt │ disk-type │       size │ model                │ wearout │ status  │
│ name    │ used   │ gpt │ disk-type │         size │ model                │ wearout │ status  │
╞═════════╪════════════╪═════╪═══════════╪═════════════╪══════════════════════╪═════════╪═════════╡
╞═════════╪═════════╪═════╪═══════════╪══════════════╪══════════════════════╪═════════╪═════════╡
│ nvme0n1 │ zfs       │  1 │ ssd      │ 21474836480 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
│ nvme0n1 │ zfs     │  1 │ ssd      │ 161061273600 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼────────────┼─────┼───────────┼─────────────┼──────────────────────┼─────────┼─────────┤
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
│ nvme0n2 │ zfs       │  1 │ ssd      │ 21474836480 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
│ nvme0n2 │ zfs     │  1 │ ssd      │ 161061273600 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼────────────┼─────┼───────────┼─────────────┼──────────────────────┼─────────┼─────────┤
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
sda    │ mounted   │  0 │ ssd      │120034123776 GOODRAM              │  0.00 % │ passed  │
nvme0n3 │ mounted │  1 │ ssd      │ 53687091200 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼────────────┼─────┼───────────┼─────────────┼──────────────────────┼─────────┼─────────┤
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
sdb     │ partitions │  0 │ hdd      │ 62914560000 USB_DISK_2.0        │      - │ unknown │
sda     │ mounted │  1 │ hdd      │ 62277025792 VBOX_HARDDISK        │      - │ unknown │
└─────────┴────────────┴─────┴───────────┴─────────────┴──────────────────────┴─────────┴─────────┘
└─────────┴─────────┴─────┴───────────┴──────────────┴──────────────────────┴─────────┴─────────┘
</source>
</syntaxhighlight>


Создание файловой системы ext4 или xfs на диске в веб-интерфейсе:
Создание файловой системы ext4 или xfs на диске в веб-интерфейсе:
Строка 84: Строка 84:
[[Изображение:Pbs-disks-add.png|Proxmox Backup Server. Создать файловую систему на диске]]
[[Изображение:Pbs-disks-add.png|Proxmox Backup Server. Создать файловую систему на диске]]


Пример создания файловой системы в командной строке (будет создана файловая система ext4 и хранилище данных на диске nvme0n3, хранилище данных будет создано по адресу {{path|/mnt/datastore/store2}}):
Пример создания файловой системы в командной строке (будет создана файловая система ext4 и хранилище данных на диске nvme0n3, хранилище данных будет создано по адресу {{path|/mnt/datastore/store1}}):


<source lang="text" highlight="1"># proxmox-backup-manager disk fs create store2 --disk nvme0n3 --filesystem ext4 --add-datastore true
<syntaxhighlight lang="bash"># proxmox-backup-manager disk fs create store1 --disk nvme0n3 --filesystem ext4 --add-datastore true
create datastore 'store2' on disk nvme0n3
create datastore 'store1' on disk nvme0n3
Chunkstore create: 1%
Chunkstore create: 1%
Chunkstore create: 2%
Chunkstore create: 2%
Строка 93: Строка 93:
Chunkstore create: 99%
Chunkstore create: 99%
TASK OK
TASK OK
</source>
</syntaxhighlight>


Для создания zpool в веб-интерфейсе, следует в разделе «Storage/Disks» перейти на вкладку «ZFS» и нажать кнопку «Создать: ZFS». В открывшемся окне следует задать параметры zpool: имя хранилища, выбрать диски, уровень RAID и нажать кнопку «OK»:
Для создания zpool в веб-интерфейсе, следует в разделе «Хранилище/Диски» перейти на вкладку «ZFS» и нажать кнопку «Создать: ZFS». В открывшемся окне следует задать параметры zpool: имя хранилища, выбрать диски, уровень RAID и нажать кнопку «OK»:


[[Изображение:Pbs-disks-zfs.png|Proxmox Backup Server. Создание хранилища ZFS]]
[[Изображение:Pbs-disks-zfs.png|Proxmox Backup Server. Создание хранилища ZFS]]
Строка 101: Строка 101:
Команда для создания зеркального zpool с использованием двух дисков и монтированием в {{path|/mnt/datastore/zfs_st}}:
Команда для создания зеркального zpool с использованием двух дисков и монтированием в {{path|/mnt/datastore/zfs_st}}:


<source lang="text" highlight="1"># proxmox-backup-manager disk zpool create zfs_st --devices nvme0n1,nvme0n2 --raidlevel mirror</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager disk zpool create zfs_st --devices nvme0n1,nvme0n2 --raidlevel mirror</syntaxhighlight>


Для мониторинга состояния локальных дисков используется пакет {{pkg|smartmontools}}. Он содержит набор инструментов для мониторинга и управления S.M.A.R.T. системой для локальных жестких дисков. Если диск поддерживает S.M.A.R.T. и поддержка SMART для диска включена, просмотреть данные S.M.A.R.T. можно в веб-интерфейсе или с помощью команды:
Для мониторинга состояния локальных дисков используется пакет {{pkgL|smartmontools}}. Он содержит набор инструментов для мониторинга и управления S.M.A.R.T. системой для локальных жестких дисков. Если диск поддерживает S.M.A.R.T. и поддержка SMART для диска включена, просмотреть данные S.M.A.R.T. можно в веб-интерфейсе или с помощью команды:


<source lang="text" highlight="1"># proxmox-backup-manager disk smart-attributes sdX</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager disk smart-attributes sdX</syntaxhighlight>


=== Хранилище данных ===  
=== Хранилище данных ===  
Строка 112: Строка 112:
Информация о конфигурации для хранилищ данных хранится в файле {{path|/etc/proxmox-backup/datastore.cfg}}.
Информация о конфигурации для хранилищ данных хранится в файле {{path|/etc/proxmox-backup/datastore.cfg}}.


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


Для создания хранилища в веб-интерфейсе, необходимо нажать кнопку «Add Datastore» («Добавить хранилище данных») в боковом меню в разделе «Datastore». В открывшемся окне необходимо указать:
Для создания хранилища в веб-интерфейсе, необходимо нажать кнопку «Добавить хранилище данных» в боковом меню в разделе «Хранилище данных». В открывшемся окне необходимо указать:
* «Имя» — название хранилища данных;
* «Имя» — название хранилища данных;
* «Backing Path» — путь к каталогу, в котором будет создано хранилище данных;
* «Путь к каталогу хранилища» — путь к каталогу, в котором будет создано хранилище данных;
* «GC Schedule» — частота, с которой запускается сборка мусора;
* «Расписание сборщика мусора» — частота, с которой запускается сборка мусора;
* «Prune Schedule» — частота, с которой происходит обрезка;
* «Расписание удаления» — частота, с которой происходит удаление ранее созданных резервных копий;
* «Prune Options» — количество резервных копий, которые необходимо хранить.
* «Параметры удаления» — количество резервных копий, которые необходимо хранить.


[[Изображение:Pbs-datastore-add.png|Proxmox Backup Server. Создание хранилища данных]]
[[Изображение:Pbs-datastore-add.png|Proxmox Backup Server. Создание хранилища данных]]


Создание хранилища данных в консоли:
Создание хранилища данных в консоли:
<source lang="text" highlight="1"># proxmox-backup-manager datastore create store1 /mnt/backup/disk1</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore create store2 /mnt/backup/disk1</syntaxhighlight>


После создания хранилища данных по умолчанию появляется следующий макет:
После создания хранилища данных по умолчанию появляется следующий макет:
<source lang="text" highlight="1"># ls -arilh /mnt/backup/disk1/
<syntaxhighlight lang="bash"># ls -arilh /mnt/backup/disk1/
итого 1,1M
итого 1,1M
665243 -rw-r--r-- 1 backup backup    0 мар 31 14:05 .lock
665243 -rw-r--r-- 1 backup backup    0 мар 31 14:05 .lock
665242 drwxr-x--- 1 backup backup 1,1M мар 31 14:05 .chunks
665242 drwxr-x--- 1 backup backup 1,1M мар 31 14:05 .chunks
665240 drwxr-xr-x 3 root  root  4,0K мар 31 13:56 ..
665240 drwxr-xr-x 3 root  root  4,0K мар 31 13:56 ..
665241 drwxr-xr-x 3 backup backup 4,0K мар 31 14:05</source>
665241 drwxr-xr-x 3 backup backup 4,0K мар 31 14:05</syntaxhighlight>


* .lock — пустой файл, используемый для блокировки процесса;
* .lock — пустой файл, используемый для блокировки процесса;
Строка 141: Строка 141:


Вывести список существующих хранилищ данных:
Вывести список существующих хранилищ данных:
<source lang="text" highlight="1"># proxmox-backup-manager datastore list</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore list</syntaxhighlight>


Изменить расписание сборки мусора и вывести свойства хранилища данных:
Изменить расписание сборки мусора и вывести свойства хранилища данных:
<source lang="text" highlight="1"># proxmox-backup-manager datastore update store1 --gc-schedule 'Tue 04:27'</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore update store2 --gc-schedule 'Tue 04:27'</syntaxhighlight>
<source lang="text" highlight="1"># proxmox-backup-manager datastore show store1</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore show store2</syntaxhighlight>


Удалить хранилище данных:
Удалить хранилище данных:
<source lang="text" highlight="1"># proxmox-backup-manager datastore remove store1</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore remove store2</syntaxhighlight>


Данная команда удалит только конфигурацию хранилища данных, данные из базового каталога удалены не будут.
Данная команда удалит только конфигурацию хранилища данных, данные из базового каталога удалены не будут.
Строка 154: Строка 154:
== Пользователи ==
== Пользователи ==
=== Управление пользователями ===
=== Управление пользователями ===
PBS хранит данные пользователей в файле {{path|/etc/proxmox-backup/user.cfg}}.
Пользователя часто внутренне идентифицируют по его имени и области аутентификации в форме <user>@<realm>.
После установки PBS существует один пользователь root@pam, который соответствует суперпользователю ОС. Этого пользователя нельзя удалить, все системные письма будут отправляться на адрес электронной почты, назначенный этому пользователю. Суперпользователь имеет неограниченные права, поэтому рекомендуется добавить других пользователей с меньшими правами.
[[Изображение:Pbs-auth2.png|Proxmox Backup Server. Выбор типа аутентификации в веб-интерфейсе]]
=== Области аутентификации ===
PBS поддерживает следующие области (методы) аутентификации:
PBS поддерживает следующие области (методы) аутентификации:
* pam — cтандартная аутентификация Linux PAM (Linux PAM standart authentication).  При использовании этой аутентификации системный пользователь должен существовать (должен быть создан, например, с помощью команды adduser). Пользователь аутентифицируется с помощью своего обычного системного пароля;
* Стандартная аутентификация Linux PAM (Linux PAM standart authentication) — при использовании этой аутентификации системный пользователь должен существовать (должен быть создан, например, с помощью команды {{cmd|adduser}}). Пользователь аутентифицируется с помощью своего обычного системного пароля;
* pbs — аутентификация Proxmox Backup Server. Хэшированные пароли хранятся в файле {{path|/etc/proxmox-backup/shadow.json}}.
* Сервер аутентификации Proxmox Backup (Proxmox Backup authentication server) — аутентификация Proxmox Backup Server. Хэшированные пароли хранятся в файле {{path|/etc/proxmox-backup/shadow.json}};
 
* Сервер LDAP — позволяет использовать внешний LDAP-сервер для аутентификации пользователей (например, OpenLDAP);
После установки PBS существует один пользователь root@pam, который соответствует суперпользователю ОС. Суперпользователь имеет неограниченные права, поэтому рекомендуется добавить других пользователей с меньшими правами.  
* Сервер OpenID Connect — уровень идентификации поверх протокола OATH 2.0. Позволяет аутентифицировать пользователей на основе аутентификации, выполняемой внешним сервером авторизации.


Для добавления пользователя в веб-интерфейсе, следует в веб-интерфейсе перейти в раздел «Конфигурация» → «Access Control» («Контроль доступа») и на  вкладке «Управление пользователями» нажать кнопку «Добавить»:
Для добавления пользователя в веб-интерфейсе, следует в веб-интерфейсе перейти в раздел «Конфигурация» → «Access Control» («Контроль доступа») и на  вкладке «Управление пользователями» нажать кнопку «Добавить»:
Строка 168: Строка 177:
Управление пользователями в консоли:
Управление пользователями в консоли:
* просмотреть список пользователей:
* просмотреть список пользователей:
*:<source lang="text" highlight="1"># proxmox-backup-manager user list
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user list
┌──────────────┬────────┬────────┬───────────┬──────────┬───────┬───────────┐
┌──────────────┬────────┬────────┬───────────┬──────────┬───────┬───────────┐
│ userid      │ enable │ expire │ firstname │ lastname │ email │ comment  │
│ userid      │ enable │ expire │ firstname │ lastname │ email │ comment  │
Строка 175: Строка 184:
├──────────────┼────────┼────────┼───────────┼──────────┼───────┼───────────┤
├──────────────┼────────┼────────┼───────────┼──────────┼───────┼───────────┤
│ root@pam    │      1 │  never │          │          │      │ Superuser │
│ root@pam    │      1 │  never │          │          │      │ Superuser │
└──────────────┴────────┴────────┴───────────┴──────────┴───────┴───────────┘</source>
└──────────────┴────────┴────────┴───────────┴──────────┴───────┴───────────┘</syntaxhighlight>
*создать пользователя:
*создать пользователя:
*:<source lang="text" highlight="1"># proxmox-backup-manager user create backup_u@pbs --email backup_u@test.alt</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user create backup_u@pbs --email backup_u@test.alt</syntaxhighlight>
*обновить или изменить любые свойства пользователя:
*обновить или изменить любые свойства пользователя:
*:<source lang="text" highlight="1"># proxmox-backup-manager user update backup_u@pbs --firstname Дмитрий --lastname Иванов</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user update backup_u@pbs --firstname Дмитрий --lastname Иванов</syntaxhighlight>
*отключить учетную запись пользователя:
*отключить учетную запись пользователя:
*:<source lang="text" highlight="1"># proxmox-backup-manager user update backup_u@pbs --enable 0</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user update backup_u@pbs --enable 0</syntaxhighlight>
*удалить учетную запись пользователя:
*удалить учетную запись пользователя:
*:<source lang="text" highlight="1"># proxmox-backup-manager user remove backup_u@pbs</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user remove backup_u@pbs</syntaxhighlight>


=== API-токены ===
=== API-токены ===
Строка 202: Строка 211:


Генерация API-токена в консоли:
Генерация API-токена в консоли:
<source lang="text" highlight="1"># proxmox-backup-manager user generate-token backup_u@pbs client1
<syntaxhighlight lang="bash"># proxmox-backup-manager user generate-token backup_u@pbs client1
Result: {
Result: {
   "tokenid": "backup_u@pbs!client1",
   "tokenid": "backup_u@pbs!client1",
   "value": "ff13e5e0-30df-4a70-99f1-c62b13803769"
   "value": "ff13e5e0-30df-4a70-99f1-c62b13803769"
}</source>
}</syntaxhighlight>


{{Note|Отображаемое секретное значение необходимо сохранить, так как его нельзя отобразить снова после создания токена. }}
{{Note|Отображаемое секретное значение необходимо сохранить, так как после создания токена его нельзя будет отобразить снова. }}


=== Контроль доступа ===
=== Контроль доступа ===
Строка 218: Строка 227:
Информация о правах доступа хранится в файле {{path|/etc/proxmox-backup/acl.cfg}}. Файл содержит 5 полей, разделенных двоеточием (':'):
Информация о правах доступа хранится в файле {{path|/etc/proxmox-backup/acl.cfg}}. Файл содержит 5 полей, разделенных двоеточием (':'):
  acl:1:/datastore:backup_u@pbs!client1:DatastoreAdmin
  acl:1:/datastore:backup_u@pbs!client1:DatastoreAdmin
В каждом поле представлены следующие данные:
* идентификатор acl;
* 1 или 0 – включено или отключено;
* объект, на который установлено разрешение;
* пользователи/токены, для которых установлено разрешение;
* устанавливаемая роль.


Добавление разрешения в веб-интерфейсе:
Добавление разрешения в веб-интерфейсе («Конфигурация» → «Управление доступом» вкладка «Разрешения»):


[[Изображение:Pbs-permissions.png|Proxmox Backup Server. Добавление разрешений]]
[[Изображение:Pbs-permissions.png|Proxmox Backup Server. Добавление разрешений]]


Добавление разрешения в консоли (добавить пользователя backup_u@pbs в качестве администратора хранилища данных для хранилища данных store1, расположенного в {{path|/mnt/backup/disk1/store1}}):
Добавление разрешения в консоли (добавить пользователя backup_u@pbs в качестве администратора хранилища данных для хранилища данных store2, расположенного в {{path|/mnt/backup/disk1/store2}}):
<source lang="text" highlight="1"># proxmox-backup-manager acl update /datastore/store1 DatastoreAdmin --auth-id backup_u@pbs</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager acl update /datastore/store2 DatastoreAdmin --auth-id backup_u@pbs</syntaxhighlight>


Вывести список разрешений:
Вывести список разрешений:
<source lang="text" highlight="1"># proxmox-backup-manager acl list</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager acl list</syntaxhighlight>


Отобразить действующий набор разрешений пользователя или API-токена:
Отобразить действующий набор разрешений пользователя или API-токена:
<source lang="text" highlight="1"># proxmox-backup-manager user permissions backup_u@pbs --path /datastore/store1
<syntaxhighlight lang="bash"># proxmox-backup-manager user permissions backup_u@pbs --path /datastore/store2
Privileges with (*) have the propagate flag set
Privileges with (*) have the propagate flag set


Path: /datastore/store1
Path: /datastore/store2
- Datastore.Audit (*)
- Datastore.Audit (*)
- Datastore.Backup (*)
- Datastore.Backup (*)
Строка 239: Строка 254:
- Datastore.Prune (*)
- Datastore.Prune (*)
- Datastore.Read (*)
- Datastore.Read (*)
- Datastore.Verify (*)</source>
- Datastore.Verify (*)</syntaxhighlight>


=== Двухфакторная аутентификация ===
=== Двухфакторная аутентификация ===
Строка 248: Строка 263:


Proxmox Backup Server поддерживает три метода двухфакторной аутентификации:
Proxmox Backup Server поддерживает три метода двухфакторной аутентификации:
* TOTP (Time-based One-Time Password) — для создания этого кода используется алгоритм одноразового пароля с учетом времени входа в систему (код меняется каждые 30 секунд). Настройка аутентификации TOTP:
* TOTP (одноразовый пароль на основе времени) — для создания этого кода используется алгоритм одноразового пароля с учетом времени входа в систему (код меняется каждые 30 секунд). Настройка аутентификации TOTP:
*:[[Изображение:Pbs-auth-totp1.png|Proxmox Backup Server. Настройка аутентификации TOTP]]
*:[[Изображение:Pbs-auth-totp1.png|Proxmox Backup Server. Настройка аутентификации TOTP]]
*:Использование TOTP при аутентификации пользователя:
*:Использование TOTP при аутентификации пользователя:
*:[[Изображение:Pbs-auth-totp2.png|Proxmox Backup Server. Запрос второго фактора (TOTP) при аутентификации пользователя в веб-интерфейсе]]
*:[[Изображение:Pbs-auth-totp2.png|Proxmox Backup Server. Запрос второго фактора (TOTP) при аутентификации пользователя в веб-интерфейсе]]
* WebAuthn (веб-аутентификация) — реализуется с помощью различных устройств безопасности, таких как аппаратные ключи или доверенные платформенные модули (TPM). Для работы веб-аутентификации необходим сертификат HTTPS;
* WebAuthn (веб-аутентификация) — реализуется с помощью различных устройств безопасности, таких как аппаратные ключи или доверенные платформенные модули (TPM). Для работы веб-аутентификации необходим сертификат HTTPS;
* Одноразовые ключи восстановления — список ключей, каждый из которых можно использовать только один раз. В каждый момент времени у пользователя может быть только один набор одноразовых ключей. Создание набора ключей:
* Ключи восстановления — список ключей, каждый из которых можно использовать только один раз. В каждый момент времени у пользователя может быть только один набор одноразовых ключей. Создание набора ключей:
*:[[Изображение:Pbs-auth-keys1.png|Proxmox Backup Server. Настройка аутентификации Recovery Keys]]
*:[[Изображение:Pbs-auth-keys1.png|Proxmox Backup Server. Настройка аутентификации Recovery Keys]]
*:Использование Recovery Key при аутентификации пользователя:
*:Использование Recovery Key при аутентификации пользователя:
Строка 264: Строка 279:
Информация о конфигурации удалённых PBS хранится в файле {{path|/etc/proxmox-backup/remote.cfg}}.
Информация о конфигурации удалённых PBS хранится в файле {{path|/etc/proxmox-backup/remote.cfg}}.


Для добавления удалённого PBS в веб-интерфейсе следует перейти в раздел «Конфигурация» → «Remotes» и нажать кнопку «Добавить»:  
Для добавления удалённого PBS в веб-интерфейсе следует перейти в раздел «Конфигурация» → «Удалённые хранилища» и нажать кнопку «Добавить»:  


[[Изображение:Pbs-remote-add.png|Proxmox Backup Server. Добавление удалённого PBS]]
[[Изображение:Pbs-remote-add.png|Proxmox Backup Server. Добавление удалённого PBS]]


{{Note|Отпечаток TLS-сертификата можно получить в веб-интерфейсе удалённого PBS:
{{Note|Отпечаток TLS-сертификата можно получить на удалённом PBS в веб-интерфейсе:


[[Изображение:Pbs-fingerprint.png|Proxmox Backup Server. Отпечаток TLS-сертификата]]
[[Изображение:Pbs-fingerprint.png|Proxmox Backup Server. Отпечаток TLS-сертификата]]


Или в командной строке:
Или в командной строке:
<source lang="text" highlight="1"># proxmox-backup-manager cert info | grep Fingerprint</source>}}
<syntaxhighlight lang="bash"># proxmox-backup-manager cert info | grep Fingerprint</syntaxhighlight>}}


Управление удалёнными PBS в консоли:
Управление удалёнными PBS в консоли:
*добавить удалённый PBS:
*добавить удалённый PBS:
*:<source lang="text" highlight="1"># proxmox-backup-manager remote create pbs2 --host pbs2.test.alt --userid root@pam --password 'SECRET' --fingerprint 42:5d:ff:3a:50:38:53:5a:9b:f7:50:...:ab:1b</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager remote create pbs2 --host pbs2.test.alt --userid root@pam --password 'SECRET' --fingerprint 42:5d:ff:3a:50:38:53:5a:9b:f7:50:...:ab:1b</syntaxhighlight>
*список удалённых PBS:
*список удалённых PBS:
*:<source lang="text" highlight="1"># proxmox-backup-manager remote list</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager remote list</syntaxhighlight>
*удалить удалённый PBS:
*удалить удалённый PBS:
*:<source lang="text" highlight="1"># proxmox-backup-manager remote remove pbs2</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager remote remove pbs2</syntaxhighlight>
 


Для настройки задачи синхронизации необходимо перейти в разделе «Datastore» на вкладку «Sync Jobs» и нажать кнопку «Добавить»:  
Для настройки задачи синхронизации необходимо в разделе «Хранилище данных» перейти на вкладку «Задания синхронизации» и нажать кнопку «Добавить»:  


[[Изображение:Pbs-syncjob-add.png|Proxmox Backup Server. Добавление задачи синхронизации]]
[[Изображение:Pbs-syncjob-add.png|Proxmox Backup Server. Добавление задачи синхронизации]]
Строка 290: Строка 304:
Управление задачами синхронизации в консоли:
Управление задачами синхронизации в консоли:
*добавить удалённый PBS:
*добавить удалённый PBS:
*:<source lang="text" highlight="1"># proxmox-backup-manager sync-job create test_job --remote pbs2 --remote-store remotestore --store zfs_st --schedule 'Sat 18:15'</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager sync-job create test_job --remote pbs2 --remote-store remotestore --store zfs_st --schedule 'Sat 18:15'</syntaxhighlight>
*список задач синхронизации:
*вывести список задач синхронизации:
*:<source lang="text" highlight="1"># proxmox-backup-manager sync-job list</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager sync-job list</syntaxhighlight>
*изменить удалённый PBS:
*изменить удалённый PBS:
*:<source lang="text" highlight="1"># proxmox-backup-manager sync-job  update test_job --comment 'offsite'</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager sync-job  update test_job --comment 'offsite'</syntaxhighlight>
*удалить удалённый PBS:
*удалить удалённый PBS:
*:<source lang="text" highlight="1"># proxmox-backup-manager sync-job remove test_job</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager sync-job remove test_job</syntaxhighlight>


После создания задания синхронизации оно будет запускаться по заданному расписанию, также его можно запустить вручную из веб-интерфейса (кнопка «Run now»).
После создания задания синхронизации оно будет запускаться по заданному расписанию, также его можно запустить вручную из веб-интерфейса (кнопка «Запустить сейчас»).


== Клиент резервного копирования ==
== Клиент резервного копирования ==
Строка 308: Строка 322:


Указать репозиторий можно, передав его в параметре --repository, или установив переменную среды PBS_REPOSITORY, например:
Указать репозиторий можно, передав его в параметре --repository, или установив переменную среды PBS_REPOSITORY, например:
<source lang="text" highlight="1"># export PBS_REPOSITORY=pbs.test.alt:store1</source>
<syntaxhighlight lang="bash"># export PBS_REPOSITORY=pbs.test.alt:store1</syntaxhighlight>


{| class="wikitable"
{| class="wikitable"
Строка 346: Строка 360:
В этом разделе рассмотрено, как создать резервную копию внутри машины (физического хоста, ВМ или контейнера). Такие резервные копии могут содержать архивы файлов и изображений. Предполагается что сервер резерного копирования уже настроен.
В этом разделе рассмотрено, как создать резервную копию внутри машины (физического хоста, ВМ или контейнера). Такие резервные копии могут содержать архивы файлов и изображений. Предполагается что сервер резерного копирования уже настроен.


Создать резевную копию домашнего каталога пользователя user (будет создан архив user.pxar):
Создать резервную копию домашнего каталога пользователя user (будет создан архив user.pxar):
<source lang="text" highlight="1">$ proxmox-backup-client backup user.pxar:/home/user/ --repository store1
<syntaxhighlight lang="bash">$ proxmox-backup-client backup user.pxar:/home/user/ --repository store1
Password for "root@pam": ******
Starting backup: host/host-197/2023-09-17T13:12:05Z
Starting backup: host/pbs/2022-04-01T14:11:27Z
Client name: host-01
Client name: pbs
Starting backup protocol: Sun Sep 17 15:12:05 2023
Starting backup protocol: Fri Apr  1 16:11:29 2022
fingerprint: 42:5d:29:20:72:56:18:66:bb:ba:85:fb:7f:0b:11:99:91:a0:ea:5f:a2:55:d1:be:bc:c0:c0:a9:9b:b1:a8:1b
Are you sure you want to continue connecting? (y/n): y
No previous manifest available.
No previous manifest available.
Upload directory '/home/user/' to 'store1' as user.pxar.didx
Upload directory '/home/user/' to 'pbs.test.alt:store1' as user.pxar.didx
user.pxar: had to backup 98.346 MiB of 98.346 MiB (compressed 21.303 MiB) in 3.65s
user.pxar: had to backup 667.04 MiB of 667.04 MiB (compressed 190.182 MiB) in 26.22s
user.pxar: average backup speed: 26.951 MiB/s
user.pxar: average backup speed: 25.436 MiB/s
Uploaded backup catalog (151.103 KiB)
Uploaded backup catalog (109.948 KiB)
Duration: 6.95s
Duration: 26.36s
End Time: Fri Apr  1 16:11:36 2022</source>
End Time: Sun Sep 17 15:12:12 2023</syntaxhighlight>


Распространенными типами архивов являются .pxar для файловых архивов и .img для образов блочных устройств.
Распространенными типами архивов являются .pxar для файловых архивов и .img для образов блочных устройств.


Команда создания резервной копии блочного устройства:  
Команда создания резервной копии блочного устройства:  
<source lang="text" highlight="1">$ proxmox-backup-client backup mydata.img:/dev/mylvm/mydata</source>
<syntaxhighlight lang="bash">$ proxmox-backup-client backup mydata.img:/dev/mylvm/mydata</syntaxhighlight>


==== Шифрование ====
==== Шифрование ====
Строка 372: Строка 383:
Создать ключ шифрования:
Создать ключ шифрования:


<source lang="text" highlight="1">$ proxmox-backup-client key create my-backup.key
<syntaxhighlight lang="bash">$ proxmox-backup-client key create my-backup.key
Encryption Key Password: ******
Encryption Key Password: ******
Verify Password: ******
Verify Password: ******
</source>
</syntaxhighlight>


Создание зашифрованной резервной копии:
Создание зашифрованной резервной копии:
<source lang="text" highlight="1">$ proxmox-backup-client backup user_s.pxar:/home/user/ --repository store1 --keyfile ./my-backup.key
<syntaxhighlight lang="bash">$ proxmox-backup-client backup user_s.pxar:/home/user/ --repository pbs.test.alt:store1 --keyfile ./my-backup.key
Password for "root@pam": ***
Password for "root@pam": ***
Starting backup: host/pbs/2022-04-01T14:25:29Z
Starting backup: host/host-197/2023-09-17T12:17:16Z
Client name: pbs
Client name: host-01
Starting backup protocol: Fri Apr  1 16:25:31 2022
Starting backup protocol: Sun Sep 17 14:17:19 2023
Using encryption key from './my-backup.key'..
Using encryption key from './my-backup.key'..
Encryption Key Password: ******
Encryption Key Password: ******
Encryption key fingerprint: b9:7d:0d:6d:51:e6:12:d6
Encryption key fingerprint: 0d:aa:4f:9b:ef:63:31:47
Downloading previous manifest (Fri Apr  1 16:11:27 2022)
fingerprint: cf:24:11:66:bd:84:ca:7b:52:7c:5c:66:72:7b:c1:4e:4a:b7:ca:10:07:d5:c7:ca:fc:6b:f9:e8:49:89:43:e9
Upload directory '/home/user/' to 'store1' as user_s.pxar.didx
Are you sure you want to continue connecting? (y/n): y
user_s.pxar: had to backup 98.346 MiB of 98.346 MiB (compressed 21.292 MiB) in 1.66s
Downloading previous manifest (Sun Sep 17 14:14:27 2023)
user_s.pxar: average backup speed: 59.289 MiB/s
Upload directory '/home/user/' to '192.168.0.123:store1' as user_s.pxar.didx
Uploaded backup catalog (151.104 KiB)
user_s.pxar: had to backup 667.04 MiB of 667.04 MiB (compressed 190.028 MiB) in 21.16s
Duration: 7.44s
user_s.pxar: average backup speed: 31.518 MiB/s
End Time: Fri Apr  1 16:25:38 2022</source>
Uploaded backup catalog (109.971 KiB)
Duration: 31.17s
End Time: Sun Sep 17 14:17:31 2023</syntaxhighlight>


Содержимое хранилища store1:
Содержимое хранилища store1:
Строка 401: Строка 414:
Список всех снимков на сервере:
Список всех снимков на сервере:


<source lang="text" highlight="1">$ proxmox-backup-client snapshot list --repository pbs.test.alt:store1
<syntaxhighlight lang="bash">$ proxmox-backup-client snapshot list --repository pbs.test.alt:store1
Password for "root@pam": ***
Password for "root@pam": ***
┌───────────────────────────────────┬─────────────┬──────────────────────────────────────┐
┌───────────────────────────────────┬─────────────┬──────────────────────────────────────┐
│ snapshot                          │        size │ files                                │
│ snapshot                          │        size │ files                                │
╞═══════════════════════════════════╪═════════════╪══════════════════════════════════════╡
╞═══════════════════════════════════╪═════════════╪══════════════════════════════════════╡
│ host/host-01/2022-04-28T12:27:01Z │ 667.147 MiB │ catalog.pcat1 index.json user.pxar  │
│ host/host-01/2023-09-17T14:17:16Z │ 667.147 MiB │ catalog.pcat1 index.json user.pxar  │
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/host-01/2022-04-28T12:33:04Z │ 667.148 MiB │ catalog.pcat1 index.json user_s.pxar │
│ host/host-01/2023-09-17T14:14:27Z │ 667.148 MiB │ catalog.pcat1 index.json user_s.pxar │
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/pbs/2022-04-01T14:11:27Z     │  98.494 MiB │ catalog.pcat1 index.json user.pxar  │
│ host/pbs/2023-09-15T15:00:37Z     │  98.494 MiB │ catalog.pcat1 index.json user.pxar  │
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/pbs/2022-04-01T14:25:29Z    │  98.494 MiB │ catalog.pcat1 index.json user_s.pxar │
│ host/pbs/2023-09-15T14:25:29Z    │  98.494 MiB │ catalog.pcat1 index.json user_s.pxar │
└───────────────────────────────────┴─────────────┴──────────────────────────────────────┘</source>
└───────────────────────────────────┴─────────────┴──────────────────────────────────────┘</syntaxhighlight>


Просмотреть содержимое снимка:
Просмотреть содержимое снимка:
<source lang="text" highlight="1">$ proxmox-backup-client catalog dump host/pbs/2022-04-01T14:11:27Z --repository pbs.test.alt:store1</source>
<syntaxhighlight lang="bash">$ proxmox-backup-client catalog dump host/pbs/2023-09-15T15:00:37Z --repository pbs.test.alt:store1</syntaxhighlight>


Команда восстановления позволяет восстановить один архив из резервной копии:
Команда восстановления позволяет восстановить один архив из резервной копии:
<source lang="text" highlight="1">$ proxmox-backup-client restore host/pbs/2022-04-01T14:11:27Z user.pxar /target/path/ --repository pbs.test.alt:store1</source>
<syntaxhighlight lang="bash">$ proxmox-backup-client restore host/pbs/2023-09-15T15:00:37Z user.pxar /target/path/ --repository pbs.test.alt:store1</syntaxhighlight>


Получить содержимое любого архива, можно восстановив файл index.json в репозитории по целевому пути «-». Это выведет содержимое архива на стандартный вывод:
Получить содержимое любого архива можно, восстановив файл index.json в репозитории по целевому пути «-». Это выведет содержимое архива на стандартный вывод:
<source lang="text" highlight="1">$ proxmox-backup-client restore host/pbs/2022-04-01T14:11:27Z index.json - --repository pbs.test.alt:store1</source>
<syntaxhighlight lang="bash">$ proxmox-backup-client restore host/pbs/2023-09-15T15:00:37Z index.json - --repository pbs.test.alt:store1</syntaxhighlight>


Если необходимо восстановить несколько отдельных файлов, можно использовать интерактивную оболочку восстановления:
Если необходимо восстановить несколько отдельных файлов, можно использовать интерактивную оболочку восстановления:
<source lang="text" highlight="1">$ proxmox-backup-client catalog shell host/host-01/2022-04-28T12:27:01Z user.pxar --repository pbs.test.alt:store1
<syntaxhighlight lang="bash">$ proxmox-backup-client catalog shell host/host-01/2023-09-17T14:17:16Z user.pxar --repository pbs.test.alt:store1
Starting interactive shell
Starting interactive shell
pxar:/ > ls
pxar:/ > ls
…</source>
…</syntaxhighlight>


Пример поиска в содержимом архива и восстановление данных:  
Пример поиска в содержимом архива и восстановление данных:  
<source lang="text">pxar:/ > find  *.txt --select
<syntaxhighlight lang="bash">pxar:/ > find  *.txt --select
/test/connection_trace.txt
/test/connection_trace.txt
/Рабочий стол/1.txt
/Рабочий стол/1.txt
Строка 439: Строка 452:
pxar:/ > restore-selected /home/user/restore/
pxar:/ > restore-selected /home/user/restore/
pxar:/ > restore /home/user/conf/ --pattern *.conf
pxar:/ > restore /home/user/conf/ --pattern *.conf
pxar:/ > exit</source>
pxar:/ > exit</syntaxhighlight>


где:
где:
Строка 453: Строка 466:


Можно вручную инициировать вход/выход. Команда входа:
Можно вручную инициировать вход/выход. Команда входа:
<source lang="text" highlight="1">$ proxmox-backup-client login --repository pbs.test.alt:store1
<syntaxhighlight lang="bash">$ proxmox-backup-client login --repository pbs.test.alt:store1
Password for "root@pam": ******</source>
Password for "root@pam": ******</syntaxhighlight>


Удалить билет:
Удалить билет:
<source lang="text" highlight="1">$ proxmox-backup-client logout --repository pbs.test.alt:store1</source>
<syntaxhighlight lang="bash">$ proxmox-backup-client logout --repository pbs.test.alt:store1</syntaxhighlight>


== Интеграция с PVE ==
== Интеграция с PVE ==
Строка 463: Строка 476:
Proxmox Backup Server можно интегрировать в автономную или кластерную установку PVE, добавив его в качестве хранилища в PVE.
Proxmox Backup Server можно интегрировать в автономную или кластерную установку PVE, добавив его в качестве хранилища в PVE.


Для создания нового хранилища типа «Proxmox Backup Server» необходимо выбрать «Датацентр» → «Хранилище», нажать кнопку «Добавить» и в выпадающем меню выбрать пункт «Proxmox Backup Server»:
Для создания нового хранилища типа «Proxmox Backup Server» необходимо выбрать «Центр обработки данных» → «Хранилище», нажать кнопку «Добавить» и в выпадающем меню выбрать пункт «Proxmox Backup Server»:
   
   
[[Изображение:Pve-backup-storageadd1.png|PVE. Добавление хранилища Proxmox Backup Server]]
[[Изображение:Pve-backup-storageadd1.png|PVE. Добавление хранилища Proxmox Backup Server]]
Строка 477: Строка 490:
Или, выполнив следующую команду на сервере резервного копирования:
Или, выполнив следующую команду на сервере резервного копирования:


<source lang="text" highlight="1"># proxmox-backup-manager cert info | grep Fingerprint
<syntaxhighlight lang="bash"># proxmox-backup-manager cert info | grep Fingerprint
Fingerprint (sha256): c8:26:af:4a:c3:dc:60:72:4a:0b:4d:c1:e6:58:02:62:90:39:cb:fc:75:5d:00:9a:57:ca:3d:28:a0:2c:99:a5</source>}}
Fingerprint (sha256): c8:26:af:4a:c3:dc:60:72:4a:0b:4d:c1:e6:58:02:62:90:39:cb:fc:75:5d:00:9a:57:ca:3d:28:a0:2c:99:a5</syntaxhighlight>}}


Добавление хранилища в командной строке:
Добавление хранилища в командной строке:


<source lang="text" highlight="1"># pvesm add pbs pbs_backup --server pbs.test.alt --datastore store2 --fingerprint  c8:26:af:4a:c3:dc:60:72:...:99:a5 --username root@pam --password</source>
<syntaxhighlight lang="bash"># pvesm add pbs pbs_backup --server pbs.test.alt --datastore store2 --fingerprint  c8:26:af:4a:c3:dc:60:72:...:99:a5 --username root@pam --password</syntaxhighlight>


Просмотреть состояние хранилища:
Просмотреть состояние хранилища:
<source lang="text" highlight="1"># pvesm status --storage pbs_backup
<syntaxhighlight lang="bash"># pvesm status --storage pbs_backup
Name              Type    Status          Total            Used      Available        %
Name              Type    Status          Total            Used      Available        %
pbs_backup        pbs    active        30786448        3097752        26099504  10.06%</source>
pbs_backup        pbs    active        30786448        3097752        26099504  10.06%</syntaxhighlight>


Добавив хранилище данных типа «Proxmox Backup Server» в PVE, можно создавать резервные копии ВМ и контейнеров в это хранилище так же, как и в любые другие хранилища  (см. [[PVE#Резервное_копирование |Резервное копирование и восстановление]]).
Добавив хранилище данных типа «Proxmox Backup Server» в PVE, можно создавать резервные копии ВМ и контейнеров в это хранилище, так же как и в любые другие хранилища  (см. [[PVE#Резервное_копирование |Резервное копирование и восстановление]]).


Резервная копия ВМ:
Резервная копия ВМ:

Версия от 19:02, 2 февраля 2024

Proxmox Backup Server (PBS) — клиент-серверное решение для резервного копирования и восстановления виртуальных машин, контейнеров и физических узлов. Решение оптимизировано для проекта PVE и позволяет безопасно создавать резервные копии. Поддерживается инкрементное резервное копирование с полной дедупликацией, что значительно снижает нагрузку на сеть и экономит пространство для хранения.

Сервер резервного копирования хранит данные резервного копирования и предоставляет API для создания хранилищ данных и управления ими. С помощью API также можно управлять дисками и другими ресурсами на стороне сервера. Клиент резервного копирования использует этот API для доступа к резервным данным.

Одна резервная копия может содержать несколько архивов. Например, при резервном копировании ВМ каждый диск сохраняется как отдельный архив внутри этой резервной копии. Сама конфигурация ВМ хранится в виде дополнительного файла.

Установка

Установка сервера

Минимальные требования к серверу (предназначены только для тестирования):

  • CPU: 64bit (x86-64 или AMD64), 2+ Ядра
  • ОЗУ: 2 ГБ
  • Диск: от 8 ГБ
  • Сеть: 1 интерфейс

Рекомендуемые требования к серверу:

  • CPU: 64bit, 4 Ядра
  • ОЗУ: 4 ГБ (+1 ГБ на каждый ТБ дискового пространства)
  • Диск: от 32 ГБ + резервное хранилище
  • Сеть: 1 интерфейс + резервирование
Примечание: Не рекомендуется устанавливать сервер резервного копирования непосредственно на гипервизор. Безопаснее использовать отдельный физический сервер для хранения резервных копий.


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

# apt-get install proxmox-backup-server

Запустить и добавить в автозагрузку Proxmox Backup API Proxy Server:

# systemctl enable --now proxmox-backup-proxy.service

Служба proxmox-backup-proxy предоставляет API Proxmox Backup Server через TCP-порт 8007 с использованием HTTPS. Она имеет весьма ограниченные разрешения. Операции, требующие дополнительных разрешений, перенаправляются в локальную службу proxmox-backup.

Служба proxmox-backup предоставляет API управления Proxmox Backup Server по адресу 127.0.0.1:82. Она имеет разрешение на выполнение всех привилегированных операций.

Примечание: Для работы с локальным ZFS хранилищем должен быть установлен модуль ядра с поддержкой ZFS (например, kernel-modules-zfs-std-def).

Включить модуль можно следующей командой:

# modprobe zfs

Чтобы не вводить эту команду после перезагрузки, следует раскомментировать строку:

#zfs
в файле /etc/modules-load.d/zfs.conf.


Установка клиента

Установить клиент PBS:

# apt-get install proxmox-backup-client

Веб-интерфейс

PBS предлагает интегрированный веб-интерфейс для управления сервером. Все административные задачи можно выполнять в веб-браузере. Веб-интерфейс также предоставляет встроенную консоль.

Веб-интерфейс PBS доступен по адресу https://<IP-адрес|имя>:8007. Потребуется пройти аутентификацию (логин по умолчанию: root, пароль указывается в процессе установки).

Аутентификация в веб-интерфейсе PBS

Веб-интерфейс Proxmox Backup Server

Хранилище данных

Управление дисками

Увидеть диски, подключенные к системе, можно в веб-интерфейсе «Управление» → «Хранилище/Диски»:

PBS. Диски, подключенные к системе

Просмотр списка дисков в командной строке:

# proxmox-backup-manager disk list
┌─────────┬─────────┬─────┬───────────┬──────────────┬──────────────────────┬─────────┬─────────┐
│ name    │ used    │ gpt │ disk-type │         size │ model                │ wearout │ status  │
╞═════════╪═════════╪═════╪═══════════╪══════════════╪══════════════════════╪═════════╪═════════╡
│ nvme0n1 │ zfs     │   1 │ ssd       │ 161061273600 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
│ nvme0n2 │ zfs     │   1 │ ssd       │ 161061273600 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
│ nvme0n3 │ mounted │   1 │ ssd       │  53687091200 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
│ sda     │ mounted │   1 │ hdd       │  62277025792 │ VBOX_HARDDISK        │       - │ unknown │
└─────────┴─────────┴─────┴───────────┴──────────────┴──────────────────────┴─────────┴─────────┘

Создание файловой системы ext4 или xfs на диске в веб-интерфейсе:

Proxmox Backup Server. Создать файловую систему на диске

Пример создания файловой системы в командной строке (будет создана файловая система ext4 и хранилище данных на диске nvme0n3, хранилище данных будет создано по адресу /mnt/datastore/store1):

# proxmox-backup-manager disk fs create store1 --disk nvme0n3 --filesystem ext4 --add-datastore true
create datastore 'store1' on disk nvme0n3
Chunkstore create: 1%
Chunkstore create: 2%
…
Chunkstore create: 99%
TASK OK

Для создания zpool в веб-интерфейсе, следует в разделе «Хранилище/Диски» перейти на вкладку «ZFS» и нажать кнопку «Создать: ZFS». В открывшемся окне следует задать параметры zpool: имя хранилища, выбрать диски, уровень RAID и нажать кнопку «OK»:

Proxmox Backup Server. Создание хранилища ZFS

Команда для создания зеркального zpool с использованием двух дисков и монтированием в /mnt/datastore/zfs_st:

# proxmox-backup-manager disk zpool create zfs_st --devices nvme0n1,nvme0n2 --raidlevel mirror

Для мониторинга состояния локальных дисков используется пакет smartmontools. Он содержит набор инструментов для мониторинга и управления S.M.A.R.T. системой для локальных жестких дисков. Если диск поддерживает S.M.A.R.T. и поддержка SMART для диска включена, просмотреть данные S.M.A.R.T. можно в веб-интерфейсе или с помощью команды:

# proxmox-backup-manager disk smart-attributes sdX

Хранилище данных

Хранилище данных — это место, где хранятся резервные копии. Текущая реализация PBS использует каталог внутри стандартной файловой системы (ext4, xfs или zfs) для хранения данных резервного копирования. Информация о конфигурации для хранилищ данных хранится в файле /etc/proxmox-backup/datastore.cfg.

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

Создание хранилища данных

Для создания хранилища в веб-интерфейсе, необходимо нажать кнопку «Добавить хранилище данных» в боковом меню в разделе «Хранилище данных». В открывшемся окне необходимо указать:

  • «Имя» — название хранилища данных;
  • «Путь к каталогу хранилища» — путь к каталогу, в котором будет создано хранилище данных;
  • «Расписание сборщика мусора» — частота, с которой запускается сборка мусора;
  • «Расписание удаления» — частота, с которой происходит удаление ранее созданных резервных копий;
  • «Параметры удаления» — количество резервных копий, которые необходимо хранить.

Proxmox Backup Server. Создание хранилища данных

Создание хранилища данных в консоли:

# proxmox-backup-manager datastore create store2 /mnt/backup/disk1

После создания хранилища данных по умолчанию появляется следующий макет:

# ls -arilh /mnt/backup/disk1/
итого 1,1M
665243 -rw-r--r-- 1 backup backup    0 мар 31 14:05 .lock
665242 drwxr-x--- 1 backup backup 1,1M мар 31 14:05 .chunks
665240 drwxr-xr-x 3 root   root   4,0K мар 31 13:56 ..
665241 drwxr-xr-x 3 backup backup 4,0K мар 31 14:05
  • .lock — пустой файл, используемый для блокировки процесса;
  • каталог .chunks — содержит подкаталоги, с именами от 0000 до ffff. В этих каталогах будут храниться фрагментированные данные, после выполнения операции резервного копирования.

Управление хранилищами данных

Вывести список существующих хранилищ данных:

# proxmox-backup-manager datastore list

Изменить расписание сборки мусора и вывести свойства хранилища данных:

# proxmox-backup-manager datastore update store2 --gc-schedule 'Tue 04:27'
# proxmox-backup-manager datastore show store2

Удалить хранилище данных:

# proxmox-backup-manager datastore remove store2

Данная команда удалит только конфигурацию хранилища данных, данные из базового каталога удалены не будут.

Пользователи

Управление пользователями

PBS хранит данные пользователей в файле /etc/proxmox-backup/user.cfg.

Пользователя часто внутренне идентифицируют по его имени и области аутентификации в форме <user>@<realm>.

После установки PBS существует один пользователь root@pam, который соответствует суперпользователю ОС. Этого пользователя нельзя удалить, все системные письма будут отправляться на адрес электронной почты, назначенный этому пользователю. Суперпользователь имеет неограниченные права, поэтому рекомендуется добавить других пользователей с меньшими правами.

Proxmox Backup Server. Выбор типа аутентификации в веб-интерфейсе

Области аутентификации

PBS поддерживает следующие области (методы) аутентификации:

  • Стандартная аутентификация Linux PAM (Linux PAM standart authentication) — при использовании этой аутентификации системный пользователь должен существовать (должен быть создан, например, с помощью команды adduser). Пользователь аутентифицируется с помощью своего обычного системного пароля;
  • Сервер аутентификации Proxmox Backup (Proxmox Backup authentication server) — аутентификация Proxmox Backup Server. Хэшированные пароли хранятся в файле /etc/proxmox-backup/shadow.json;
  • Сервер LDAP — позволяет использовать внешний LDAP-сервер для аутентификации пользователей (например, OpenLDAP);
  • Сервер OpenID Connect — уровень идентификации поверх протокола OATH 2.0. Позволяет аутентифицировать пользователей на основе аутентификации, выполняемой внешним сервером авторизации.

Для добавления пользователя в веб-интерфейсе, следует в веб-интерфейсе перейти в раздел «Конфигурация» → «Access Control» («Контроль доступа») и на вкладке «Управление пользователями» нажать кнопку «Добавить»:

Proxmox Backup Server. Создание нового пользователя

Proxmox Backup Server.Список пользователей

Управление пользователями в консоли:

  • просмотреть список пользователей:
    # proxmox-backup-manager user list
    ┌──────────────┬────────┬────────┬───────────┬──────────┬───────┬───────────┐
    │ userid       │ enable │ expire │ firstname │ lastname │ email │ comment   │
    ╞══════════════╪════════╪════════╪═══════════╪══════════╪═══════╪═══════════╡
    │ backup_u@pbs │      1 │  never │           │          │       │           │
    ├──────────────┼────────┼────────┼───────────┼──────────┼───────┼───────────┤
    │ root@pam     │      1 │  never │           │          │       │ Superuser │
    └──────────────┴────────┴────────┴───────────┴──────────┴───────┴───────────┘
    
  • создать пользователя:
    # proxmox-backup-manager user create backup_u@pbs --email backup_u@test.alt
    
  • обновить или изменить любые свойства пользователя:
    # proxmox-backup-manager user update backup_u@pbs --firstname Дмитрий --lastname Иванов
    
  • отключить учетную запись пользователя:
    # proxmox-backup-manager user update backup_u@pbs --enable 0
    
  • удалить учетную запись пользователя:
    # proxmox-backup-manager user remove backup_u@pbs
    

API-токены

Любой аутентифицированный пользователь может генерировать API-токены, которые, в свою очередь, можно использовать для настройки клиентов вместо прямого ввода имени пользователя и пароля.

API-токены служат двум целям:

  • простой отзыв в случае компрометации клиента;
  • возможность ограничить разрешения для каждого клиента/токена в рамках разрешений пользователей.

API-токен состоит из двух частей: идентификатора, состоящего из имени пользователя, области и имени токена (user@realm!имя токена), и секретного значения.

Генерация API-токена в веб-интерфейсе:

Proxmox Backup Server. Генерация API-токена

Proxmox Backup Server. Генерация API-токена

Генерация API-токена в консоли:

# proxmox-backup-manager user generate-token backup_u@pbs client1
Result: {
  "tokenid": "backup_u@pbs!client1",
  "value": "ff13e5e0-30df-4a70-99f1-c62b13803769"
}
Примечание: Отображаемое секретное значение необходимо сохранить, так как после создания токена его нельзя будет отобразить снова.


Контроль доступа

По умолчанию новые пользователи и API-токены не имеют никаких разрешений. Добавить разрешения можно, назначив роли пользователям/токенам на определенных объектах, таких как хранилища данных или удаленные устройства.

PBS использует систему управления разрешениями на основе ролей и путей. Запись в таблице разрешений позволяет пользователю играть определенную роль при доступе к объекту или пути. Это означает, что такое правило доступа может быть представлено как тройка (путь, пользователь, роль) или (путь, API-токен, роль), причем роль содержит набор разрешенных действий, а путь представляет цель этих действий.

Информация о правах доступа хранится в файле /etc/proxmox-backup/acl.cfg. Файл содержит 5 полей, разделенных двоеточием (':'):

acl:1:/datastore:backup_u@pbs!client1:DatastoreAdmin

В каждом поле представлены следующие данные:

  • идентификатор acl;
  • 1 или 0 – включено или отключено;
  • объект, на который установлено разрешение;
  • пользователи/токены, для которых установлено разрешение;
  • устанавливаемая роль.

Добавление разрешения в веб-интерфейсе («Конфигурация» → «Управление доступом» вкладка «Разрешения»):

Proxmox Backup Server. Добавление разрешений

Добавление разрешения в консоли (добавить пользователя backup_u@pbs в качестве администратора хранилища данных для хранилища данных store2, расположенного в /mnt/backup/disk1/store2):

# proxmox-backup-manager acl update /datastore/store2 DatastoreAdmin --auth-id backup_u@pbs

Вывести список разрешений:

# proxmox-backup-manager acl list

Отобразить действующий набор разрешений пользователя или API-токена:

# proxmox-backup-manager user permissions backup_u@pbs --path /datastore/store2
Privileges with (*) have the propagate flag set

Path: /datastore/store2
- Datastore.Audit (*)
- Datastore.Backup (*)
- Datastore.Modify (*)
- Datastore.Prune (*)
- Datastore.Read (*)
- Datastore.Verify (*)

Двухфакторная аутентификация

Двухфакторная аутентификация реализована только для веб-интерфейса.

Proxmox Backup Server. Двухфакторная аутентификация

Proxmox Backup Server поддерживает три метода двухфакторной аутентификации:

  • TOTP (одноразовый пароль на основе времени) — для создания этого кода используется алгоритм одноразового пароля с учетом времени входа в систему (код меняется каждые 30 секунд). Настройка аутентификации TOTP:
    Proxmox Backup Server. Настройка аутентификации TOTP
    Использование TOTP при аутентификации пользователя:
    Proxmox Backup Server. Запрос второго фактора (TOTP) при аутентификации пользователя в веб-интерфейсе
  • WebAuthn (веб-аутентификация) — реализуется с помощью различных устройств безопасности, таких как аппаратные ключи или доверенные платформенные модули (TPM). Для работы веб-аутентификации необходим сертификат HTTPS;
  • Ключи восстановления — список ключей, каждый из которых можно использовать только один раз. В каждый момент времени у пользователя может быть только один набор одноразовых ключей. Создание набора ключей:
    Proxmox Backup Server. Настройка аутентификации Recovery Keys
    Использование Recovery Key при аутентификации пользователя:
    Proxmox Backup Server. Запрос второго фактора (Recovery Key) при аутентификации пользователя в веб-интерфейсе

Управление удалёнными PBS

Хранилища данных с удалённого сервера можно синхронизировать с локальным хранилищем с помощью задачи синхронизации.

Информация о конфигурации удалённых PBS хранится в файле /etc/proxmox-backup/remote.cfg.

Для добавления удалённого PBS в веб-интерфейсе следует перейти в раздел «Конфигурация» → «Удалённые хранилища» и нажать кнопку «Добавить»:

Proxmox Backup Server. Добавление удалённого PBS

Примечание: Отпечаток TLS-сертификата можно получить на удалённом PBS в веб-интерфейсе:

Proxmox Backup Server. Отпечаток TLS-сертификата

Или в командной строке:

# proxmox-backup-manager cert info | grep Fingerprint


Управление удалёнными PBS в консоли:

  • добавить удалённый PBS:
    # proxmox-backup-manager remote create pbs2 --host pbs2.test.alt --userid root@pam --password 'SECRET' --fingerprint 42:5d:ff:3a:50:38:53:5a:9b:f7:50:...:ab:1b
    
  • список удалённых PBS:
    # proxmox-backup-manager remote list
    
  • удалить удалённый PBS:
    # proxmox-backup-manager remote remove pbs2
    

Для настройки задачи синхронизации необходимо в разделе «Хранилище данных» перейти на вкладку «Задания синхронизации» и нажать кнопку «Добавить»:

Proxmox Backup Server. Добавление задачи синхронизации

Управление задачами синхронизации в консоли:

  • добавить удалённый PBS:
    # proxmox-backup-manager sync-job create test_job --remote pbs2 --remote-store remotestore --store zfs_st --schedule 'Sat 18:15'
    
  • вывести список задач синхронизации:
    # proxmox-backup-manager sync-job list
    
  • изменить удалённый PBS:
    # proxmox-backup-manager sync-job  update test_job --comment 'offsite'
    
  • удалить удалённый PBS:
    # proxmox-backup-manager sync-job remove test_job
    

После создания задания синхронизации оно будет запускаться по заданному расписанию, также его можно запустить вручную из веб-интерфейса (кнопка «Запустить сейчас»).

Клиент резервного копирования

Клиент резервного копирования использует следующий формат для указания репозитория хранилища данных на сервере резервного копирования (где имя пользователя указывается в виде user@realm):

[[username@]server[:port]:]datastore

Значение по умолчанию для имени пользователя — root@pam. Если сервер не указан, используется локальный хост — localhost.

Указать репозиторий можно, передав его в параметре --repository, или установив переменную среды PBS_REPOSITORY, например:

# export PBS_REPOSITORY=pbs.test.alt:store1
Примеры репозиториев
Пример Пользователь Хост:Порт Хранилище
store1 root@pam localhost:8007 store1
pbs.test.alt:store1 root@pam pbs.test.alt:8007 store1
backup_u@pbs@pbs.test.alt:store1 backup_u@pbs pbs.test.alt:8007 store1
backup_u@pbs!client1@pbs.test.alt:store1 backup_u@pbs!client1 pbs.test.alt:8007 store1
192.168.0.123:1234:store1 root@pam 192.168.0.123:1234 store1

Создание резервной копии

В этом разделе рассмотрено, как создать резервную копию внутри машины (физического хоста, ВМ или контейнера). Такие резервные копии могут содержать архивы файлов и изображений. Предполагается что сервер резерного копирования уже настроен.

Создать резервную копию домашнего каталога пользователя user (будет создан архив user.pxar):

$ proxmox-backup-client backup user.pxar:/home/user/ --repository store1
Starting backup: host/host-197/2023-09-17T13:12:05Z
Client name: host-01
Starting backup protocol: Sun Sep 17 15:12:05 2023
No previous manifest available.
Upload directory '/home/user/' to 'pbs.test.alt:store1' as user.pxar.didx
user.pxar: had to backup 667.04 MiB of 667.04 MiB (compressed 190.182 MiB) in 26.22s
user.pxar: average backup speed: 25.436 MiB/s
Uploaded backup catalog (109.948 KiB)
Duration: 26.36s
End Time: Sun Sep 17 15:12:12 2023

Распространенными типами архивов являются .pxar для файловых архивов и .img для образов блочных устройств.

Команда создания резервной копии блочного устройства:

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

Шифрование

PBS поддерживает шифрование на стороне клиента с помощью AES-256 в режиме GCM.

Создать ключ шифрования:

$ proxmox-backup-client key create my-backup.key
Encryption Key Password: ******
Verify Password: ******

Создание зашифрованной резервной копии:

$ proxmox-backup-client backup user_s.pxar:/home/user/ --repository pbs.test.alt:store1 --keyfile ./my-backup.key
Password for "root@pam": ***
Starting backup: host/host-197/2023-09-17T12:17:16Z
Client name: host-01
Starting backup protocol: Sun Sep 17 14:17:19 2023
Using encryption key from './my-backup.key'..
Encryption Key Password: ******
Encryption key fingerprint: 0d:aa:4f:9b:ef:63:31:47
fingerprint: cf:24:11:66:bd:84:ca:7b:52:7c:5c:66:72:7b:c1:4e:4a:b7:ca:10:07:d5:c7:ca:fc:6b:f9:e8:49:89:43:e9
Are you sure you want to continue connecting? (y/n): y
Downloading previous manifest (Sun Sep 17 14:14:27 2023)
Upload directory '/home/user/' to '192.168.0.123:store1' as user_s.pxar.didx
user_s.pxar: had to backup 667.04 MiB of 667.04 MiB (compressed 190.028 MiB) in 21.16s
user_s.pxar: average backup speed: 31.518 MiB/s
Uploaded backup catalog (109.971 KiB)
Duration: 31.17s
End Time: Sun Sep 17 14:17:31 2023

Содержимое хранилища store1:

Proxmox Backup Server. Содержимое хранилища store1

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

Список всех снимков на сервере:

$ proxmox-backup-client snapshot list --repository pbs.test.alt:store1
Password for "root@pam": ***
┌───────────────────────────────────┬─────────────┬──────────────────────────────────────┐
│ snapshot                          │        size │ files                                │
╞═══════════════════════════════════╪═════════════╪══════════════════════════════════════╡
│ host/host-01/2023-09-17T14:17:16Z │ 667.147 MiB │ catalog.pcat1 index.json user.pxar   │
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/host-01/2023-09-17T14:14:27Z │ 667.148 MiB │ catalog.pcat1 index.json user_s.pxar │
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/pbs/2023-09-15T15:00:37Z     │  98.494 MiB │ catalog.pcat1 index.json user.pxar   │
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/pbs/2023-09-15T14:25:29Z     │  98.494 MiB │ catalog.pcat1 index.json user_s.pxar │
└───────────────────────────────────┴─────────────┴──────────────────────────────────────┘

Просмотреть содержимое снимка:

$ proxmox-backup-client catalog dump host/pbs/2023-09-15T15:00:37Z --repository pbs.test.alt:store1

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

$ proxmox-backup-client restore host/pbs/2023-09-15T15:00:37Z user.pxar /target/path/ --repository pbs.test.alt:store1

Получить содержимое любого архива можно, восстановив файл index.json в репозитории по целевому пути «-». Это выведет содержимое архива на стандартный вывод:

$ proxmox-backup-client restore host/pbs/2023-09-15T15:00:37Z index.json - --repository pbs.test.alt:store1

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

$ proxmox-backup-client catalog shell host/host-01/2023-09-17T14:17:16Z user.pxar --repository pbs.test.alt:store1
Starting interactive shell
pxar:/ > ls
…

Пример поиска в содержимом архива и восстановление данных:

pxar:/ > find  *.txt --select
/test/connection_trace.txt
/Рабочий стол/1.txt
pxar:/ > list-selected
/test/connection_trace.txt
/Рабочий стол/1.txt
pxar:/ > restore-selected /home/user/restore/
pxar:/ > restore /home/user/conf/ --pattern *.conf
pxar:/ > exit

где:

  • find *.txt --select — найти все файлы с расширением .txt и добавить соответствующие шаблоны в список для последующего восстановления;
  • list-selected — вывести шаблоны на экран;
  • restore-selected /home/user/restore/ — восстановить все файлы в архиве, соответствующие шаблонам в /home/user/restore/ на локальном хосте;
  • restore /home/user/conf/ --pattern *.conf — восстановить все файлы с расширением .conf в /home/user/conf/ на локальном хосте.

Вход и выход

При первой попытке получить доступ к серверу с использованием команды proxmox-backup-client, потребуется ввести пароль пользователя. Сервер проверяет учётные данные и отправляет билет, действительный в течение двух часов. Клиент использует этот билет для последующих запросов к этому серверу.

Можно вручную инициировать вход/выход. Команда входа:

$ proxmox-backup-client login --repository pbs.test.alt:store1
Password for "root@pam": ******

Удалить билет:

$ proxmox-backup-client logout --repository pbs.test.alt:store1

Интеграция с PVE

Proxmox Backup Server можно интегрировать в автономную или кластерную установку PVE, добавив его в качестве хранилища в PVE.

Для создания нового хранилища типа «Proxmox Backup Server» необходимо выбрать «Центр обработки данных» → «Хранилище», нажать кнопку «Добавить» и в выпадающем меню выбрать пункт «Proxmox Backup Server»:

PVE. Добавление хранилища Proxmox Backup Server

Диалог создания хранилища pbs_backup типа «Proxmox Backup Server» для хранения резервных копий:

PVE. Диалог создания хранилища Proxmox Backup Server

Примечание: Отпечаток TLS-сертификата можно получить в веб-интерфейсе сервера резервного копирования:

Proxmox Backup Server. Отпечаток TLS-сертификата

Или, выполнив следующую команду на сервере резервного копирования:

# proxmox-backup-manager cert info | grep Fingerprint
Fingerprint (sha256): c8:26:af:4a:c3:dc:60:72:4a:0b:4d:c1:e6:58:02:62:90:39:cb:fc:75:5d:00:9a:57:ca:3d:28:a0:2c:99:a5


Добавление хранилища в командной строке:

# pvesm add pbs pbs_backup --server pbs.test.alt --datastore store2 --fingerprint  c8:26:af:4a:c3:dc:60:72:...:99:a5 --username root@pam --password

Просмотреть состояние хранилища:

# pvesm status --storage pbs_backup
Name              Type     Status           Total            Used       Available        %
pbs_backup         pbs     active        30786448         3097752        26099504   10.06%

Добавив хранилище данных типа «Proxmox Backup Server» в PVE, можно создавать резервные копии ВМ и контейнеров в это хранилище, так же как и в любые другие хранилища (см. Резервное копирование и восстановление).

Резервная копия ВМ:

Proxmox Backup Server. Резервная копия ВМ

Ссылки: