Синхронизация файлов между 3 местами?

2654

Мне нужен способ синхронизации файлов между 3 местами, все из которых могут быть изменены.

Все места в Linux, и инструмент синхронизации должен запускаться из cronjob, а не вручную!

Я пытался unison, но я не могу заставить его работать с 3-мя отдельными местами (я пытался настроить, используя <=> b и b <=> c синхронизацию, но это не работает).

Есть ли инструмент, который мог бы сделать что-то подобное?

2
Почему не работает унисон? Рассматривали ли вы использование системы контроля версий для этого? pjc50 14 лет назад 0
Вы хотите, чтобы изменение в одном месте закончилось на двух других? innaM 14 лет назад 0
@ Манни: да - это должно работать во всех направлениях. 14 лет назад 0
Потому что вы уже используете * unison * Я думаю, что простой rsync - это не то, что вам нужно? cringe 14 лет назад 0
@Carsten: я не знаю, как настроить rsync для трехсторонней синхронизации. 14 лет назад 0

7 ответов на вопрос

4
Saxtus
Я думал, что Dropbox требует, чтобы пользователь "сделал что-то" для синхронизации. С другой стороны - мне нужно, чтобы это было сделано автоматически. И объемы данных (~ 100 ГБ), которые мне нужно синхронизировать, выглядят как плохое совпадение с Dropbox. 14 лет назад 0
Никаких действий не требуется, но для 100 ГБ это, вероятно, не правильный инструмент user12889 14 лет назад 0
Если большинство файлов остаются без изменений, проблем не возникает, так как Dropbox отправляет только различия между файлами между компьютерами (не говоря уже о том, что имеет функцию только для локальной сети, позволяющую очень быстро синхронизировать их, если они находятся в одной локальной сети). Но реальная проблема заключается в том, что за 100 ГБ данных это также означает, что вам придется платить $ 19,99 / месяц ... Saxtus 14 лет назад 1
3
Tony

Унисон сделает это. Внутри папки Unison, в которой хранятся данные синхронизации (путь к osx: ~ / Library / Application Support / Unison), создайте два файла .prf.

example1.prf

# Unison preferences file  root = /Users/XXXX/Desktop/a   root = /Users/XXXX/Desktop/b  perms = 0  #confirmbigdel = false 

example2.prf

# Unison preferences file  root = /Users/XXXX/Desktop/b   root = /Users/XXXX/Desktop/c  perms = 0  #confirmbigdel = false 

теперь запустите "unison example1" и "unison example2", все папки будут синхронизированы.

Вы можете сделать еще один шаг и обновить все папки, как только файл изменится, если вы соберете unison из последней версии svn. В последней версии svn вы можете использовать флаг «-repeat watch» (например, «unison exampleX -repeat watch») для просмотра папок на наличие изменений, поскольку файл fsmonitor.py находится в том же каталоге bin, из которого вы выполняете Unison из ,

Это также работает через ssh, если на всех машинах установлена ​​одна и та же версия ... В основном, это частный дропбокс. Вероятно, было бы полезно настроить сервер, всегда подключенный к Интернету, чтобы принимать изменения в любое время, все компьютеры будут подключаться к тому, который ищет изменения.

1
Jimmy Hedman

Неортодоксальная идея, не могли бы вы просто использовать GIT?

Я думаю, что мог бы, но я не знаю этого (пока), и я не чувствую себя комфортно в изучении мерзавца на важных данных. 14 лет назад 0
Поскольку у вас огромное количество данных, GIT также не будет работать. Jimmy Hedman 14 лет назад 0
Ну, я бы чувствовал себя еще более комфортно с Git (по сравнению с другими решениями), потому что вы никогда не сможете потерять данные. Кроме того, у Git действительно нет проблем с огромным количеством данных. Тем не менее, у вас есть проблема в том, что он сохранит некоторые избыточные данные, то есть, по крайней мере, размер самих данных (вы можете удалить данные из истории, поэтому также не намного больше). Albert 13 лет назад 0
1
0x44

NFSили Sambaникакие рабочие места cron не требуются.

Ни один из них не работает хорошо в сценариях с не очень хорошим соединением. 14 лет назад 0
0
trip0d199

Как насчет Subversion, используя бесплатный сервис, такой как projectlocker или cvsdude? Это очень легко масштабируется.

Subversion хранит вторую копию данных в каталоге .svn. что в случае 100 ГБ базовых данных далеко не практично 14 лет назад 0
0
Jimmy Hedman

Изменяются ли данные во всех местах все время? В противном случае вы могли бы начать свою работу, выполнив rsync с одного (который вы объявляете мастером) на машину, с которой вы работаете, а затем rsync обратно, когда вы закончите.

Да. Я не имею никакого контроля над тем, что и когда меняется - это в основном 3 офиса с некоторыми людьми во всех. 14 лет назад 0
0
Edward

I know I'm late to the party, but it is possible to synchronize 3 (or more hosts) with unison. I do this regularly with four machines. I created a star-shaped topology, in which one host is designated 'central', and the others synchronize against this 'central' node, never against each other. It is easiest if there are no changes on the central node. In your case, this would require a fourth node.