• Авторизация


Backup: реализация 03-09-2007 16:59 к комментариям - к полной версии - понравилось!


Повесть вторая: "Жизь во время бэкапа"

С помощью этого заклинания на ,бэкап-сервер c src_host переноситься все, что указано в конфиге как src_path.

code:

#!/bin/sh
DST_PATH_BASE=/home/sync/syncro;
CONF=/usr/local/etc/backup

# make sure we're running as root
if (( `id -u` != 0 )); then { echo "Sorry, must be root. Exiting..."; exit; } fi

for FILE in `ls $CONF/*.conf`
do

ENABLE_BACKUP='yes' #enabling backup, set to 'yes' if not specified
EXCLUDE='' #exclude pattern for rsync command
DESCR='' #just description of backuping entity
SRC_HOST='' #SRC_HOST mandatory parametr in config file
DST_PATH='' #DST_PATH mandatory parametr in config file
SRC_PATH='' #SRC_PATH mandatory parametr in config file
SSH_PORT='22'
while read PARAM_NAME DELIM PARAM_VALUE
do
case $PARAM_NAME in
"dst_path")
DST_PATH=$PARAM_VALUE
[ ! -d $DST_PATH_BASE/$DST_PATH ] && mkdir $DST_PATH_BASE/$DST_PATH

;;
"src_host") SRC_HOST=$PARAM_VALUE ;;
"enable_backup") ENABLE_BACKUP=$PARAM_VALUE ;;
"exclude") EXCLUDE=$PARAM_VALUE ;;
"descr") DESCR=$PARAM_VALUE ;;
"ssh_port") SSH_PORT=$PARAM_VALUE ;;

# if "scr_path" directive found initiating backup sequence
"src_path")
SRC_PATH=$PARAM_VALUE
skip='no';
[ "$ENABLE_BACKUP" != 'yes' ] && skip='Backup disable'
[ -z "$SRC_PATH" ] && skip='Source path not specified'
[ -z "$DST_PATH" ] && skip='Destination path no specified'
[ -z "$SRC_HOST" ] && skip='Source host not specified'

if [ "$skip" == 'no' ]
then

[ ! -z $EXCLUDE ] && EXCLUDE="--exclude $EXCLUDE"
echo "Backuping $DESCR: "
#rsync
rsync -av -e "ssh -l root -p $SSH_PORT" $SRC_HOST:"$SRC_PATH" $DST_PATH_BAS
E/$DST_PATH $EXCLUDE --delete --delete-excluded
else
echo $skip
fi
EXCLUDE=''
;;
*) echo Unknnown param: $PARAM_VALUE in $FILE ;;
esac
done < $FILE
done



конфиг приблизительно таков:

[oleg@loclhost]$ cat ./host1.backup.conf
enable_backup = yes
^^^^^^^^^ позволяет включать/отключать хост из бєкапа.
descr = Primary server
^^^^^^^^^ просто описание
src_host = 192.168.0.1
ssh_port = 33123
^^^^^^^^^ порт на котором висит ssh сервер
dst_path = lvp_backup
^^^^^^^^^ путь относительно базовой директории куда будет сливаться инфа.
src_path = /etc
^^^^^^^^^ директория на удаленном хосте которую необходимо забэкапить.
src_path = /home/oleg/work
exclude = log*
src_path = /var/named
src_path = /var/www/html
exclude = log*
src_path = /var/lib/imap


Скрипт для бэкапа написан на bash и он имеет весьма скромные возможности для парсинга. Поэтому никаких комментариев не подразумевается. В конце файла необходимо вставить пустую строку, иначе последний параметр будет неучтен.

Параметр exclude действителен только для следующего за ним src_path, после каждого цикла бэкапа он обрезается. Т.е. указывать исключения необходимо явно для всех директорий где это необходимо.
вверх^ к полной версии понравилось! в evernote
Комментарии (1):


Комментарии (1): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Backup: реализация | oOoXiD - Сетевик-затейник oOoXiD | Лента друзей oOoXiD / Полная версия Добавить в друзья Страницы: раньше»