BASH — Бекап сайтов и баз MySQL на AWS S3

Скрипт находит в заданной директории все папки, и поочередно их архивирует, копирует на S3 Bucket и удаляет локально. Также получает список всех MySQL баз, исключая системные, поочередно их архивирует, отправляет на S3 Bucket и удаляет локально.

#!/bin/bash

DATE=$(date +%d-%m-%Y)
WEB_PATH="/var/www/html/"

SITE_LIST="$(ls $WEB_PATH)"
DB_LIST="$(mysql -u root -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)")"
S3_BUCKET="s3://artem-services"

################################ BACKUP SITES ################################

for SITE in $SITE_LIST
do
	if [ -f "/tmp/$SITE.tar.gz" ] # Check if there is an old archive left
	then
		rm /tmp/$SITE.tar.gz
	fi

	tar -zcvf /tmp/$SITE.tar.gz --directory="$WEB_PATH/$SITE/" ./
	aws s3 cp /tmp/$SITE.tar.gz $S3_BUCKET/$DATE/SITE/$SITE.tar.gz
	rm /tmp/$SITE.tar.gz
done

############################### BACKUP DATABASES ##############################

for DB in $DB_LIST
do
	if [ -f "/tmp/$DB.gz" ] # Check if there is an old archive left
	then
		rm /tmp/$DB.gz
	fi

	mysqldump -u root $DB | gzip -c > /tmp/$DB.gz
	aws s3 cp /tmp/$DB.gz $S3_BUCKET/$DATE/DATABASE/$DB.gz
	rm /tmp/$DB.gz
done
5 1 vote
Рейтинг статьи

Метки: Метки

Подписаться
Уведомление о
guest
0 комментариев
Inline Feedbacks
View all comments