В сегодняшней заметке рассмотрим простой пример создания архива сайта и дампа базы данных и их копирование на сервис Яндекс Диск. Решение по бекапу тривиальное: файлы паковать архиватором, базу дампить 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"`
Всё что необходимо — скрипт выполняет. Особенностью является отсутствие каких либо дополнительных библиотек и софтин а так же отсутствие необходимости монтирования ЯДиска как файловой системы.
Немного больше информации можно найти тут