Назад | Перейти на главную страницу

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

Который из ?

Фрэнсис

-H возможность сохранения жестких ссылок; это не входит в -a.

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

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

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

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