BASH скрипт резервного копирования файлов сайта и базы данных MySQL

Подкатом сам скрипт, вполне интересная реализация сохранения на Яндекс.Диск.

#!/bin/bash
#
#ver 1.0
#2013-09-09
#
#Переменные Базы данных
DBHOST="localhost" #Адрес MySQL сервера
DBUSER="bd_user" #Имя пользователя базы данных
DBPASS="dBpAsS" #Пароль пользователя базы данных
DBNAME="db_name" #Имя базы данных
DBARC=$DBNAME.sql.gz #Имя архива базы данных
#
#Переменные WEBDAV
WEBDAVURL="https://webdav.yandex.ru/backup/" #Адрес Яндекс.Диск. Папка должна существовать!
WEBDAVUSER="my-mail-login@yandex.ru" #Имя пользователя от Яндекс.Диска (Яндекс.Почты)
WEBDAVPASS="MyPasWordAtYandexMail" #Пароль от Яндекс.Диска
#
#Переменные сайта
SCRIPTDIR="/home/serveruser/backup/" #Абсолютный путь откуда запускается скрипт и где храняться архивы
SCRDIR="/home/serveruser/web/mydomain.com/public_html/" #Абсолютный путь к сайту от корня диска
SCREXCLUDE="webstat" #Что не попадет в архив
SCRARC="public_html.tar.gz" #Имя архива файлов сайта
#
#Переменные Резерных копий
ARCNAME="mydomain.com"=$(date '+%F(%H:%M)')".tar" #Имя архивной копии сайта
ARCMAX="30" #Количество файлов в локальном хранилище
#
#Переходим в корневую директорию вебсервера
cd $SCRDIR
#
#Создаем файловый архив со сжатием, учитываем исключения
tar cfz $SCRIPTDIR$SCRARC --exclude=$SCREXCLUDE *
#
#Возвращаемся в папку со скриптом, где лежат все архивы
cd $SCRIPTDIR
#
#Архивируем базу данных со сжатием
mysqldump -h$DBHOST -u$DBUSER -p$DBPASS $DBNAME | gzip > $DBARC
#
#Объединяем файловый архив и дамп базы данных, теперь уже без сжатия
tar cf $SCRIPTDIR$ARCNAME $SCRARC $DBARC
#
#Отправляем результат в Яндекс.Диск
curl --user $WEBDAVUSER:$WEBDAVPASS -T $ARCNAME $WEBDAVURL
#
#Убираем промежуточные архивы
rm *.gz
#
#Удаляем старые копии сайта, оставляем несколько свежих копий
ls -t *.tar | tail -n+$ARCMAX | xargs rm -f

1 комментарий

avatar
Еще один вариант размещения на FTP:
#!/bin/sh
cd /usr/backup
file="/usr/backup/www_site.tar.gz"
if [ -f "$file" ]
then
        rm -f www_site.tar.gz
        echo "removing old www_site.tar.gz"
else
        echo "$file not found."
fi

echo "FTP upload $file"
FTPUSERNAME="login"
FTPPASSWORD="PASS"
FTPSERVER="dedibackup-dc3.online.net"

tar -czvf www_site.tar.gz /var/www /var/pay_notify /etc/nginx/nginx.conf /etc/mysql/my.cnf

# login to remote server
ftp -p -n <<EOF
open $FTPSERVER
user $FTPUSERNAME $FTPPASSWORD
rename www_site.tar.gz www_site.tar.gz.old
put www_site.tar.gz
delete www_site.tar.gz.old
EOF

Оставить комментарий