RSync: Как мне синхронизировать в обоих направлениях?
Вопрос
Я хочу использовать rsync для синхронизации двух каталогов в обоих направлениях.
Я имею в виду синхронизацию в классическом смысле
( не как это подразумевается в руководствах по rsync):
Я хочу обновить каталоги в обоих направлениях ,
в зависимости от того, какой из них новее .
Может ли это сделать rsync (предпочтительно в Linux) ?
Если нет, то какие еще существуют решения?
Решение
Просто запустите его дважды, используя " более новый " режим (-u или флаг --update) плюс -t (для копирования времени изменения файла), -r (для рекурсивных папок) и -v (для подробного вывода, чтобы увидеть, что он делает):
rsync -rtuv /path/to/dir_a/* /path/to/dir_b
rsync -rtuv /path/to/dir_b/* /path/to/dir_a
Это не будет обрабатывать удаления, но я не уверен, что есть хорошее решение этой проблемы только с периодической синхронизацией.
Другие советы
Знаете ли вы синхронизатор файлов Unison ?
Unison - это инструмент синхронизации файлов для Unix и Windows. Это позволяет два копии коллекции файлов и каталоги для хранения на разных хосты (или разные диски на одном и том же хост), модифицируется отдельно, а затем доведены до даты путем распространения изменения в каждой реплике к другой. ...
Обратите внимание также на то, что он устойчив к отказам
Unison устойчив к сбоям. это Осторожно, чтобы оставить реплики и его собственные частные структуры в разумном состояние в любое время, даже в случае ненормальное завершение или сбой связи.
Спасибо jsight
rsync -urv --progress dir_a dir_b && rsync -urv --progress dir_b dir_a
Это приведет к тому, что вторая синхронизация произойдет сразу после окончания первой синхронизации. В случае, если структура каталогов огромна, это сэкономит время, так как не нужно сидеть перед компьютером. Если структура огромная, удалите подробности и прогресс
rsync -ur dir_a dir_b && rsync -ur dir_b dir_a
Используйте rsync <OPTIONS> [hostname:]source-dir [hostname:]dest-dir
например:
rsync -pogtEtvr --progress --bwlimit=2000 xxx-files different-stuff
Синхронизирует xxx-файлы с другими-stuff / xxx-файлами. Если разные-stuff / xxx-файлы не существуют, он создаст их, т.е. скопирует.
-pogtEtv
- просто набор параметров для сохранения метаданных файла, плюс v - подробный и r - рекурсивный
--progress
- показывать ход синхронизации в режиме реального времени - очень полезно, если вы копируете большие файлы
--bwlimit=2000
- устанавливает максимальную скорость копирования / синхронизации (bw = пропускная способность)
P.S. rsync критически важен, когда вы работаете по сети, в случае локальной машины вы можете использовать такие команды, как cp .
Удачи! Р>
Я использую rsync
с inotifywait
.
Когда вы измените какой-либо файл, будет выполнено <=>.
inotifywait -m --exclude "$_LOG_FILE" -r -e create,delete,delete_self,modify,moved_to --format "%w%f" "$folder"
Вам нужно запустить <=> на обоих хостах. Пожалуйста, проверьте пример inotifywait
Вам нужен Rclone . Rclone (& Quot; rsync для облачного хранилища & Quot;) - это программа командной строки Linux для синхронизации файлов и каталогов между различными поставщиками облачного хранилища (box, dropbox, ftp и т. Д.) И локальными файловыми системами. Rlone поддерживает только зеркальную синхронизацию.
Другим более графическим решением, которое включает синхронизацию в реальном времени, было бы использование FreeFileSync , которое включает в себя программу RealTimeSync. FreefileSync поддерживает двустороннюю синхронизацию, которая включает обработку удалений.