Skip to content

Instantly share code, notes, and snippets.

@dginhoux
Last active October 29, 2022 12:07
Show Gist options
  • Select an option

  • Save dginhoux/3e1f0706e2e2d7aa2134e03efd98db61 to your computer and use it in GitHub Desktop.

Select an option

Save dginhoux/3e1f0706e2e2d7aa2134e03efd98db61 to your computer and use it in GitHub Desktop.
FROM alpine:3.16.2
MAINTAINER "docker@ginhoux.net"
LABEL maintainer="docker@ginhoux.net"
LABEL image="ginhoux.net/pgdump-cron"
LABEL tag="v5-alpine3.16.2"
LABEL description=""
RUN apk add --no-cache postgresql-client tzdata && \
echo "Europe/Paris" > /etc/timezone
ENTRYPOINT ["crond", "-f"]
#!/bin/sh
export dumpdate="$( date "+%Y%m%d_%H%M" )"
# export dumpdate="$( date "+%Y%m%d" )"
export dbport="5432"
export dbuser="pgdump"
export dbpassword="EEE"
function backup () {
dbhostname="$1"
dbuser="$2"
dbpassword="$3"
dbname="$4"
dbschema="$5"
export PGPASSWORD="${dbpassword}"
if /usr/bin/pg_isready --host=${dbhostname} --port=${dbport}; then
if [ ! -d /pgdump/${dbhostname} ]; then mkdir /pgdump/${dbhostname}; fi
echo ---------------
echo ---------------
echo --------------- START FULL ${dbhostname} ${dbname} ${dbschema}
/usr/bin/pg_dump --verbose --no-comments --username=${dbuser} --port=${dbport} --dbname=${dbname} --host=${dbhostname} --format=p --schema=${dbschema} --inserts | gzip -7 > /pgdump/${dbhostname}/${dbname}_${dbschema}_${dumpdate}_full.sql.gz
echo --------------- END FULL ${dbhostname} ${dbname} ${dbschema}
echo --------------- START STRUCTURE ${dbhostname} ${dbname} ${dbschema}
/usr/bin/pg_dump --verbose --no-comments --username=${dbuser} --port=${dbport} --dbname=${dbname} --host=${dbhostname} --encoding=utf8 --format=p --schema=${dbschema} --inserts --schema-only | gzip -7 > /pgdump/${dbhostname}/${dbname}_${dbschema}_${dumpdate}_structure.sql.gz
echo --------------- END STRUCTURE ${dbhostname} ${dbname} ${dbschema}
echo --------------- START DATA ${dbhostname} ${dbname} ${dbschema}
/usr/bin/pg_dump --verbose --no-comments --username=${dbuser} --port=${dbport} --dbname=${dbname} --host=${dbhostname} --encoding=utf8 --format=p --schema=${dbschema} --inserts --data-only | gzip -7 > /pgdump/${dbhostname}/${dbname}_${dbschema}_${dumpdate}_data.sql.gz
echo --------------- END DATA ${dbhostname} ${dbname} ${dbschema}
echo ---------------
echo ---------------
fi
}
backup "authelia-ginhoux-app_pgsql" "${dbuser}" "${dbpassword}" "authelia" "authelia"
backup "authelia-ginhoux-cloud_pgsql" "${dbuser}" "${dbpassword}" "authelia" "authelia"
backup "authelia-ginhoux-net_pgsql" "${dbuser}" "${dbpassword}" "authelia" "authelia"
backup "authelia-ginhoux-org_pgsql" "${dbuser}" "${dbpassword}" "authelia" "authelia"
backup "authelia-mystack-fr_pgsql" "${dbuser}" "${dbpassword}" "authelia" "authelia"
backup "authelia-orchestre-elyps-fr_pgsql" "${dbuser}" "${dbpassword}" "authelia" "authelia"
backup "git-user_pgsql" "${dbuser}" "${dbpassword}" "gitea" "gitea"
backup "git-system_pgsql" "${dbuser}" "${dbpassword}" "gitea" "gitea"
backup "grafana_pgsql" "${dbuser}" "${dbpassword}" "grafana" "grafana"
backup "mail_pgsql" "${dbuser}" "${dbpassword}" "mail" "mail"
backup "mail_pgsql" "${dbuser}" "${dbpassword}" "roundcube" "public"
backup "metabase_pgsql" "${dbuser}" "${dbpassword}" "metabase" "metabase"
backup "n8n_pgsql" "${dbuser}" "${dbpassword}" "n8n" "n8n"
backup "nextcloud_pgsql" "${dbuser}" "${dbpassword}" "nextcloud" "nextcloud"
# backup "netbox_pgsql" "${dbuser}" "${dbpassword}" "netbox" "netbox"
backup "pdns-internal_pgsql" "${dbuser}" "${dbpassword}" "authorative" "authorative"
backup "pdns-internal_pgsql" "${dbuser}" "${dbpassword}" "pdnsadmin" "pdnsadmin"
backup "pdns-external_pgsql" "${dbuser}" "${dbpassword}" "authorative" "authorative"
backup "pdns-external_pgsql" "${dbuser}" "${dbpassword}" "pdnsadmin" "pdnsadmin"
backup "opensol_pgsql" "${dbuser}" "${dbpassword}" "opensol" "opensol"
backup "statping_pgsql" "${dbuser}" "${dbpassword}" "statping" "statping"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment