Project

General

Profile

Actions

Backup Postgresql Database from Docker

Backup specified database

CID=$(docker ps -f name=<container_name> -q)
DBN=db
docker exec -t ${CID} pg_dump -c -U postgres ${DBN} > dump_${DBN}_`date +%Y-%m-%d"_"%H_%M_%S`.sql

Backup all

CID=$(docker ps -f name=<container_name> -q)
docker exec -t ${CID} pg_dumpall -c -U postgres > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql

Creates filename like dump_2023-12-25_09_15_26.sql

If you want a smaller file size, use gzip:

docker exec -t your-db-container pg_dumpall -c -U postgres | gzip > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.gz

If you want even smaller file sizes use brotli or bzip2:

docker exec -t your-db-container pg_dumpall -c -U postgres | brotli --best > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br

or

docker exec -t your-db-container pg_dumpall -c -U postgres | bzip2 --best > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.bz2

Restore your databases

cat your_dump.sql | docker exec -i your-db-container psql -U postgres

Updated by Viacheslav Anzhiganov about 2 months ago · 4 revisions