rsync с двух серверов в общее местоположение

rsync с двух серверов в общее местоположение

У меня два сервера, и я хочу хранить rsyncфайлы с обоих серверов в одном месте.

  • На сервере 1 есть файлы A и B.
  • На сервере 2 есть файлы A и B.
  • После того, как rsyncсервер 3 получит файлы A и B

Когда пользователь удаляет файл A с сервера 1 и файл B с сервера 2, на сервере 3 не должно быть никаких файлов.

Но в моей настройке это работает некорректно:

  • rsync --delete server1 server3
  • rsync --delete server2 server3

Сначала он удаляет A, а затем B, но A будет снова скопирован с сервера 2. Вместо того чтобы получить пустой каталог, я снова получаю A.

Есть ли у кого-нибудь способ обойти это?

решение1

Команда rsync, которую вы делаете, делает server3 строгой копией любого сервера, с которого он копирует. Таким образом, он становится клоном server1 (с отсутствующим A и B), затем вы указываете ему быть клоном server2 (с отсутствующим A и B)

Можете ли вы вернуться на уровень назад и объяснить, что вы собираетесь здесь сделать?

решение2

Попытался ли ты

rsync -u --delete server1 server3
rsync --delete server2 server3

Из страницы руководства rsync:

  -u, --update                update only (don’t overwrite newer files)

Независимо от того, какой сервер (server1 или server2) выполнит синхронизацию первым, будет учитываться, находится ли файл уже на сервере (server3).

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

Дайте мне знать, если это поможет.

Связанный контент