Создание бекапа и отправка данных на ЯДиск

В сегодняшней заметке рассмотрим простой пример создания архива сайта и дампа базы данных и их копирование на сервис Яндекс Диск. Решение по бекапу тривиальное: файлы паковать архиватором, базу дампить mysqldump-ом. Любители инкрементальных копий легко могут адаптировать данный метод под свои нужды. Временные отметки можно убрать. У меня сайт большой и периодически проводятся чистки и т.п. Интересно на сколько они эффективны.

#!/bin/bash
SITE1="/path/to/www/data/" # Каталог в котором находятся файлы сайта
TAR="$(which tar)"
DAY=$(date +"%Y-%m-%d") # Дата в формате ГГГГ-ММ-ДД
SITEDIR="/home/backup/daily/$DAY/sites" # Каталог в который будем складывать архив
DBDIR="/home/backup/daily/$DAY/DB" # Каталог для дампа
MDB="database"
MUSER="user"
MPASS="pAssw0rd"

# 1. Job
# -------------- Files ----------------
mkdir -p $SITEDIR
cd $SITEDIR
echo "Backup $SITE1 started $(date +"%d %B %Y") at $(date +"%H:%M:%S")"
$TAR -czf $SITEDIR/tradenark.com.ua.tar.gz $SITE1
echo "Backup $SITE1 ended $(date +"%d %B %Y") at $(date +"%H:%M:%S")"
#--------------- MySQL -----------------
mkdir -p $DBDIR
cd $DBDIR
echo "Backup database $MDB started $(date +"%d %B %Y") at $(date +"%H:%M:%S")"
mysqldump -u$MUSER -p$MPASS $MDB > full.sql
echo "Backup database $MDB ended $(date +"%d %B %Y") at $(date +"%H:%M:%S")"

# 2. Create directory structure on YandexDisk
#curl --user user@yandex.ru:password -X MKCOL https://webdav.yandex.ru/backup/
# Данную команду лучше выполнить один раз из консоли что бы создался необходимый каталог. Или же создать его вручную в Web-интерфейсе сервиса ЯДиск
curl --user user@yandex.ru:password -X MKCOL https://webdav.yandex.ru/backup/$DAY/

# 3. Copy files to YDisk
# 3.a. Site copy
echo "Copying site backup to YDisk started $(date +"%d %B %Y") at $(date +"%H:%M:%S")"
curl --silent --user user@yandex.ru:password -T "$SITEDIR/tradenark.com.ua.tar.gz" https://webdav.yandex.ru/backup/$DAY/
echo "Copying site backup to YDisk ended $(date +"%d %B %Y") at $(date +"%H:%M:%S")"
# 3.b. DB copy
echo "Copying mysql backup to YDisk started $(date +"%d %B %Y") at $(date +"%H:%M:%S")"
curl --silent --user user@yandex.ru:password -T "$DBDIR/full.sql" https://webdav.yandex.ru/backup/$DAY/
echo "Copying mysql backup to YDisk ended $(date +"%d %B %Y") at $(date +"%H:%M:%S")"

# 4. VPS cleaning
# На VPS-ке места совсем мало. По этому "вчерашний" бекап удаляется в целях экономии места. 
rm -rf /home/backup/daily/`date +"%Y-%m-%d" --date="1 day ago"`

# 5. YDisk cleaning
# Последний штрих - очистка бекапов на самом ЯДиске. Хоть и есть 100 гигов, его лучше не засорять. Свободно помещаются 6 резервных копий. Конструкция имеет следующий вид:
curl --user user@yandex.ru:password -X DELETE https://webdav.yandex.ru/backup/`date +"%Y-%m-%d" --date="6 days ago"`

Всё что необходимо — скрипт выполняет. Особенностью является отсутствие каких либо дополнительных библиотек и софтин а так же отсутствие необходимости монтирования ЯДиска как файловой системы.
Немного больше информации можно найти тут

Добавить комментарий