MySQL ZFS Backup v2

Обновил и расширил функциональность своего скрипта, осуществляющего бэкап базы данных MySQL с помощью ZFS снапшотов.

Новая версия умеет понимать параметры, передаваемые из командной строки, умеет работать с файлом конфигурации и обрабатывать несколько датасетов за раз. Типичный пример использования скрипта mysql_zfs_backup.sh:

db# ./mysql_zfs_backup.sh -u mysqluser -p mysqlpass -d rpool/mysql -d ssd/mysql
Replication is running: 0 seconds master delay
Snapshots will be rotated for ZFS datasets: rpool/mysql ssd/mysql
Done

Конфигурация по-умолчанию читается из файла mysql_zfs_backup.conf:

mysql_user='mysqluser'
mysql_pass='mysqlpass'
zfs_datasets='rpool/mysql ssd/mysql'
quiet='0'

И, кстати:

db# /bin/sh -c 'time -h ./mysql_zfs_backup.sh'
Replication is running: 0 seconds master delay
Snapshots will be rotated for ZFS datasets: rpool/mysql
Done
        3.09s real              0.02s user              0.00s sys
db# du -h -c /var/db/mysql | grep total
 79G    total

Файлы: сам скрипт, пример конфига.

Добавляем cidr к префиксу в sed

Иногда приходится добавлять префиксы, полученные из quagga в таблицы ipfw. Для этого нужно добавить соответствующий cidr для сетей класса A, B и C, который сама quagga в своем выводе опускает. Делается это следующим набором команд для sed:

br# echo 192.16.0.0 | sed -E -e 's|^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$|\1/24|' -e 's|^([0-9]+\.[0-9]+\.[0-9]+)$|\1.0/16|' -e 's|^([0-9]+\.[0-9]+)$|\1.0.0/8|'
192.16.0.0/24
br# echo 172.16.0 | sed -E -e 's|^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$|\1/24|' -e 's|^([0-9]+\.[0-9]+\.[0-9]+)$|\1.0/16|' -e 's|^([0-9]+\.[0-9]+)$|\1.0.0/8|'
172.16.0.0/16
br# echo 10.0 | sed -E -e 's|^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$|\1/24|' -e 's|^([0-9]+\.[0-9]+\.[0-9]+)$|\1.0/16|' -e 's|^([0-9]+\.[0-9]+)$|\1.0.0/8|'
10.0.0.0/8