Добро пожаловать на форум, Гость!
Войдите или зарегистрируйтесь!
Имя пользователя:   Пароль:  
Запомнить меня 




Начать новую тему Ответить на тему   [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Скриптец для бэкапа виртов KVM
СообщениеДобавлено: 27 авг 2015, 11:44 
Бородатый сис
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 2898
Откуда: Из серверной
Зарегистрирован: 03 мар 2010, 15:12
Благодарил (а): 19 раз.
Поблагодарили: 121 раз.
ОС: RHEL 6.7
Есть у меня парк виртуалок в хозяйстве, раз в неделю оные нужно бэкапить. Для этого когда-то давно был нарисован костыль, тушивший вирты и копировавший образы и конфиги в нужное место. Время шло, виртов становилось больше, их конфигурация сложнее (напр. именование дисков отличалось, либо дисков добавилось по нескольку штук на вирт). Ну в общем, дабы облегчить себе жизнь, нарисовал такой вот скриптец:

Синтаксис: [ Загрузить ] [ Скрыть ]
Используется подсветка синтаксиса bash
#!/bin/bash

LANG=C

# Default variables
dest="/srv/backups/virt"
cleanup=0
confdir="/etc/libvirt/qemu"
shell="/usr/bin/virsh"
xmldir="${dest}/xml"
images="${dest}/images"
date=$(date +%d_%m_%Y)


usage() {
    echo -e "\n    Usage: $0 [PARAMETERS] \n
    Run backup of virtual machines.
    \n
    PARAMETERS:
    -n, --name= name of virtual machine to backup (required)\n
     Optional (see script header for defaults):
    -d, --dest= backup destination directory
    -r, --remove= days to store backups, older files will be removed. Default is 0 (forever)
    -h, --help display this help"

}

if [ "$#" -eq 0 ]; then
    usage
    exit
fi

while [ "$#" -gt 0 ]; do
  case "$1" in
    -n) name="$2"; shift 2;;
    -d) dest="$2"; shift 2;;
    -r) cleanup="$2"; shift 2;;
    -h) usage; exit; ;;

    --name=*) name="${1#*=}"; shift 1;;
    --dest=*) sest="${1#*=}"; shift 1;;
    --remove=*) cleanup="${1#*=}"; shift 1;;
    --help) usage; exit; ;;
    --name|--dest) echo "$1 requires an argument" >&2; exit 1;;

    -*) echo -e "Unknown option: $1\nUse --help or -h for usage information" >&2; exit 1;;
    *) handle_argument "$1"; shift 1;;
  esac
done

if [ "x${name}" = "x" ]; then
    echo "Error: Virtual machine name is a required argument!"
    exit 0
fi

# lock|unlock for service status check script
lock() {
    if [ ! -f /tmp/bcp ]; then
        mkdir -p /tmp/bcp
    fi
    echo "Locking ${name}"
    touch /tmp/bcp/${name}.lock
}

unlock() {
    echo "Unlocking ${name}"
    rm -f /tmp/bcp/${name}.lock
}

copy() {
    for disk in $($shell -q -r domblklist ${name} --details | grep disk | awk '{ print $4 }')
    do
        ext=$(echo ${disk} | rev | cut -d\. -f 1 | rev)
        img=$(echo ${disk} | cut -d\. -f 1 | rev | cut -d\/ -f 1 | rev)
        echo "Copying ${disk} to destination directory"
        cp ${disk} ${images}/${img}-${date}.${ext}
    done
    echo "Copying ${name}'s config to destination directory"
    cp ${confdir}/${name}.xml ${xmldir}/${name}-${date}.xml
}

clean(){
    for fldr in ${images} ${xmldir}
    do
        echo "Delete files in ${fldr} older than ${days}"
        find ${fldr} -type f -name ${name}\* -mtime $days -delete
    done
}

# Check target directory structure
if [ ! -d ${images} ]; then
    mkdir -p ${images}
elif [ ! -d ${xmldir} ]; then
    mkdir -p ${xmldir}
fi

state=$($shell domstate ${name})
if [ "x${state}" = "xrunning" ]; then
    lock
    locked=1
    $shell suspend $name
fi

copy
if [ $cleanup -gt 0 ]; then
    clean
fi
if [ $locked -eq 1 ]; then
   $shell resume $name
   unlock
fi
 
Обработано за 0.018 секунд, используется GeSHi 1.0.8.4


Я не злопамятный, я просто часто ковыряю логи
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скриптец для бэкапа виртов KVM
СообщениеДобавлено: 12 окт 2015, 14:40 
Эникейщик
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 494
Откуда: Местный!
Зарегистрирован: 02 апр 2010, 15:28
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.
ОС: Slackware & Windows7
*THUMBS UP*
Классно! надо будет взять на вооружение.


Изображение


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
   Похожие темы   Автор   Ответов   Просмотров   Последнее сообщение 
Перенесенная ^_^

в форуме Linux

root

3

38

02 мар 2010, 16:15

Gen1us2k Перейти к последнему сообщению

Перенесенная Документация по Gentoo

в форуме Linux

Gen1us2k

0

4

05 мар 2010, 18:54

Gen1us2k Перейти к последнему сообщению



Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Собрано Raven. Русская поддержка phpBB
phpBB SEO