mirror of
https://github.com/prodrigestivill/docker-postgres-backup-local.git
synced 2026-07-04 17:28:03 +00:00
Added support for multiple databases. Closes #1
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
Backup PostgresSQL to local filesystem with periodic backups and rotate backups.
|
Backup PostgresSQL to local filesystem with periodic backups and rotate backups.
|
||||||
Based on [schickling/postgres-backup-s3](https://hub.docker.com/r/schickling/postgres-backup-s3/).
|
Based on [schickling/postgres-backup-s3](https://hub.docker.com/r/schickling/postgres-backup-s3/).
|
||||||
|
It can backup multiple databases from the same host by setting all databases in `POSTGRES_DB` separated by comas or spaces.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|||||||
@@ -34,19 +34,24 @@ KEEP_DAYS=$BACKUP_KEEP_DAYS
|
|||||||
KEEP_WEEKS=`expr $((($BACKUP_KEEP_WEEKS * 7) + 1))`
|
KEEP_WEEKS=`expr $((($BACKUP_KEEP_WEEKS * 7) + 1))`
|
||||||
KEEP_MONTHS=`expr $((($BACKUP_KEEP_MONTHS * 31) + 1))`
|
KEEP_MONTHS=`expr $((($BACKUP_KEEP_MONTHS * 31) + 1))`
|
||||||
|
|
||||||
#Initialize filename vers and dirs
|
#Initialize dirs
|
||||||
DFILE="$BACKUP_DIR/daily/$POSTGRES_DB-`date +%Y%m%d-%H%M%S`.sql.gz"
|
|
||||||
WFILE="$BACKUP_DIR/weekly/$POSTGRES_DB-`date +%G%V`.sql.gz"
|
|
||||||
MFILE="$BACKUP_DIR/monthly/$POSTGRES_DB-`date +%Y%m`.sql.gz"
|
|
||||||
mkdir -p "$BACKUP_DIR/daily/" "$BACKUP_DIR/weekly/" "$BACKUP_DIR/monthly/"
|
mkdir -p "$BACKUP_DIR/daily/" "$BACKUP_DIR/weekly/" "$BACKUP_DIR/monthly/"
|
||||||
|
|
||||||
#Create dump
|
#Loop all databases
|
||||||
echo "Creating dump of ${POSTGRES_DB} database from ${POSTGRES_HOST}..."
|
for DB in $(echo $POSTGRES_DB | tr , " "); do
|
||||||
pg_dump -f "$DFILE" $POSTGRES_HOST_OPTS $POSTGRES_DB
|
#Initialize filename vers
|
||||||
|
DFILE="$BACKUP_DIR/daily/$DB-`date +%Y%m%d-%H%M%S`.sql.gz"
|
||||||
|
WFILE="$BACKUP_DIR/weekly/$DB-`date +%G%V`.sql.gz"
|
||||||
|
MFILE="$BACKUP_DIR/monthly/$DB-`date +%Y%m`.sql.gz"
|
||||||
|
|
||||||
#Copy (hardlink) for each entry
|
#Create dump
|
||||||
ln -vf "$DFILE" "$WFILE"
|
echo "Creating dump of ${DB} database from ${POSTGRES_HOST}..."
|
||||||
ln -vf "$DFILE" "$MFILE"
|
pg_dump -f "$DFILE" $POSTGRES_HOST_OPTS $DB
|
||||||
|
|
||||||
|
#Copy (hardlink) for each entry
|
||||||
|
ln -vf "$DFILE" "$WFILE"
|
||||||
|
ln -vf "$DFILE" "$MFILE"
|
||||||
|
done
|
||||||
|
|
||||||
#Clean old files
|
#Clean old files
|
||||||
find "$BACKUP_DIR/daily" -maxdepth 1 -mtime +$KEEP_DAYS -name "$POSTGRES_DB-*.sql*" -exec rm -rf '{}' ';'
|
find "$BACKUP_DIR/daily" -maxdepth 1 -mtime +$KEEP_DAYS -name "$POSTGRES_DB-*.sql*" -exec rm -rf '{}' ';'
|
||||||
|
|||||||
Reference in New Issue
Block a user