Изменения

Перейти к: навигация, поиск

~s - скрипты-утилиты

3670 байтов добавлено, 00:02, 23 июля 2012
м
Нет описания правки
[[rupedia:Daemon|Демоны]] и около-демонические скрипты.
 
== [{{SVN|vitalif/trunk/scripts/rsync-timemachine.pl|co}} rsync-timemachine.pl] ==
 
Инкрементальные (на файловом уровне) бэкапы (типа «Time Machine») на основе [[rupedia:Rsync]], для любой unix-машины :) с небольшой дополнительной плюшкой — на Debian/Ubuntu дистрибутивах дампит и бэкапит MySQL-базы данных.
 
По месту назначения создаёт папочки с именами вида YYYY-MM-DD, названные в честь даты очередного бэкапа (текущей на момент запуска скрипта), и туда rsync’ом заливаются заданные директории.
 
'''А теперь Killer-Feature:''' используется опция <tt><nowiki>--link-dest</nowiki></tt> относительно последнего бэкапа, и они становятся инкрементальными! С этой опцией rsync сравнивает файл с предыдущей версией, и если он не менялся, создаёт [[rupedia:Жёсткая ссылка|жёсткую ссылку]] на неё. Таким образом дублирование файлов убирается на уровне ФС.
 
Чрезмерно старые бэкапы скрипт тоже удаляет сам — для этого ему нужно задать максимальный возраст бэкапа в днях. Всё, что старее, будет удаляться. Директории с именами, не равными дате в формате YYYY-MM-DD, скрипт не трогает, правда, если YYYY-MM-DD нет вообще, то бэкап будет сделан относительно не-YYYY-MM-DD-каталога.
 
На регулярность бэкапов скрипту пофигу — когда вызовешь, тогда и будет сделан очередной бэкап. Соответственно, задаётся регулярность просто включением скрипта в cron с нужным интервалом. Двойного одновременного запуска можно не бояться — скрипт отслеживает и его, с помощью pid-файла.
 
Синтаксис запуска: <tt><nowiki>perl rsync-timemachine.pl -s МЕСТО_НАЗНАЧЕНИЯ [-A 'ОПЦИИ_RSYNC'] [-k ВОЗРАСТ] [-p PID-ФАЙЛ] ДИРЕКТОРИИ...</nowiki></tt>
 
* МЕСТО_НАЗНАЧЕНИЯ в rsync’овском синтаксисе.
* ОПЦИИ_RSYNC — опции, которые нужно передавать во все вызовы rsync (например, <tt><nowiki>--password-file=/etc/rsync.secret</nowiki></tt>).
* ВОЗРАСТ — максимальный возраст бэкапа в днях. Если опцию не передавать — скрипт ничего не удаляет.
* PID-ФАЙЛ — даёт возможность (не шибко нужную, но мало ли) переопределить расположение pid-файла, равное по умолчанию <tt>/var/run/timemachine.pid</tt>.
* ДИРЕКТОРИИ — собственно, что бэкапим. Бэкапятся без полного пути, то есть например /var/backups/mysql попадёт по адресу МЕСТО_НАЗНАЧЕНИЯ/YYYY-MM-DD/mysql.
 
{{SVN|vitalif/trunk/scripts/rsync-timemachine.pl|markup}}
== [{{SVN|vitalif/trunk/scripts/logautocommit.pl|co}} logautocommit.pl] ==
Опции:
<tab sep="tab" class="wikitable" head="top">
Формат&nbsp;1 Формат&nbsp;2 Описание По&nbsp;умолчанию-a XXX log=XXX Путь к логу auditd /var/log/audit/audit.log-d XXX etcdir=XXX Путь к версионируемой директории /etc-w XXX workdir=XXX Путь к рабочей копии /root/svn-etc-e XXX exclude=XXX Исключить изменения файлов с именами, подпадающими под регулярное выражение XXX <nowiki>^/etc/(alternatives|rc\d?\.d)|(^|/)(\.#|mtab|ld\.so\.cache|adjtime|motd$)|\.dpkg-(new|dist)$|\.default$|/\.svn/</nowiki>-x XXX exclude_exe=XXX Исключить изменения, сделанные приложения с именами образа, подпадающими под регулярное выражение XXX <nowiki>(^|/)dpkg$</nowiki>-l XXX log_config=XXX Использовать файл XXX как конфиг для логгера {{CPAN|Log::Log4perl}} /etc/logautocommit-log4perl.conf-c XXX chktime=XXX Проверять изменения файлов через XXX секунд 60-m XXX comtime=XXX Коммитить не чаще, чем в XXX секунд 300-p XXX polltime=XXX Интервал спячки после прерванного блокировующего чтения 0.5-b background=1 Уйти в фоновый режим после запуска Да-f background=0 Не уходить в фоновый режим, полезно для отладки Нет
</tab>
FIXME: проверить, как скрипт работает с символическими ссылками.
Init-скрипт прилагается, по умолчанию выполняется под пользователем www-data и группой www-data, логи в /var/log/fastperl.log, сокет в /var/run/fastperl.socket, PID-файл в /var/run/fastperl.pid, без ограничения. Init-скрипт понимает /etc/default/fastperl с переменными:
* USER=user:group
* LOGFILE=
* SOCKET=

Навигация