Product SiteDocumentation Site

57.7.2. Задания синхронизации

Хранилища данных с удалённого сервера можно синхронизировать с локальным хранилищем с помощью задачи синхронизации.
Задания синхронизации — это автоматизированные задачи, которые копируют данные из одного хранилища в другое, обеспечивая резервирование и географическое распределение резервных копий. Они работают по принципу инкрементного копирования, передавая только изменения, что экономит время и bandwidth.
Задания синхронизации работают в двух направлениях:
  • pull — копирует содержимое хранилища данных на удаленном сервере в локальное хранилище данных;
  • push — копирует резервные снимки с локального хранилища в хранилище на удаленном сервере (это может быть полезно в случае, кода удаленный сервер не может инициировать подключения к локальному).
Задания синхронизации в направлении push не идентичны по поведению заданиям синхронизации в направлении pull из-за ограниченного доступа к целевому хранилищу данных через API удаленных серверов. В частности, отправленный контент всегда будет принадлежать пользователю, настроенному в удаленной конфигурации, независимо от локального пользователя, указанного в задании синхронизации. Последнее используется исключительно для проверки разрешений и проверки области действия на стороне push.

Примечание

Настоятельно рекомендуется создать выделенную удаленную конфигурацию для каждого отдельного задания синхронизации в направлении push, используя выделенного пользователя на удаленном устройстве. В противном случае задания синхронизации, отправляемые на одну и ту же цель, могут удалить снимки и/или группы друг друга, если установлен флаг remove vanished, или пропустить снимки, если время резервного копирования не является инкрементным.
Для заданий синхронизации направления pull требуются следующие разрешения:
  • Remote.Read на пути /remote/{remote}/{remote-store};
  • Datastore.Backup на локальном хранилище данных (/datastore/{store}).
Для заданий синхронизации направления push требуются следующие разрешения:
  • Remote.Audit для /remote/{remote} и Remote.DatastoreBackup для пути или подпространства имен /remote/{remote}/{remote-store}/{remote-ns};
  • Datastore.Read и Datastore.Audit для пространства имен локального хранилища данных (/datastore/{store}/{ns}) или Datastore.Backup, если это владелец задания синхронизации;
  • Remote.DatastorePrune для пути /remote/{remote}/{remote-store}/{remote-ns} для возможности удаления исчезнувших снимков и групп;
  • Remote.DatastoreModify для пути /remote/{remote}/{remote-store}/{remote-ns} для возможности удаления исчезнувших пространств имен. На экземпляре удаленного сервера резервного копирования следует использовать удаленного пользователя с ограниченным доступом.
Управлять заданиями синхронизации можно в веб-интерфейсе, на вкладке Задания синхронизации панели хранилища данных или самого хранилища данных. Кроме того, ими можно управлять с помощью команды proxmox-backup-manager sync-job. Информация о конфигурации заданий синхронизации хранится в /etc/proxmox-backup/sync.cfg.
Для настройки задачи синхронизации, необходимо в разделе Хранилище данных перейти на вкладку Задания синхронизации, нажать кнопку Добавить и выбрать направление синхронизации:
PBS. Выбор направления синхронизации
В открывшемся окне на вкладке Options необходимо указать синхронизируемые хранилища, владельца и расписание синхронизации:
PBS. Настройки задания синхронизации (pull-направление)
На вкладке Фильтр групп можно настроить фильтры. В этом случае будут синхронизироваться только резервные копии, соответствующие хотя бы одному из указанных критериев. Доступны следующие критерии:
  • Тип (type) — виртуальная машина (vm), контейнер (ct), хост (host);
  • Группа (group) — полный идентификатор группы (например, group:vm/100);
  • Регулярное выражение (regex) — регулярное выражение, сопоставленное с полным идентификатором группы (например, regex:'^vm/1\d{2,3}$').
PBS. Настройки задания синхронизации (фильтр групп)
Фильтр можно инвертировать, указав его в разделе Exclude filters.
Фильтры применяются по следующим правилам:
  • фильтры не заданы — синхронизируются все резервные копии;
  • заданы фильтры включения (includes) — синхронизируются только те резервные копии, которые соответствуют фильтрам включения;
  • заданы фильтры исключения (exclude) — синхронизируются все резервные копии, кроме тех, которые соответствуют фильтрам исключения;
  • заданы и фильтры включения, и фильтры исключения — синхронизируются резервные копии, которые соответствуют фильтрам включения, но без тех, которые соответствуют фильтрам исключения.
После того как задание синхронизации создано, оно будет запускаться по заданному расписанию, а также его можно запустить вручную из веб-интерфейса (кнопка Запустить сейчас).
Управление задачами синхронизации в консоли:
  • добавить задачу синхронизации (по умолчанию направление pull):
    # proxmox-backup-manager sync-job create test_job \
    --store zfs_st --owner root@pam \
    --remote pbs2 --remote-store remotestore \
    --schedule 'Sat 18:15'
    
  • добавить задачу синхронизации (направление push):
    # proxmox-backup-manager sync-job create test_job_push \
    --sync-direction push --store zfs_st --owner root@pam \
    --remote pbs2 --remote-store my_disk --schedule '0/2:00'
    
  • добавить комментарий к задаче синхронизации:
    # proxmox-backup-manager sync-job update test_job --comment 'offsite'
    
  • добавить фильтр к задаче синхронизации (синхронизировать резервные копии контейнеров, за исключением контейнера 100):
    # proxmox-backup-manager sync-job update test_job \
    --group-filter type:ct --group-filter exclude:group:ct/100
    
  • вывести список задач синхронизации:
    # proxmox-backup-manager sync-job list
    
  • удалить задачу синхронизации:
    # proxmox-backup-manager sync-job remove test_job