LINUX.ORG.RU
ФорумAdmin

Синхронизация данных (да, опять и снова)


0

0

Привет, ЛОР! Буквально неделю назад я устроился на работу в офис. А так как я до этого целый год просидел дома, занимаясь ничем иным, как фрилансом, привычка осталась, и я продолжаю работать дома по вечерам и выходным.

Все было бы замечательно, если бы я не занимался переписыванием конфига vim'a сначала на работе, а потом дома. А еще у меня есть бинарные базы keepassx, в которых я храню свои драгоценные пароли. Я их тоже люблю менять и дома и на работе. А еще у меня есть домашний сервер (как у почти любого посетителя ЛОРа), который будет выступать хранилищем.

И поэтому хотелось бы организовать примерно вот такую схему:

дом <-> хранилище <-> работа

Список требований:

  • (!!!) хоть какая-то возможность версионировать изменения (если я случайно удалю базу, и она потом умрет в хранилище, это будет epic fail)
  • мгновенная отправка изменений на сервер (очень хотелось бы)
  • возможность работать по ssh, smb
  • это не должно быть системой контроля версий. cvs, svn, git, hg, bzr, darcs не предлагать
  • возможность разруливать конфликты у текстовых файлов (примерно как в unison при помощи kdiff3)

С чем я сталкивался:

  • duplicity — да, вроде как есть версионность. Вроде как бинарные диффы даже.
  • csync — тут даже говорить не очем. Ничего интересного не умеет.
  • rsync — могу только представить связку inotify/incron+rsync+bash для удовлетворения 1 и 2 пункта
  • unison — проект забросили два года назад. Сомневаюсь, что стоит туда смотреть.

Еще много интересного на http://www.opennet.ru/prog/sml/87.shtml, но не думаю, что успею осилить за выходные весь софт, что там есть.

Поэтому, товарищи, прошу вас не писать комментарии типа «а не попробовать ли тебе это или это». Если у вас есть реальный опыт осуществления задуманного, пожалуйста, поделитесь им со мной. Если же нет, то лучше просто откройте следующий топег. Спасибо!

Храню в hg+скрипт заведения настроек. Чем vcs не угодили непонятно, мгновенная отправка изменений не нужна. Ты же не каждые 5мин всё меняешь?

true_admin ★★★★★
()

> это не должно быть системой контроля версий. cvs, svn, git, hg, bzr, darcs не предлагать

Вот и зря. Настраивается один раз, и все запрашиваемые плюшки есть.

Igron ★★★★★
()
Ответ на: комментарий от true_admin

Храню в hg+скрипт заведения настроек

Может тогда поделишься своими скриптами? Если не жалко, конечно.

cheerfulboy
() автор топика
Ответ на: комментарий от cheerfulboy

«а не попробовать ли тебе это или это»

это конечно скорей всего не решение твоей конкретной проблемы. т.ч. можеш считать это мылями в слух. за subj приношу заранее свои извенения.

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

меня честно признаться уже основательно достало (!) копировать и синхронизировать данные туда-сюда-обратно с одной машинки на другую. а у меня их штук шеть и половина из них не дома.

конфиги да сырцы у меня конечно в cvs, но например фотографии и другое барахло туда не засунеш. а держать три-четыре копии одного и того же — это имо моветон и поза-прошлый век.

т.ч. на днях я буду поднимать на главном сервере afs — скоростей и-нета для этого уже имо вполне достаточно.

beastie ★★★★★
()
Ответ на: комментарий от cheerfulboy

Да у меня ламерские скрипты, я тебе покажу примерно какие. Единственное у меня файлы один раз копируются, но можно сделать их симлинками на файлы в репозитории и проблема решена. А скрипт, например, такой для заведения на новых тачках(раньше часто ОС сносил :)):

(щас его коренным образом переписываю)


#!/bin/bash

PKGSDEVEL="build-essential git-core mercurial subversion libssl-dev
           libev-dev manpages-dev ncurses-dev libbz2-dev libreadline-dev
           memcached redis-server
           python-setuptools
           python-memcache python-redis python-psycopg2
           python-sphinx python-docutils python-flup
           sqlite3 libsqlite3-dev
           pkg-config
           valgrind gdb
           nginx
           libmp3lame-dev libfaad-dev libfaac-dev libgpac-dev libxvidcore4-dev
           libopencore-amrnb-dev libopencore-amrwb-dev
           checkinstall
           iptraf wireshark claws-mail"
PKGSMMEDIA="mplayer-nogui audacious gtkpod gqview ffmpeg"
PKGSNET="sshfs openvpn pptp-linux xl2tpd vim-nox centerim"
PKGSOTHER="sysstat wine rxvt-unicode-lite p7zip-full rar pwgen apcalc"
PKGSWEB="opera links2 flashplugin-nonfree"
SRCBASE="/home/sources"

EXTRAREPOS="deb http://deb.opera.com/opera/ stable non-free"


set -u

## BASHLIB VERSION=1.4 ##############################
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:$PATH
#TODO: check getLinHash

color_yellow() { echo -ne "\033[33;1m"; }
color_red() { echo -ne "\033[31;1m"; }
color_white() { echo -ne "\033[00m"; }
color_green() { echo -ne "\033[1;32m"; }

print_red() { color_red; echo -e "$*"; color_white; }
print_yellow() { color_yellow; echo -e "$*"; color_white; }
print_green() { color_green; echo -e "$*"; color_white; }

print_debug() { if [ $DEBUG != 0 ]; then echo -e "$*"; fi }

die() { print_red "$*"; exit 1; }
doReboot() { print_red "$*"; shutdown -r now; }

getLinHash() { python -c "import crypt; print crypt.crypt(\"${1}\",\"\$1\$`pwgen -n -c 8 1`\$\")"; }
## END OF BASHLIB########################################


print_green "check for internet"
ping -c 3 -q -s 100 ya.ru || die "You must be online"

print_yellow "REPO STAGE"
if [ ! -d /etc/apt/sources.list.d/extrarepos.list ]; then
    print_green "adding extra repos"
    echo "$EXTRAREPOS" | sudo tee /etc/apt/sources.list.d/extrarepos.list
fi

if [ ! -f /tmp/repos_updated ]; then
    print_green "repos update"
    sudo aptitude update
    touch /tmp/repos_updated
fi
if [ ! -f /tmp/system_upgraded ]; then
    print_green "system full upgrade"
    sudo aptitude full-upgrade
    touch /tmp/system_upgraded
fi


aptitude purge avahi-daemon

print_green "software install"
sudo apt-get install $PKGSDEVEL $PKGSMMEDIA $PKGSNET $PKGSOTHER $PKGSWEB ||
    die "Cant install some of the packages"

print_yellow "SOURCES STAGE"
print_green "installing essential sources"
sudo install -d -o $USER -m 755 $SRCBASE
if [ ! -d $SRCBASE/hgforest ]; then
    print_white "hgforrest"
    hg clone http://hg.akoha.org/hgforest $SRCBASE/hgforest
fi

DJANGO_HOME=$SRCBASE/django-trunk
if [ ! -d $DJANGO_HOME ]; then
    print_white "django from trunk"
    svn co http://code.djangoproject.com/svn/django/trunk/ $DJANGO_HOME
    SITE_PKG_HOME=`python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"`
    if [ -d "$SITE_PKG_HOME" ]; then
        sudo ln -s $DJANGO_HOME/django $SITE_PKG_HOME/django
    fi
    cd $DJANGO_HOME/docs && make html
fi

DJANGO_FORUM_HOME=$SRCBASE/django-forum
if [ ! -d $DJANGO_FORUM_HOME ]; then
    print_white "django_forum"
    svn co http://django-forum.googlecode.com/svn/trunk/ $DJANGO_FORUM_HOME
fi

PY3K_HOME=$SRCBASE/py3k
if [ ! -d $PY3K_HOME ]; then
    hg clone http://code.python.org/hg/branches/py3k $PY3K_HOME
    cd $PY3K_HOME
    ./configure --with-pydebug --without-pymalloc --prefix=/usr/local/py3k
    make -j2
    sudo make install
    make clean
    sudo ln -s /usr/local/py3k/bin/python3 /usr/local/bin
    cd Doc && make html
fi

print_yellow "SKELETON STAGE"
print_green "copying personal configs..."
tar -cf - -C ~/mainrepos/CONFIGS/ skel  | tar -C ~ -p  --strip-components=1 -xf -
true_admin ★★★★★
()

А так как я до этого целый год просидел дома, занимаясь ничем иным, как фрилансом,


А зачем в офис ушел? Мало за фриланс платят?

Karapuz ★★★★★
()
Ответ на: комментарий от Karapuz

Да, получилось так, что пообещали зп больше, чем я получал дома.

cheerfulboy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.