Skip to content

Instantly share code, notes, and snippets.

@fabiomontefuscolo
Created July 5, 2016 12:20
Show Gist options
  • Save fabiomontefuscolo/88e5d4a681d790d01b6b287268eb4761 to your computer and use it in GitHub Desktop.
Save fabiomontefuscolo/88e5d4a681d790d01b6b287268eb4761 to your computer and use it in GitHub Desktop.
Cron to backup Postgres databases from docker
#!/bin/bash
BACKUP_FOLDER=/data/sql-backup
BACKUP_FILE_NAME="`date +%Y%m%d`.sql.gz"
EXEC="docker exec -u postgres -i postgis"
databases=$(
$EXEC psql -l -A -t | awk -F\| '!/^(postgres|template)/{ print $1 }'
)
#
# Dump dos bancos
#
for db in $databases;
do
folder="${BACKUP_FOLDER%%/}/$db"
filename="$folder/$BACKUP_FILE_NAME"
mkdir -p "$folder"
$EXEC pg_dump -Fp "$db" | gzip > $filename
done
#
# Remove backups mais antigos que 3 meses, menos os que foram criados no domingo
#
find $BACKUP_FOLDER -mtime +90 -name "*.sql.gz" \
| while read backup;
do
modified_date=`stat -c %Y "$backup"`
day_of_week=`date --date="@$modified_date" +%u`
if ! [ "$day_of_week" = "7" ];
then
rm "$backup"
fi
done;
#
# Remove backups mais antigos que 1 ano
#
find $BACKUP_FOLDER -mtime +365 -name "*.sql.gz" -delete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment