subversion как система резервного копирования

Понадобилось легко и непринуждённо иметь резервную копию директории с windows-сервера.

***

Первой попыткой было использование wget –mirror с ftp-сервером:

#!/bin/sh -e
unset
url="ftp://server.tld/path/to/dir/"
backup="/tmp/local-copy"

wget --no-cache -nH -c -t0 --mirror -P$backup -i- <<EOF
        $url/subfolder1
        $url/subfolder2
        $url/subfolderN
EOF

Первоначальный бэкап вроде как получился, но последующие попытки синхронизироваться ничем не завершались – wget уходил в себя от бесконечных потуг скачать некоторые файлы, размер которых не сходился с ожидаемым.
Вина ли тут ftp-сервера или проблема во wget разбираться не захотелось. Кроме того обнаружилось, что файлы с кириллицей в названии в процессе перекачки потеряли часть былых имён. wget вычёркиваем.

***

Попытался найти аналог rsync для windows, первые несколько страниц поиска содержали какие-то gui-приложения, форумы предлагали использовать cygwin и массу других тяжеловесных комбайнов…

В итоге всё решилось импортом директории в svn и добавлением в “Scheduled tasks” следующего bat-файла:

cd \path\to\dir
for /f "tokens=2*" %%i in ('\path\to\bin\svn status . ^| find "?"') do \path\to\bin\svn add "%%i"
for /f "tokens=2*" %%i in ('\path\to\bin\svn status . ^| find "!"') do \path\to\bin\svn delete "%%i"
\path\to\bin\svn commit -m "Automatic backup" .

***

Дописывая эти строки подумалось – а ведь можно было использовать dropbox (asus webstorage, ubuntu one и т.п.)… Ну да ладно – велосипед собранный своими руками милее (и прозрачнее в работе).

08.12.11  |  , ,  | стань первым

Subversion и время модификации файлов

Крайне странно что раньше я не замечал по-умолчанию директива use-commit-times ВЫКЛЮЧЕНА!.

Включить, понятное дело, можно настройкой в конфиге ~/.subversion/config.

Ну или в cli добавив параметр –config-option=config:miscellany:use-commit-times=yes

17.08.10  |  ,  | стань первым

commit-jabber


После прочтения статьи о том, как в last.fm используют irc для логирования всего и вся тоже захотелось как-нибудь “выпендриться”.
Мониторить сервера нам ни к чему, да и irc – поди объясни сейчас что это такое и чем оно лучше _______. Но недавно выдалась свободная минутка и я нашёл куда приложить усилия.
Решил сделать post-commit хук в svn-репозитарии, который будет высылать детали о коммите, но не на почту, как это делается в традиционных скриптах, а в jabber (cам jabber достался нам вместе с почтой от гугла) .
По-моему получилось очень удобно и за несколько дней превратилось из игрушки в удобный инструмент для своевременного обновления и обнаружения “ну и зачем ты это сделал” :)

Собственно все внутренности состоят из библиотеки XMPPHP и маленького скриптика, который вешается на post-commit.
Сам скриптик настолько маленький и бесхитростный, что комментировать его не вижу смысла – кладу как есть.
Для функционирования нужно иметь xmpphp в include_path, бинарник svn в PATH и добавить post-commit hook в ваш репозитарий.

В сложнейшем, виндовом случае это будет post-commit.cmd, который лежит в директории hooks репозитария и имеет следующее содержание:

/path/to/php.exe /path/to/svnjabber.php %1 %2

Performance Optimization WordPress Plugins by W3 EDGE