Чи дозволяє Rsync синхронізувати файли обома способами?


25

Я створив резервну копію веб-сервера linux за допомогою rsync з cygwin. Тепер у мене на ноутбуці Windows ідеальна копія сервера. Якщо я видаляю або змінюю файл на своєму ноутбуці і запускаю rsync знову за допомогою cygwin, чи видалить / оновить той самий файл на сервері? Я маю враження, що якщо я видалю / зміню на сервері і запускаю rsync на своєму ноутбуці, він видалить / змінить локальний файл на моєму ноутбуці, але чи працює це в зворотному режимі?


12
Це не відповідь на ваше запитання, але ви повинні поглянути unison. Це інструмент синхронізації, який зберігає стан файлу в обох копіях і, таким чином, дозволяє двосторонню синхронізацію. Також є пакет cygwin.
Дубу

Відповіді:


29

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поведінки команди.


9
Додаткова примітка. Для тестування поведінки на rsync ви можете використовувати параметр -nабо --dry-run, таким чином, ви будете знати, який файл буде видалено та змінено
masegaloeh

1

Інструмент обгортки, написаний в python3, називається, bsyncякий обгортає findта rsyncкоманду спрощує завдання. Github repo: https://github.com/dooblem/bsync

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


-1

Подумайте про використання --delete-after, а не --delete, це забезпечить, що ваш кінець прийому видалить файли після передачі, не раніше.


Я вважаю, що голоси є тим, що ОП не намагається rsyncнічого видалити. Він видаляє речі самостійно. Сказавши це, корисний натяк на rsync'ing взагалі. Спасибі.
harperville
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.