Настройка
Новости
Оплата
Доставка
Информация
Контакты
Загрузки
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Каталог
    • 1U
      1U
    • 2U
      2U
    • 3U
      3U
    • 4U
      4U
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Каталог
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Backup Server
    [TUTORIAL] Редактирование резервных копий PBS с добавлением комментария/заметки

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    Ответить
    RSS
    [TUTORIAL] Редактирование резервных копий PBS с добавлением комментария/заметки, Proxmox Backup Server
     
    lazynooblet
    Guest
    #1
    0
    11.03.2021 15:20:00
    В текущей реализации Proxmox Backup Server имя самой виртуальной машины не включается в название бэкапа. Поэтому у меня появилась идея написать скрипт, который будет проверять новые бэкапы и добавлять имя ВМ в поле комментария. Ниже приведён bash-скрипт, который с помощью proxmox-backup-client проверяет и обновляет заметки на всех снимках репозитория. Алгоритм работы:

    - Получить список всех снимков  
    - Перебрать список, проверить, есть ли уже заметка  
    - Если заметки нет, загрузить qemu-server.conf или pct.conf (в зависимости от того, начинается ли имя с "ct/" или "vm/")  
    - Распарсить конфиг и получить hostname бэкапной машины  
    - Добавить комментарий к снимку  

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

    Заметка в PBS:  
     

    Чтобы использовать этот скрипт, нужны учётные данные PBS с правами на обновление заметок для снимков. Я использовал пользователя root@pam через API-токен.  

    Сам скрипт:  

    Bash:  
    #!/bin/bash  
    export PBS_REPOSITORY='root@pam!apitoken@localhost:local'  
    export PBS_PASSWORD='changeme'  

    export PROXMOX_OUTPUT_NO_BORDER='.'  
    export PROXMOX_OUTPUT_NO_HEADER='.'  

    DEBUG=1  

    function _debug {  
       [ $DEBUG == "1" ] || return
       echo "[$(date +%Y%m%d-%H%M%S)] ($0): $*"
    }  

    function _error {  
       echo "[$(date +%Y%m%d-%H%M%S)] ($0) ERROR: $*" 1>&2
    }  

    function _exit {  
       ec=0  
       if [ "z$1" != "z" ]; then
           ec=$1  
           shift  
       fi  
       if [ "z$1" != "z" ]; then
           _error $*  
       fi  
       exit ${ec}  
    }  

    while read snapshot; do  
       if [ "z${snapshot}" == "z" ]; then continue; fi
       note=$(proxmox-backup-client snapshot notes show ${snapshot})  
       if [ "z${note}" == "z" ]; then
           name=""  
           if [[ $snapshot == "vm/"* ]]; then
               name=$(proxmox-backup-client restore ${snapshot} qemu-server.conf - | awk '/^name: / {print $2}')  
           elif [[ $snapshot == "ct/"* ]]; then
               name=$(proxmox-backup-client restore ${snapshot} pct.conf - | awk '/^hostname: / {print $2}')  
           fi  

           if [ "z${name}" == "z" ]; then
               _exit 1 "Не удалось получить имя для снимка ${snapshot}"  
           fi  

           _debug "Обновляю заметку для снимка '${snapshot}': ${name}"  
           proxmox-backup-client snapshot notes update ${snapshot} ${name}  
       else  
           _debug "Заметка уже есть для снимка '${snapshot}'"  
       fi  
    done < <(proxmox-backup-client snapshot list | awk '{print $1}')
     
       Цитировать   Имя
     
    Cookiefamily
    Guest
    #2
    0
    03.08.2021 15:04:00
    Привет! Спасибо за твою работу! Я делаю резервные копии PVE-хостов на тот же датастор, поэтому пришлось добавить обработку бэкапов типа "host". Может, ты тоже добавишь это в свой скрипт? Я просто пропускал их, так как имя снапшота всё равно можно настроить при создании резервной копии.
     
    Цитировать   Имя
     
    ProUser
    Guest
    #3
    0
    01.09.2021 16:24:00
    @Cookiefamily, не могли бы вы прислать свои правки к сценарию? Мне бы хотелось его использовать, у меня похожая конфигурация. Спасибо.
     
    Цитировать   Имя
     
    hwinther
    Guest
    #4
    0
    05.02.2022 23:51:00
    Спасибо @lazynooblet @ProUser — я не тот, к кому вы обращались, и я опоздал к обсуждению, но сегодня мне тоже понадобилась поддержка для резервного копирования хоста, и я добавил это в скрипт. Надеюсь, в будущих версиях proxmox-backup-client появится поддержка CLI для обновления значения заметок группы резервного копирования. Оставлю здесь свои изменения, чтобы следующий человек мог их найти. Я просто добавил следующие две строки:  
    Bash:  
    elif [[ $snapshot == "host/"* ]]; then
        name=$(echo ${snapshot} | awk '{split($0,a,"/")}; {print a[2]}')

    Полный скрипт с моими изменениями:  
    Bash:  
    #!/bin/bash  
    export PBS_REPOSITORY='root@pam!apitoken@localhost:local'  
    export PBS_PASSWORD='changeme'  

    export PROXMOX_OUTPUT_NO_BORDER='.'  
    export PROXMOX_OUTPUT_NO_HEADER='.'  

    DEBUG=1  

    function _debug {  
      [ $DEBUG == "1" ] || return
      echo "[$(date +%Y%m%d-%H%M%S)] ($0): $*"
    }  

    function _error {  
      echo "[$(date +%Y%m%d-%H%M%S)] ($0) ERROR: $*" 1>&2
    }  

    function _exit {  
      ec=0  
      if [ "z$1" != "z" ]; then
        ec=$1  
        shift  
      fi  
      if [ "z$1" != "z" ]; then
        _error $*  
      fi  
      exit ${ec}  
    }  

    while read snapshot; do  
      if [ "z${snapshot}" == "z" ]; then continue; fi
      note=$(proxmox-backup-client snapshot notes show ${snapshot})  
      if [ "z${note}" == "z" ]; then
        name=""  
        if [[ $snapshot == "vm/"* ]]; then
          name=$(proxmox-backup-client restore ${snapshot} qemu-server.conf - | awk '/^name: / {print $2}')  
        elif [[ $snapshot == "ct/"* ]]; then
          name=$(proxmox-backup-client restore ${snapshot} pct.conf - | awk '/^hostname: / {print $2}')  
        elif [[ $snapshot == "host/"* ]]; then
          name=$(echo ${snapshot} | awk '{split($0,a,"/")}; {print a[2]}')
        fi  

        if [ "z${name}" == "z" ]; then
          _exit 1 "Не удалось получить имя для снимка ${snapshot}"  
        fi  

        _debug "Обновляю заметку у снимка '${snapshot}': ${name}"  
        proxmox-backup-client snapshot notes update ${snapshot} ${name}  
      else  
        _debug "Заметка уже существует для снимка '${snapshot}'"  
      fi  
    done < <(proxmox-backup-client snapshot list | awk '{print $1}')
     
    Цитировать   Имя
     
    sub2o5
    Guest
    #5
    0
    11.03.2022 13:08:00
    Внутри PBS-gui я могу менять заметку у всей ноды целиком, а не только у её элементов. Так что, даже если папка закрыта, я могу увидеть, какая виртуальная машина в ней содержится. Не смог найти команду для этого через shell, поэтому не могу расширить скрипт, чтобы сделать это. Кто-нибудь знает, как это сделать?
     
    Цитировать   Имя
     
    fabian
    Guest
    #6
    0
    11.03.2022 13:24:00
    Насколько я знаю, это доступно только через API и пока что не интегрировано в клиентскую программу.
     
    Цитировать   Имя
     
    fabian
    Guest
    #7
    0
    11.03.2022 13:24:00
    https://pbs.proxmox.com/docs/api-viewer/index.html#/admin/datastore/{store}/group-notes
     
    Цитировать   Имя
     
    sub2o5
    Guest
    #8
    0
    11.03.2022 13:47:00
    Спасибо, не должно быть слишком сложно написать скрипт на Python или PHP... Если у меня получится, выложу здесь результат.
     
    Цитировать   Имя
     
    amaida
    Guest
    #9
    0
    20.03.2022 16:50:00
    Привет! Мои скрипты по IP-адресу: https://drive.google.com/drive/folders/1qBfQGWPk-qJjYLWA5jN56TckJ9jyYlzk
     
    Цитировать   Имя
     
    razametal
    Guest
    #10
    0
    04.12.2022 16:22:00
    Привет, после запуска скрипта появляется следующая ошибка: Error: authentication failed - invalid credentials. Я создал API-ключ через GUI на pBX и назначил ему права администратора.
     
    Цитировать   Имя
     
    fabian
    Guest
    #11
    0
    05.12.2022 09:00:00
    А как вы использовали API-токен? Смотрите https://pbs.proxmox.com/docs/user-management.html#api-tokens
     
    Цитировать   Имя
     
    razametal
    Guest
    #12
    0
    07.12.2022 06:43:00
    proxmox-backup-manager user list-tokens root@pam  
    ┌───────────────────────────────┬────────┬────────┬─────────­┐  
    │ tokenid                       │ enable │ expire │ comment │  
    ╞═══════════════════════════════╪════════╪════════╪═════════­╡  
    │ root@pam!backup-identificator │      1 │  never │         │  
    └───────────────────────────────┴────────┴────────┴─────────­┘  

    proxmox-backup-manager acl list  
    ┌───────────────────────────────┬──────┬───────────┬────────­┐  
    │ ugid                          │ path │ propagate │ roleid │  
    ╞═══════════════════════════════╪══════╪═══════════╪════════­╡  
    │ root@pam!backup-identificator │ /    │         1 │ Admin  │  
    └───────────────────────────────┴──────┴───────────┴────────­┘  

    Строка, используемая в скрипте: export PBS_REPOSITORY='root@pam!backup-identificator@localhost:local'
     
    Цитировать   Имя
     
    fabian
    Guest
    #13
    0
    07.12.2022 08:14:00
    вам также нужно предоставить секретный токен API как «password»..
     
    Цитировать   Имя
     
    razametal
    Guest
    #14
    0
    07.12.2022 16:10:00
    Спасибо, я использовал root-пароль от pbs в переменной PBS_PASSWORD. Спасибо.
     
    Цитировать   Имя
     
    Kennethanork
    Guest
    #15
    0
    01.09.2025 06:56:04
    darknet markets onion address  nexus shop url nexus darknet access  dark market list
     
    Цитировать   Имя
     
    Страницы: 1
    Ответить
    Читают тему
    BBCode   Правила
    Форма ответов
    Текст сообщения*
    Перетащите файлы
    Ничего не найдено
    Файл
    Загрузить картинки
    #name# #size#
     
    #name#
    Файлы:
    Перетащите один или несколько файлов в эту область
    или выберите файл на компьютере
    Файлы:
    Загрузить файлы
     
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2025 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры