Синхронизируем базу 1С костыльно с помощью rsync

Ситуация такая — в основном офисе настроен сервер терминалов FreeNX, 1С7 работает из-под Etersoftовского Wine. В филиале есть самописный софт, которому нужен доступ к одному из .DBF файлов 1С7, который храниться на сервере терминалов. Основной офис и филиал соединены через OpenVPN, поэтому целиком передавать файл целиком каждый раз не вариант. Используем rsync в режиме демона на сервере филиала для передачи лишь изменений в файле.

Создаем /etc/rsyncd.conf на сервере филиала:

[reestr]
path = /srv/smb/reestr
read only = no
use chroot = yes
hosts allow = терминальный сервер
list = false 
write only = yes
incoming chmod = u+r,g+r,o+r


Суть конфига — с разрешенного хоста (hosts allow) принимаются соединения только на запись (write only). Файл попадает в директорию /srv/smb/reestr, которая только для записи (прочитать обратно файлы нельзя), листинг файлов запрещен (list), файлы получают права на чтение для всех (incoming chmod) (это нужно для работы samba).

Запускаем rsync в режиме демона:

rsync --daemon


Терминальный сервер отслеживает изменения в DBF файле 1Ски и при наличии изменений скидывает разницу с помощью rsync на сервер филиала. Для этого используется простой скрипт, отслеживающий время модификации DBF файла:

#!/bin/bash
FILE="/srv/bases/1С7/SC12.DBF"

while true
do

	OLD=`stat $FILE | grep Modify`
 
	if [ "$NEW" != "$OLD" ]; then
		rsync -avz $FILE rsync://сервер-филиала/reestr/sc12.dbf
	fi

	NEW=$OLD
	
sleep 30
done


Вот так.
1С гори в аду!

Комментарии (4)

RSS свернуть / развернуть
+
0
A-a-a-a-a!!!
Автоматический удовлетворитель для 1C…
avatar

Markony

  • 10 июля 2010, 08:10
+
0
офигенское решение.
avatar

FREExLOADER

  • 10 июля 2010, 09:02
+
0
Красота
avatar

ahmetzyanov_d

  • 10 июля 2010, 10:20
+
0
Годика на 2 бы пораньше об этом узнать, была похожая задача и решалась еще более костыльно
avatar

yababay

  • 10 июля 2010, 11:48

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.