Пишем 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.
Еще интересное в сети.