Добавить в FacebookДобавить в Google BookmarksДобавить в TwitterДобавить в OdnoklassnikiДобавить в Vkcom

Пишем bash скрипт делающий резервную копию сайта на сервере.

Случилось так, что мне необходимо было сделать резервные копии нескольких сайтов на удаленном сервере. Писать наборы команд утомительно. Поэтому я решил написать небольшой скрипт на Bash, который все это сделает за меня. Итак задача сделать дамп базы данных, положить его в папку с сайтом и сделать архив всего этого. Что делает скрипт? Скрипт спрашивает название базы данных, имя пользователя, пароль, путь к папке с сайтом. Если сайт не имеет базы данных, то можно просто нажать enter при запросе названия базы данных. Тогда выполнится просто архивирование папки с сайтом. Если вы ввели что-либо неправильно можно отказаться от выполнения операции и запустить скрипт по новой. Детали написания скрипта я описывать не буду - информации в сети интернет очень и очень много. Я просто выложу код.

#!/bin/bash

SETCOLOR_SUCCESS="echo -en \\033[1;32m"

SETCOLOR_FAILURE="echo -en \\033[1;31m"

SETCOLOR_NORMAL="echo -en \\033[0;39m"

PUSTO=""

$SETCOLOR_FAILURE

echo "Скрипт делающий резервную копию сайта"

$SETCOLOR_NORMAL

    echo "Ответтьте пожалуйста на несколько нудных вопросов"

    echo -n "Введите название Базы Данных (если ее нет оставьте значение пустым) [ENTER]: "

    read basename

    echo -n "Введите имя пользовтеля Базы Данных [ENTER]: "

    read username

    echo -n "Введите пароль пользователя Базы Данных [ENTER]: "

    read pass

    echo -n "Введите полный путь к папке с сайтом [ENTER]: "

    read pathToDir

    echo "Название Базы данных $basename"

    echo "Имя пользователя $username"

    echo "Пароль $pass"

    echo "Путь к папке с сайтом $pathToDir"

    dir=$(basename "$pathToDir")

    echo "название папки $dir"

    $SETCOLOR_FAILURE

    echo -n "Уверены что ввели все правильно? (y/n) "

    $SETCOLOR_NORMAL

    read item

    case "$item" in

    y|Y) echo "ОК, Делаем дамп БД и копируем Сайт. Поехали..."

    if [ "$basename" = "$PUSTO" ]; then

    tar -cvzpf $dir-$(date +%y%m%d)-site.tar.gz $pathToDir

    else

    mysqldump -u $username --password="$pass"  $basename > $pathToDir/$basename.sql && tar -cvzpf $dir-$(date +%y%m%d)-site-and-base.tar.gz $pathToDir

    fi

    if [ $? -eq 0 ]; then

    $SETCOLOR_SUCCESS

    echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"

    $SETCOLOR_NORMAL

    echo

else

    $SETCOLOR_FAILURE

    echo -n "$(tput hpa $(tput cols))$(tput cub 6)[fail]"

    $SETCOLOR_NORMAL

    echo

fi

    ;;

    n|N) echo "Отказ. Выходим из скрипта..."

        exit 0

        ;;

    *) echo "Ничего не ввели. Делаем дамп БД и копируем Сайт. Поехали..."

    if [ "$basename" = "$PUSTO" ]; then

    tar -cvzpf $dir-$(date +%y%m%d)-site.tar.gz $pathToDir

    else

    mysqldump -u $username --password="$pass"  $basename > $pathToDir/$basename.sql && tar -cvzpf $dir-$(date +%y%m%d)-site-and-base.tar.gz $pathToDir

    fi

    if [ $? -eq 0 ]; then

    $SETCOLOR_SUCCESS

    echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"

    $SETCOLOR_NORMAL

    echo

else

    $SETCOLOR_FAILURE

    echo -n "$(tput hpa $(tput cols))$(tput cub 6)[fail]"

    $SETCOLOR_NORMAL

    echo

fi

        ;;

    esac

Вот так это выглядит в консоли.

Вот, пожалуй, и все. Пользуйтесь на здоровье и модифицируйте его под свои задачи.

Автор: Darkeye.  

Еще интересное в сети.

  

 

Похожие материалы

Перейти к ленте статей