Rsync, по-видимому, ломает жесткие ссылки

На исходном сервере (A) я получил файл / opt / resources / xxx и жесткую ссылку /etc/apache2/sites-available/xxx, указывающую на этот файл.

На другом сервере (B) я получил ту же структуру /etc/apache2/sites-available/xxx, жестко связанную с / opt / resources / xxx

Я rsync на сервере (A) в сторону сервера (B) все изменения в / opt

Когда я изменяю файл xxx на сервере A, а затем rsync на сервер B, эти изменения отражаются. /opt/resources/xxx на сервере B содержит мои изменения, внесенные в тот же файл на сервере A.

Единственное, что я не понимаю, это то, что файл /etc/apache2/sites-available/xxx не содержит изменений.

Похоже, что rsync разрывает жесткую ссылку, но, возможно, мне не хватает какой-либо опции конфигурации.

Который из?

Фрэнсис

2 ответа

-H это опция для сохранения жестких ссылок; это не входит в -a,

rsyncОбработка жестких ссылок зависит от отправки всех связанных файлов за одну передачу (синхронизация обоих /etc/apache2/sites-available/ а также /opt/resources/ на сервер B сразу):

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

Это связано с тем, что по умолчанию rsync записывает файл в новое место, затем перемещает его поверх предыдущего файла, по существу стирая исходную жесткую ссылку и заменяя ее новым файлом. Предлагает использовать --inplace возможность изменить это значение по умолчанию, но предупреждает, что есть риски для этого, в частности:

(2) данные файла будут находиться в несогласованном состоянии во время передачи, (3) данные файла могут остаться в несогласованном состоянии после передачи, если передача прервана или если обновление завершится неудачно

Другие вопросы по тегам