На исходном сервере (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 разрывает жесткую ссылку, но, вероятно, мне не хватает какой-то опции конфигурации.
Который из ?
Фрэнсис
-H
возможность сохранения жестких ссылок; это не входит в -a
.
rsync
обработка жестких ссылок зависит от того, отправляете ли вы ВСЕ связанные файлы за одну передачу (синхронизируя оба /etc/apache2/sites-available/
и /opt/resources/
сразу на сервер B):
Обратите внимание, что rsync может обнаруживать только жесткие ссылки между файлами, которые находятся внутри набора для передачи. Если rsync обновляет файл, который имеет дополнительные жесткие связи с файлами вне передачи, эта связь будет нарушена.
Это связано с тем, что по умолчанию rsync записывает файл в новое место, а затем перемещает его поверх предыдущего файла, по существу стирая исходную жесткую ссылку и заменяя ее новым файлом. Предлагается использовать --inplace
вариант изменить это значение по умолчанию, но предупреждает, что для этого есть риски, в первую очередь:
(2) данные файла будут в несогласованном состоянии во время передачи, (3) данные файла могут остаться в несогласованном состоянии после передачи, если передача прервана или обновление не удалось.