Как использовать Proxmox Backup Client для резервного копирования файлов в Linux

Сегодня мы научимся создавать резервные копии на уровне файлов с помощью приложения Proxmox Backup Client. Proxmox Backup Client может пригодиться, когда вы хотите создать резервную копию определенных файлов вместо резервного копирования всей ВМ или контейнера. Он также может быть полезен, когда вы хотите создать резервную копию файлов не с виртуальной машины или не с контейнера (т.е. с физической машины).

Что такое Proxmox Backup Client?

Proxmox Backup Client – это клиент командной строки для Proxmox Backup Server. Используя Proxmox Backup Client, мы можем создать резервную копию изнутри машины. Это может быть физический хост, виртуальная машина или контейнер.

Установите Proxmox Backup Client

Перейдите на клиентскую машину, где вы хотите установить приложение Proxmox Backup Client. Для целей данного руководства я буду использовать систему Debian 11 bullseye.

Добавьте официальный репозиторий Proxmox Client. Официальный репозиторий доступен для Debian, Ubuntu и их производных.

Сначала добавьте ключ Proxmox GPG с помощью команды:

sudo wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg

Теперь давайте добавим репозиторий Proxmox Backup Client в клиентскую систему Debian.

Создайте файл /etc/apt/sources.list.d/pbs-client.list:

sudo nano /etc/apt/sources.list.d/pbs-client.list

Добавьте следующий фрагмент:

deb http://download.proxmox.com/debian/pbs-client bullseye main

В системах Debian buster и Ubuntu 20.04 добавьте следующую строку в файл /etc/apt/sources.list.d/pbs-client.list.

deb http://download.proxmox.com/debian/pbs-client buster main

Сохраните файл и закройте его, нажав CTRL + O, а затем CTRL + X.

Обновите список репозиториев с помощью команды:

sudo apt update

Наконец, установите Proxmox Backup Client с помощью команды:

sudo apt install proxmox-backup-client

Для систем на базе Fedora, RHEL доступен сторонний репозиторий Proxmox Backup Client.

Чтобы включить этот copr-репозиторий, выполните следующую команду от имени пользователя root или sudo:

sudo dnf copr enable derenderkeks/proxmox-backup-client

Теперь вы можете установить пакет proxmox-backup-client:

sudo dnf install proxmox-backup-client

Для систем EL8 и EL9 скачайте соответствующий репозиторий с этой страницы* и установите Proxmox Backup Client.

Резервное копирование файлов с помощью Proxmox Backup Client

Убедитесь, что вы знаете правильные учетные данные и имя репозитория Proxmox Backup Server. В данном руководстве я буду делать резервное копирование файлов с клиента Debian 11 на мой Proxmox Backup Server.

Как уже было сказано, машина не обязательно должна быть виртуальной машиной или контейнером. Мы можем создавать резервные копии файлов как с физической, так и с виртуальной машины или контейнера с помощью Proxmox Backup Client.

Для тестирования я собираюсь создать простой текстовый файл на моей клиентской машине Debian 11.

echo "Backup my files to PBS" > ostechnix_backup.txt

Сейчас давайте создадим резервную копию всей корневой файловой системы клиента Debian 11 в хранилище данных «backups» PBS.

Для этого переключитесь на пользователя root:

sudo su -

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

proxmox-backup-client backup root.pxar:/ --repository 192.168.1.200:backups

Приведенная выше команда создаст файловый архив с именем root.pxar, содержащий все файлы в каталоге /, а затем загрузит файл root.pxar в хранилище данных backups в PBS.

Введите пароль root вашего сервера резервного копирования Proxmox и дважды нажмите y для продолжения. После успешного завершения резервного копирования вы увидите сводку резервного копирования, например, размер резервной копии, время, затраченное на резервное копирование и т.д.

Password for "root@pam": *******
Starting backup: host/Debian11CT/2023-02-21T10:10:07Z
Client name: Debian11CT
Starting backup protocol: Tue Feb 21 10:10:12 2023
fingerprint: 88:35:ef:e4:82:c8:97:99:77:2b:10:64:83:3c:5a:76:81:de:11:db:57:46:3a:38:f7:43:b0:a1:d8:c0:c2:2b
Are you sure you want to continue connecting? (y/n): y
fingerprint: 88:35:ef:e4:82:c8:97:99:77:2b:10:64:83:3c:5a:76:81:de:11:db:57:46:3a:38:f7:43:b0:a1:d8:c0:c2:2b
Are you sure you want to continue connecting? (y/n): y
No previous manifest available.
Upload directory '/' to '192.168.1.200:backups' as root.pxar.didx
skipping mount point: "dev"
failed to open file: "lost+found": access denied
skipping mount point: "proc"
skipping mount point: "run"
skipping mount point: "sys"
root.pxar: had to backup 2.535 GiB of 2.541 GiB (compressed 1.053 GiB) in 18.86s
root.pxar: average backup speed: 137.631 MiB/s
root.pxar: backup was done incrementally, reused 6.004 MiB (0.2%)
Uploaded backup catalog (1.062 MiB)
Duration: 19.52s
End Time: Tue Feb 21 10:10:32 2023

Давайте проверим, действительно ли резервное копирование выполнено.

Проверка резервных копий

Зайдите в PBS Dashboard и щелкните на датасторе (например, резервные копии), куда вы ранее отправили резервную копию, а затем щелкните на вкладке Content. В моем случае я отправил резервную копию в хранилище данных backups.

Помните ли вы стратегию именования резервных копий Proxmox Backup Server? Он обычно сохраняет виртуальную машину как «vm/vm-id «. Например, я создал резервную копию виртуальной машины с ID 106, поэтому он сохраняет ее как vm/106. Как вы уже знаете, vm означает виртуальную машину. Аналогично, PBS сохраняет контейнеры как ct/container-id, например, ct/100. Здесь ct означает контейнер.

Аналогично, PBS сохранит резервную копию отдельного хоста с именем host/hostname. Как вы видите на скриншоте ниже, PBS сохранил резервную копию моей контейнерной системы Debian 11 с именем host/Debian11CT.

Проверить резервные копии в PBS Dashboard

Просмотр содержимого резервных копий

Чтобы просмотреть и проверить содержимое резервной копии, просто нажмите на имя резервной копии и разверните ее. Вы увидите отдельные компоненты резервной копии. Выберите файл root.pxar.didx и нажмите значок Browse.

Сейчас вы увидите реальное содержимое корневой файловой системы клиентской системы. Перейдите в каталог home и проверьте, доступно ли там все содержимое.

Вы помните, что ранее я создал текстовый файл под названием ostechnix_backup.txt? Это тот файл, который вы видите на скриншоте выше. Вы можете просто выбрать этот файл и нажать кнопку Download, чтобы загрузить его.

Создание переменной окружения

Как вы могли заметить, для резервного копирования файлов нам приходилось каждый раз вводить строку —repository PBS_Server_IP:datastore (например, --repository 192.168.1.200:backups). Это делает команду немного длиннее. Если вы хотите избежать этого, вы можете установить переменную окружения для вышеуказанной строки, как показано ниже.

export PBS_REPOSITORY=192.168.1.200:backups

Редактируйте ваш .bashrc или любой другой файл профиля с помощью текстового редактора:

nano .bashrc

Добавьте переменную окружения:

export PBS_REPOSITORY=192.168.1.200:backups

Замените IP-адрес и значения datastore на свои собственные.

Нажмите CTRL+ O, а затем CTRL+ X, чтобы сохранить файл и выйти. Выйдите из системы и снова войдите в нее, чтобы обновить изменения. В качестве альтернативы вы можете использовать файл .bashrc, чтобы изменения вступили в силу немедленно:

source .bashrc

С этого момента вам не нужно набирать всю строку --repository... Вы можете выполнять все команды без указания опции --repository, как показано ниже.

proxmox-backup-client backup root.pxar:/

Вы заметили? Я не указал параметр --repository в приведенной выше команде. Потому что значение --repository будет получено из переменной окружения.

Теперь вернитесь в панель PBS и проверьте, создана ли новая резервная копия.

Как вы видите, создана новая резервная копия с новой меткой времени в имени (т.е. host/Debian11CT/2023-02-21T12:15:33Z). При выполнении команды proxmox-backup-client backup будет создана новая резервная копия с текущей временной меткой. Посмотрев на временные метки, вы сможете легко определить, какая из них является новой резервной копией.

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

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

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

proxmox-backup-client key create my-backup.key

Введите дважды пароль для ключа шифрования:

Encryption Key Password: ******
Verify Password: ******

Ключ будет сохранен в текущем рабочем каталоге. В нашем случае это /root/my-backup.key.

Сейчас создайте зашифрованную резервную копию каталога /etc, передав параметр --keyfile с путем к файлу ключа, как показано ниже.

proxmox-backup-client backup etc.pxar:/etc --keyfile /root/my-backup.key

Введите пароль пользователя root сервера резервного копирования Proxmox, а затем введите пароль для ключа шифрования.

Password for "root@pam": *******
Starting backup: host/Debian11CT/2023-02-22T10:47:12Z
Client name: Debian11CT
Starting backup protocol: Wed Feb 22 10:47:18 2023
Using encryption key from '/root/my-backup.key'..
Encryption Key Password: ******
Encryption key fingerprint: 00:f2:7d:a5:d4:df:66:67
Downloading previous manifest (Tue Feb 21 12:15:33 2023)
Upload directory '/etc' to '192.168.1.200:backups' as etc.pxar.didx
Error downloading .didx from previous manifest: Unable to open dynamic index "/mnt/datastore/backups/host/Debian11CT/2023-02-21T12:15:33Z/etc.pxar.didx" - No such file or directory (os error 2)
etc.pxar: had to backup 1.616 MiB of 1.616 MiB (compressed 402.398 KiB) in 0.05s
etc.pxar: average backup speed: 34.494 MiB/s
Uploaded backup catalog (17.71 KiB)
Duration: 5.83s
End Time: Wed Feb 22 10:47:24 2023

Обратите внимание, что если вы не укажете имя ключа резервного копирования, ключ будет создан в месте по умолчанию ~/.config/proxmox-backup/encryption-key.json. По умолчанию proxmox-backup-client также будет искать это место для получения ключа, если параметр --keyfile не указан.

Вы также можете избежать ввода паролей, установив переменные окружения PBS_PASSWORD и PBS_ENCRYPTION_PASSWORD.

В приведенной выше команде я не упомянул параметр —repository, поскольку уже добавил переменную окружения. Если вы не добавили переменную окружения, вы должны указать параметр —repository вместе с хранилищем данных, как показано ниже.

proxmox-backup-client backup root.pxar:/etc --repository 192.168.1.200:backups --keyfile /root/my-backup.key

Список бэкапов

Сначала давайте перечислим все доступные снимки в PBS с помощью команды:

proxmox-backup-client snapshot list

Вы увидите все доступные снимки в Proxmox Backup Server.

+======================================+===========+========================================================+
snapshot                             |      size | files                                                  |
+======================================+===========+========================================================+
ct/102/2023-02-14T12:37:39Z          | 2.462 GiB | catalog.pcat1 client.log index.json pct.conf root.pxar |
+--------------------------------------+-----------+--------------------------------------------------------+
host/Debian11CT/2023-02-21T10:10:07Z | 2.542 GiB | catalog.pcat1 index.json root.pxar                     |
+--------------------------------------+-----------+--------------------------------------------------------+
host/Debian11CT/2023-02-21T12:15:33Z | 2.552 GiB | catalog.pcat1 index.json root.pxar                     |
+--------------------------------------+-----------+--------------------------------------------------------+
host/Debian11CT/2023-02-22T10:47:12Z | 1.634 MiB | catalog.pcat1 etc.pxar index.json                      |
+--------------------------------------+-----------+--------------------------------------------------------+
vm/106/2023-02-13T11:04:28Z          |    50 GiB | client.log drive-scsi0.img index.json qemu-server.conf |
+======================================+===========+========================================================+

Как видно из приведенного выше результата, у меня есть один резервный снимок контейнера, один резервный снимок ВМ и 3 снимка хост-системы.

Если вы хотите перечислить только группы резервного копирования (не снимки), просто выполните:

proxmox-backup-client list          
+=================+======================================+==============+========================================================+
group           | last snapshot                        | backup-count | files                                                  |
+=================+======================================+==============+========================================================+
ct/102          | ct/102/2023-02-14T12:37:39Z          |            1 | catalog.pcat1 client.log index.json pct.conf root.pxar |
+-----------------+--------------------------------------+--------------+--------------------------------------------------------+
host/Debian11CT | host/Debian11CT/2023-02-22T10:47:12Z |            3 | catalog.pcat1 etc.pxar index.json                      |
+-----------------+--------------------------------------+--------------+--------------------------------------------------------+
vm/106          | vm/106/2023-02-13T11:04:28Z          |            1 | client.log drive-scsi0.img index.json qemu-server.conf |
+=================+======================================+==============+========================================================+

Как видно из приведенного выше результата, отображаются все группы резервного копирования и самый последний (т.е. последний) снимок в каждой группе резервного копирования.

Чтобы перечислить отдельные снимки в группе резервного копирования, например host/Debian11CT, выполните:

# proxmox-backup-client snapshot list host/Debian11CT
+======================================+===========+====================================+
snapshot                             |      size | files                              |
+======================================+===========+====================================+
host/Debian11CT/2023-02-21T10:10:07Z | 2.542 GiB | catalog.pcat1 index.json root.pxar |
+--------------------------------------+-----------+------------------------------------+
host/Debian11CT/2023-02-21T12:15:33Z | 2.552 GiB | catalog.pcat1 index.json root.pxar |
+--------------------------------------+-----------+------------------------------------+
host/Debian11CT/2023-02-22T10:47:12Z | 1.634 MiB | catalog.pcat1 etc.pxar index.json  |
+======================================+===========+====================================+

Этот способ позволяет вывести список групп резервного копирования, отдельных снимков в группе резервного копирования и всех снимков из всех групп резервного копирования.

Восстановление данных с помощью Proxmox Backup Client

Какой смысл в резервном копировании, если мы не можем их восстановить? К счастью, Proxmox Backup Client облегчает задачу восстановления.

Сначала найдите снимок, который вы хотите восстановить. Для этого перечислите все снимки в группе резервного копирования с помощью команды:

proxmox-backup-client snapshot list
Password for "root@pam": *******
+======================================+===========+========================================================+
snapshot                             |      size | files                                                  |
+======================================+===========+========================================================+
ct/102/2023-02-14T12:37:39Z          | 2.462 GiB | catalog.pcat1 client.log index.json pct.conf root.pxar |
+--------------------------------------+-----------+--------------------------------------------------------+
host/Debian11CT/2023-02-21T10:10:07Z | 2.542 GiB | catalog.pcat1 index.json root.pxar                     |
+--------------------------------------+-----------+--------------------------------------------------------+
host/Debian11CT/2023-02-21T12:15:33Z | 2.552 GiB | catalog.pcat1 index.json root.pxar                     |
+--------------------------------------+-----------+--------------------------------------------------------+
host/Debian11CT/2023-02-22T10:47:12Z | 1.634 MiB | catalog.pcat1 etc.pxar index.json                      |
+--------------------------------------+-----------+--------------------------------------------------------+
vm/106/2023-02-13T11:04:28Z          |    50 GiB | client.log drive-scsi0.img index.json qemu-server.conf |
+======================================+===========+========================================================+

Я собираюсь восстановить снимок с именем ct/102/2023-02-14T12:37:39Z, поэтому я выполняю следующую команду для восстановления резервной копии снимка:

proxmox-backup-client restore ct/102/2023-02-14T12:37:39Z root.pxar /target/path/

Замените /target/path на место, где вы хотите восстановить резервную копию.

Чтобы получить содержимое любого архива, вы можете восстановить index.json файл в хранилище по целевому пути . В результате содержимое будет выведено на стандартный вывод.

proxmox-backup-client restore ct/102/2023-02-14T12:37:39Z index.json -

Пример вывода:

{
  "backup-id": "102",
  "backup-time": 1676378259,
  "backup-type": "ct",
  "files": [
  {
    "crypt-mode": "none",
    "csum": "99ef8ed6064c9464061f50798fef97096931f29edb9eef99b7bc939c796503a9",
    "filename": "pct.conf.blob",
    "size": 252
  },
  {
    "crypt-mode": "none",
    "csum": "388829b6b9b7264afca7b86dfd33535dda88d9eed739f4ff9f3646ffed15d858",
    "filename": "root.pxar.didx",
    "size": 2642140467
  },
  {
    "crypt-mode": "none",
    "csum": "caf1bae0f25c449b4883375da96484fc3acb59fc7cfc34f083f1407b042aa204",
    "filename": "catalog.pcat1.didx",
    "size": 1109866
  }
  ],
    "signature": null,
    "unprotected": {
      "chunk_upload_stats": {
      "compressed_size": 1076670895,
      "count": 724,
      "duplicates": 0,
      "size": 2636955824
    },
    "notes": "Debian11CT"
  }
}

Восстановление отдельных файлов из моментального снимка

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

proxmox-backup-client catalog shell ct/102/2023-02-14T12:37:39Z root.pxar

Приведенная выше команда переведет вас в интерактивную оболочку.

Starting interactive shell
pxar:/ > 

Вы можете использовать команду ls для просмотра содержимого моментального снимка. Я собираюсь перечислить содержимое каталога home:

pxar:/ > ls home/ostechnix/
.bash_history
.bash_logout
.bashrc
.cache
.dotnet
.gnupg
.local
.profile
.ssh
.wget-hsts
File1.txt
File2.txt
dotnet-install.sh
go1.19.5.linux-amd64.tar.gz
go_projects
myfile.txt
ramfetch
test
pxar:/ > 

Вы можете использовать команду restore для восстановления всех файлов в снимке. Однако для восстановления файлов определенного типа рекомендуется использовать команду restore с опцией --pattern <glob>. Например, следующая команда просканирует все каталоги ниже /home и восстановит все файлы, заканчивающиеся на .txt.

pxar:/ > restore target/ --pattern home/ostechnix/**/*.txt

Не забудьте заменить путь target на свой собственный.

Введите exit и нажмите ENTER для выхода из интерактивной оболочки.

Монтирование резервных архивов через FUSE

Используя Proxmox backup Client, мы можем смонтировать снимок как файловую систему только для чтения в вашей клиентской системе и просмотреть содержимое конкретного снимка с самой клиентской системы.

Сначала создадим точку монтирования для снимка:

mkdir /mnt/mybackup

Затем перечислим доступные снимки в группе резервного копирования с помощью команды:

proxmox-backup-client snapshot list

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

proxmox-backup-client mount host/Debian11CT/2023-02-21T10:10:07Z root.pxar /mnt/mybackup/

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

proxmox-backup-client mount host/Debian11CT/2023-02-21T10:10:07Z root.pxar /mnt/mybackup/ --keyfile /root/my-backup.key

Теперь вы можете просмотреть содержимое снимка с помощью команды ls:

# ls /mnt/mybackup
bin   dev  home  lib32  libx32      media  opt   root  sbin  sys  usr
boot  etc  lib   lib64  lost+found  mnt    proc  run   srv   tmp  var

Обрезка и удаление резервных копий

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

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

proxmox-backup-client snapshot forget host/Debian11CT/2023-02-21T10:10:07Z

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

proxmox-backup-client snapshot forget host/Debian11CT/2023-02-21T10:10:07Z --ns <ns>

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

proxmox-backup-client prune host/Debian11CT --keep-daily 1 --keep-weekly 3

Это просто запустит симуляцию, но ничего не удалит.

proxmox-backup-client prune host/Debian11CT --dry-run --keep-daily 1 --keep-weekly 3

Пример вывода:

+======================================+==========================+========+
snapshot                             |                     date | action |
+======================================+==========================+========+
host/Debian11CT/2023-02-21T10:10:07Z | Tue Feb 21 10:10:07 2023 | remove |
+--------------------------------------+--------------------------+--------+
host/Debian11CT/2023-02-21T12:15:33Z | Tue Feb 21 12:15:33 2023 | remove |
+--------------------------------------+--------------------------+--------+
host/Debian11CT/2023-02-22T10:47:12Z | Wed Feb 22 10:47:12 2023 |   keep |
+======================================+==========================+========+

Включив параметр --dry-run, вы можете увидеть, что произойдет, если мы выполним команду prune.

Убедившись, какие резервные копии будут удалены, можно выполнить команду prune без опции --dry-run.

Сборка мусора

Обратите внимание, что команда prune удалит только индексные файлы резервных копий. Она не затронет данные из хранилища данных.

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

proxmox-backup-client garbage-collect 

Пример вывода:

starting garbage collection on store backups
Start GC phase1 (mark used chunks)
marked 20% (1 of 5 index files)
marked 40% (2 of 5 index files)
marked 60% (3 of 5 index files)
marked 80% (4 of 5 index files)
marked 100% (5 of 5 index files)
Start GC phase2 (sweep unused chunks)
processed 1% (35 chunks)
processed 2% (62 chunks)
processed 3% (88 chunks)
processed 4% (121 chunks)
processed 5% (154 chunks)
[...]
processed 95% (2496 chunks)
processed 96% (2527 chunks)
processed 97% (2554 chunks)
processed 98% (2581 chunks)
processed 99% (2606 chunks)
Removed garbage: 181.901 MiB
Removed chunks: 107
Original data usage: 52.463 GiB
On-Disk usage: 6.558 GiB (12.50%)
On-Disk chunks: 2531
Deduplication factor: 8.00
Average chunk size: 2.653 MiB
TASK OK

Рекомендуется регулярно выполнять команду garbage-collect для удаления ненужных файлов и освобождения дискового пространства.

Заключение

Proxmox Backup Client полезен, когда вы хотите создать резервное копирование и восстановление на уровне файлов. По некоторым причинам вы можете захотеть исключить некоторые файлы/папки из резервного копирования при резервном копировании Proxmox VM или контейнера. В этом случае вы можете использовать Proxmox Backup Client.

Не только Proxmox VMs или Containers, программа Proxmox Backup Client может пригодиться, когда вы хотите создать резервную копию файлов с физических машин.

Как видите, работать с Proxmox backup Client для резервного копирования и восстановления файлов довольно просто! Кроме того, он совершенно бесплатен в использовании! Так что если вы ищете приложение для резервного копирования корпоративного уровня для своей домашней лаборатории, Proxmox Backup Client настоятельно рекомендуется!

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Похожие статьи

Комментарии (0)