Задать вопрос

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

Имеется:

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 второй командой, и наоборот.


Есть ли решение?
  • Вопрос задан
  • 6297 просмотров
Подписаться 5 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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 Автор вопроса
Так проблема не в том, что во время синхронизации что-то изменяется, а в том, что один из вариантов так или иначе накатится на второй, даже если половина файлов уже была удалена.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы