Двусторонняя синхронизация данных на двух серверах?

Имеется:

2 сервера на FreeBSD (#1 и #2) с работающим rsync'ом, которые находятся в разных квартирах. На каждом сервере есть по одному 500 ГБ харду, на котором хранится рабочая и личная информация.

Задача:

Сделать умную синхронизацию, которая бы умела:
1. При добавлении/удалении/изменении информации на сервер #1, она должна добавляться/удаляться/изменяться на сервере #2.
2. Аналогично п. 1 в обратном порядке.

Как делал я:

На сервере #2 добавил в крон следующие команды:

/usr/local/bin/rsync -avz -e 'ssh -p 22' --partial /hdd/docs/ rsync@78.xx.xx.xx:/hdd/docs/ # с сервера #1 на сервер #2<br/>
/usr/local/bin/rsync -avz -e 'ssh -p 22' --partial rsync@78.xx.xx.xx:/hdd/docs/ /hdd/docs/ # и наоборот<br/>



Проблема возникла, когда я стал добавлять ключи

delete-after – Удалять файлы на слейве (#2), которые не были найдены на мастере (#1), после окончания синхронизации.<br/>
Так же можно использовать delete-before, delete-during, delete-excluded и delete.<br/>



Получалось, что только что удаленные/измененные первой командой в кроне файлы на #1 заново создавались при синхронизации #2 с #1 второй командой, и наоборот.


Есть ли решение?
  • Вопрос задан
  • 6268 просмотров
Пригласить эксперта
Ответы на вопрос 3
intnzy
@intnzy
csync2
Ответ написан
Комментировать
ivlis
@ivlis
Я делаю так:
ESCDIR=$(echo "$DIR" |sed -e "s,\([]\(\).^\*\$\/&[]\),\\\\\1,g")

scp -p $DIR/.lastsync $HOST:$DIR

ssh $HOST find  $DIR/$SUBDIR  -newer $DIR/.lastsync | sed -e "s/$ESCDIR\///" | \
rsync  --exclude-from=- --delete -av $DIR/$SUBDIR $HOST:$DIR

rsync  --delete -av $HOST:$DIR/$SUBDIR $DIR 
rsync  --delete -av  $DIR/$SUBDIR $HOST:$DIR

DATE=`date`
echo "$DATE Syncing finished"
echo "====================================================="
echo "  "

touch $DIR/.lastsync


Предполагает, что во во время синка файлы не изменяются и синк не прервётся. Последнее легко исправить, а вот первое без локальной db сделать невозможно.
Ответ написан
Комментировать
sisaenkov
@sisaenkov Автор вопроса
Так проблема не в том, что во время синхронизации что-то изменяется, а в том, что один из вариантов так или иначе накатится на второй, даже если половина файлов уже была удалена.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы