57.7.2. Задания синхронизации
Хранилища данных с удалённого сервера можно синхронизировать с локальным хранилищем с помощью задачи синхронизации.
Задания синхронизации — это автоматизированные задачи, которые копируют данные из одного хранилища в другое, обеспечивая резервирование и географическое распределение резервных копий. Они работают по принципу инкрементного копирования, передавая только изменения, что экономит время и bandwidth.
Задания синхронизации работают в двух направлениях:
pull — копирует содержимое хранилища данных на удаленном сервере в локальное хранилище данных;
push — копирует резервные снимки с локального хранилища в хранилище на удаленном сервере (это может быть полезно в случае, кода удаленный сервер не может инициировать подключения к локальному).
Задания синхронизации в направлении push не идентичны по поведению заданиям синхронизации в направлении pull из-за ограниченного доступа к целевому хранилищу данных через API удаленных серверов. В частности, отправленный контент всегда будет принадлежать пользователю, настроенному в удаленной конфигурации, независимо от локального пользователя, указанного в задании синхронизации. Последнее используется исключительно для проверки разрешений и проверки области действия на стороне push.
Настоятельно рекомендуется создать выделенную удаленную конфигурацию для каждого отдельного задания синхронизации в направлении push, используя выделенного пользователя на удаленном устройстве. В противном случае задания синхронизации, отправляемые на одну и ту же цель, могут удалить снимки и/или группы друг друга, если установлен флаг remove vanished
, или пропустить снимки, если время резервного копирования не является инкрементным.
Для заданий синхронизации направления pull требуются следующие разрешения:
Для заданий синхронизации направления 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
.
Для настройки задачи синхронизации, необходимо в разделе перейти на вкладку , нажать кнопку Добавить и выбрать направление синхронизации:
В открывшемся окне на вкладке необходимо указать синхронизируемые хранилища, владельца и расписание синхронизации:
На вкладке можно настроить фильтры. В этом случае будут синхронизироваться только резервные копии, соответствующие хотя бы одному из указанных критериев. Доступны следующие критерии:
Тип (type) — виртуальная машина (vm), контейнер (ct), хост (host);
Группа (group) — полный идентификатор группы (например, group:vm/100);
Регулярное выражение (regex) — регулярное выражение, сопоставленное с полным идентификатором группы (например, regex:'^vm/1\d{2,3}$').
Фильтр можно инвертировать, указав его в разделе 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