У меня два сервера, и я хочу хранить 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 в один скрипт и добавить файл флага, указывающий, что синхронизация не будет запущена, если запущен другой скрипт.
Дайте мне знать, если это поможет.