postgres_backup2 897 B

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