Скрипт находит в заданной директории все папки, и поочередно их архивирует, копирует на 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