Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Двусторонняя синхронизация данных на двух серверах?
Просмотров: 406
 
Ответов: 3
Имеется:
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 второй командой, и наоборот.
Есть ли решение?
/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/>
Я делаю так:
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 сделать невозможно.
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
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться