2

Как rsync обрабатывает возможность вмешательства в другой rsync на той же машине? Я прочитал всю документацию, которую могу найти, но не вижу упоминаний об этом. Я собираюсь провести несколько экспериментов, но обеспокоен тем, что они могут не раскрыть в полной мере любые проблемы, с которыми я могу столкнуться.

Вот сценарий. Я хочу синхронизировать две машины. Каждый компьютер отслеживает изменения файлов в каталоге, а когда обнаруживает их, запускает rsync для синхронизации этого каталога с удаленным компьютером. Как правило, только один компьютер за раз будет иметь изменения файла, но что произойдет, если один и тот же файл изменился на обеих машинах одновременно, предположительно на что-то другое? Сможет ли rsync определить, что он работает на обеих машинах, и правильно ли обработать ситуацию (например, синхронизировать только более новый файл) или он может работать неправильно, что приведет к повреждению или неопределенному поведению?

Будет ли результат отличаться, если на каждой машине будет сервер rsync и ssh? Я не видел хорошего объяснения преимуществ использования одного метода по сравнению с другим.

1 ответ1

3

Короче говоря, два процесса rsync ничего не будут знать друг о друге.

Во время выполнения rsync просто выполнит соответствующее действие, учитывая текущее состояние исходных и целевых файлов и переданные аргументы / флаги (т. Е. Если вы указываете --dry-run , --delete или любое другое поведение изменяющие флаги).

Это то, что делает rsync (а также другие инструменты однонаправленной синхронизации) очень опасным в определенных средах, а также то, почему такие решения, как DFS Windows Server и кластерные файловые системы Linux, такие как GlusterFS и GFS, или инструменты репликации на уровне блоков, такие как DRBD, более применимы, если вы Ищете истинную двунаправленную синхронизацию.

Этот флаг может оказаться полезным (со страницы руководства rsync ), но вы можете столкнуться с непредсказуемым / непредсказуемым поведением, особенно если вы сочетаете с --delete:

-u, --update                skip files that are newer on the receiver

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .