Сегодня мы научимся создавать резервные копии на уровне файлов с помощью приложения 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 настоятельно рекомендуется!
Комментарии (0)