mirror of
https://github.com/prodrigestivill/docker-postgres-backup-local.git
synced 2026-06-30 07:18:04 +00:00
Allow to dump with -Fd fixing issue #28
This commit is contained in:
@@ -21,6 +21,7 @@ ENV POSTGRES_DB="**None**" \
|
|||||||
POSTGRES_EXTRA_OPTS="-Z9" \
|
POSTGRES_EXTRA_OPTS="-Z9" \
|
||||||
SCHEDULE="@daily" \
|
SCHEDULE="@daily" \
|
||||||
BACKUP_DIR="/backups" \
|
BACKUP_DIR="/backups" \
|
||||||
|
BACKUP_SUFFIX=".sql.gz" \
|
||||||
BACKUP_KEEP_DAYS=7 \
|
BACKUP_KEEP_DAYS=7 \
|
||||||
BACKUP_KEEP_WEEKS=4 \
|
BACKUP_KEEP_WEEKS=4 \
|
||||||
BACKUP_KEEP_MONTHS=6 \
|
BACKUP_KEEP_MONTHS=6 \
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ ENV POSTGRES_DB="**None**" \
|
|||||||
POSTGRES_EXTRA_OPTS="-Z9" \
|
POSTGRES_EXTRA_OPTS="-Z9" \
|
||||||
SCHEDULE="@daily" \
|
SCHEDULE="@daily" \
|
||||||
BACKUP_DIR="/backups" \
|
BACKUP_DIR="/backups" \
|
||||||
|
BACKUP_SUFFIX=".sql.gz" \
|
||||||
BACKUP_KEEP_DAYS=7 \
|
BACKUP_KEEP_DAYS=7 \
|
||||||
BACKUP_KEEP_WEEKS=4 \
|
BACKUP_KEEP_WEEKS=4 \
|
||||||
BACKUP_KEEP_MONTHS=6 \
|
BACKUP_KEEP_MONTHS=6 \
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ Most variables are the same as in the [official postgres image](https://hub.dock
|
|||||||
| env variable | description |
|
| env variable | description |
|
||||||
|--|--|
|
|--|--|
|
||||||
| BACKUP_DIR | Directory to save the backup at. Defaults to `/backups`. |
|
| BACKUP_DIR | Directory to save the backup at. Defaults to `/backups`. |
|
||||||
|
| BACKUP_SUFFIX | Filename suffix to save the backup. Defaults to `.sql.gz`. |
|
||||||
| BACKUP_KEEP_DAYS | Number of daily backups to keep before removal. Defaults to `7`. |
|
| BACKUP_KEEP_DAYS | Number of daily backups to keep before removal. Defaults to `7`. |
|
||||||
| BACKUP_KEEP_WEEKS | Number of weekly backups to keep before removal. Defaults to `4`. |
|
| BACKUP_KEEP_WEEKS | Number of weekly backups to keep before removal. Defaults to `4`. |
|
||||||
| BACKUP_KEEP_MONTHS | Number of monthly backups to keep before removal. Defaults to `6`. |
|
| BACKUP_KEEP_MONTHS | Number of monthly backups to keep before removal. Defaults to `6`. |
|
||||||
|
|||||||
@@ -63,20 +63,32 @@ mkdir -p "${BACKUP_DIR}/daily/" "${BACKUP_DIR}/weekly/" "${BACKUP_DIR}/monthly/"
|
|||||||
#Loop all databases
|
#Loop all databases
|
||||||
for DB in ${POSTGRES_DBS}; do
|
for DB in ${POSTGRES_DBS}; do
|
||||||
#Initialize filename vers
|
#Initialize filename vers
|
||||||
DFILE="${BACKUP_DIR}/daily/${DB}-`date +%Y%m%d-%H%M%S`.sql.gz"
|
DFILE="${BACKUP_DIR}/daily/${DB}-`date +%Y%m%d-%H%M%S`${BACKUP_SUFFIX}"
|
||||||
WFILE="${BACKUP_DIR}/weekly/${DB}-`date +%G%V`.sql.gz"
|
WFILE="${BACKUP_DIR}/weekly/${DB}-`date +%G%V`${BACKUP_SUFFIX}"
|
||||||
MFILE="${BACKUP_DIR}/monthly/${DB}-`date +%Y%m`.sql.gz"
|
MFILE="${BACKUP_DIR}/monthly/${DB}-`date +%Y%m`${BACKUP_SUFFIX}"
|
||||||
#Create dump
|
#Create dump
|
||||||
echo "Creating dump of ${DB} database from ${POSTGRES_HOST}..."
|
echo "Creating dump of ${DB} database from ${POSTGRES_HOST}..."
|
||||||
pg_dump -f "${DFILE}" ${POSTGRES_HOST_OPTS} ${DB}
|
pg_dump -f "${DFILE}" ${POSTGRES_HOST_OPTS} ${DB}
|
||||||
#Copy (hardlink) for each entry
|
#Copy (hardlink) for each entry
|
||||||
ln -vf "${DFILE}" "${WFILE}"
|
if [ -d "${DFILE}" ]; then
|
||||||
ln -vf "${DFILE}" "${MFILE}"
|
WFILENEW="${WFILE}-new"
|
||||||
|
MFILENEW="${MFILE}-new"
|
||||||
|
rm -rf "${WFILENEW}" "${MFILENEW}"
|
||||||
|
mkdir "${WFILENEW}" "${MFILENEW}"
|
||||||
|
ln -f "${DFILE}/"* "${WFILENEW}/"
|
||||||
|
ln -f "${DFILE}/"* "${MFILENEW}/"
|
||||||
|
rm -rf "${WFILE}" "${MFILE}"
|
||||||
|
mv -v "${WFILENEW}" "${WFILE}"
|
||||||
|
mv -v "${MFILENEW}" "${MFILE}"
|
||||||
|
else
|
||||||
|
ln -vf "${DFILE}" "${WFILE}"
|
||||||
|
ln -vf "${DFILE}" "${MFILE}"
|
||||||
|
fi
|
||||||
#Clean old files
|
#Clean old files
|
||||||
echo "Cleaning older than ${KEEP_DAYS} days for ${DB} database from ${POSTGRES_HOST}..."
|
echo "Cleaning older than ${KEEP_DAYS} days for ${DB} database from ${POSTGRES_HOST}..."
|
||||||
find "${BACKUP_DIR}/daily" -maxdepth 1 -mtime +${KEEP_DAYS} -name "${DB}-*.sql*" -exec rm -rf '{}' ';'
|
find "${BACKUP_DIR}/daily" -maxdepth 1 -mtime +${KEEP_DAYS} -name "${DB}-*${BACKUP_SUFFIX}" -exec rm -rf '{}' ';'
|
||||||
find "${BACKUP_DIR}/weekly" -maxdepth 1 -mtime +${KEEP_WEEKS} -name "${DB}-*.sql*" -exec rm -rf '{}' ';'
|
find "${BACKUP_DIR}/weekly" -maxdepth 1 -mtime +${KEEP_WEEKS} -name "${DB}-*${BACKUP_SUFFIX}" -exec rm -rf '{}' ';'
|
||||||
find "${BACKUP_DIR}/monthly" -maxdepth 1 -mtime +${KEEP_MONTHS} -name "${DB}-*.sql*" -exec rm -rf '{}' ';'
|
find "${BACKUP_DIR}/monthly" -maxdepth 1 -mtime +${KEEP_MONTHS} -name "${DB}-*${BACKUP_SUFFIX}" -exec rm -rf '{}' ';'
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "SQL backup created successfully"
|
echo "SQL backup created successfully"
|
||||||
|
|||||||
Reference in New Issue
Block a user