1
0

postgres_backup1 938 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/bin/bash
  2. [ $# -ne 5 ] && exit 6
  3. PGDUMP=`which pg_dump`
  4. DB_NAME=${1}
  5. BACKUP_DIR=${2}
  6. USE_SU=${3}
  7. HOST=${4}
  8. USER=${5}
  9. PG_OPTS1=
  10. PG_OPTS2=
  11. [ -z "$DB_NAME" ] && exit
  12. [ -n "${USER}" ] && PG_OPTS1="-U ${USER}"
  13. [ -n "${HOST}" ] && PG_OPTS2="-h ${HOST}"
  14. [ ! -e "${BACKUP_DIR}/${DB_NAME}" ] && mkdir -p "${BACKUP_DIR}/${DB_NAME}"
  15. chown -R postgres:root "${BACKUP_DIR}"
  16. chmod 750 -R "${BACKUP_DIR}"
  17. find "${BACKUP_DIR}" -type f -exec chmod 640 {} \;
  18. if [ "${USE_SU}" == "no" ]; then
  19. $PGDUMP ${PG_OPTS1} ${PG_OPTS2} -f "${BACKUP_DIR}/${DB_NAME}/${DB_NAME}.sql" $DB_NAME
  20. ret=$?
  21. else
  22. su postgres -c "$PGDUMP ${PG_OPTS1} ${PG_OPTS2} -f \"${BACKUP_DIR}/${DB_NAME}/${DB_NAME}.sql\" $DB_NAME"
  23. ret=$?
  24. fi
  25. if [ ${ret} -eq 0 ]; then
  26. FNAME="${BACKUP_DIR}-${DB_NAME}.tgz"
  27. tar c -z -f $FNAME "${BACKUP_DIR}/${DB_NAME}/${DB_NAME}.sql" >/dev/null 2>&1
  28. ret=$?
  29. fi
  30. rm -rf "${BACKUP_DIR}"
  31. exit ${ret}