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

Позволяет ли Rsync синхронизировать файлы обоими способами?

Я сделал резервную копию веб-сервера Linux, используя rsync с cygwin. Теперь у меня есть идеальная копия сервера на моем ноутбуке с Windows. Если я удалю или изменю файл на своем ноутбуке и снова запущу rsync с помощью cygwin, удалит ли / обновит тот же файл на сервере? У меня сложилось впечатление, что если я удалю / изменю на сервере и запустил rsync на моем ноутбуке, он удалит / изменю локальный файл на моем ноутбуке, но работает ли это в обратном порядке?

Rsync выполняет одностороннюю синхронизацию, однако вам решать, в каком направлении будет выполняться синхронизация.

Синтаксис команды Rsync следующий:

rsync [OPTION...] SRC... [DEST]

Обратите внимание, что вы указываете синхронизацию от источника к месту назначения. Источник и место назначения могут быть любым локальным или удаленным путем.

Например, если вы хотите скопировать файлы со своего сервера на ноутбук, вы делаете:

rsync [OPTION...] <server-path> <laptop-path>

Чтобы выполнить синхронизацию в обратном направлении:

rsync [OPTION...] <laptop-path> <server-path>

Итак, чтобы ответить на ваш вопрос: это зависит от того, как вы выполняете rsync.

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

Как было предложено Masegaloeh в комментариях ниже, -n или --dry-run вариант также может использоваться для проверки rsync командное поведение.

Инструмент-оболочка, написанный на python3, называется bsync который обертывает find и rsync команда упрощает задачу. Репозиторий на Github: https://github.com/dooblem/bsync

Не бойтесь, когда он находится на github (то есть так, как вы думаете, что вы должны быть программистом, чтобы использовать этот инструмент).

рассмотрите возможность использования --delete-after, а не --delete, это гарантирует, что ваша принимающая сторона удалит файлы после передачи, а не до.