Skip to content

Instantly share code, notes, and snippets.

@fabiomontefuscolo
Created September 13, 2017 04:45
Show Gist options
  • Save fabiomontefuscolo/85d56bc42fe9db63697ca7e5cac3aa9f to your computer and use it in GitHub Desktop.
Save fabiomontefuscolo/85d56bc42fe9db63697ca7e5cac3aa9f to your computer and use it in GitHub Desktop.
#!/bin/bash
AWS_CLI="/usr/local/bin/aws"
BUCKET="backup.montefuscolo.com.br/mariadb-dump"
EXPIRES="$(date -d '+6 months' --utc +'%Y-%m-%dT%H:%M:%SZ')"
BASE_IMAGE="mariadb"
DUMP_FOLDER="/srv/backups/mariadb-dump"
DUMP_NAME="`date +%Y%m%d`"
containers=$(docker ps --filter "ancestor=mariadb" --format '{{ .Names }}')
#
# Dump das bases no container
#
for container in $containers;
do
filename="${DUMP_NAME}.sql.gz";
dumpname="${container%-1-*}";
dumpfolder="${DUMP_FOLDER}/${dumpname}"
mkdir -p "$dumpfolder"
pushd "$dumpfolder"
docker exec "$container" \
sh -c 'mysqldump -p$MYSQL_ROOT_PASSWORD --all-databases' \
| gzip -c > $filename
ln -sf $filename latest.sql.gz
popd;
done
#
# Copia novos dumps para o S3
#
$AWS_CLI s3 sync \
"$DUMP_FOLDER" "s3://${BUCKET}" \
--expires "$EXPIRES" \
--exclude "*/latest.sql*"
#
# Apaga os dumps locais antigos
#
find "$DUMP_FOLDER" \
-type f \
-mtime +15 \
-name "*.sql.gz" \
-exec rm {} \;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment