mysqld_backup 882 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/bin/bash
  2. [ $# -ne 5 ] && exit 6
  3. DBHOST=${1}
  4. DBUSER=${2}
  5. DBPASS=${3}
  6. DATABASE=${4}
  7. BACKUP_DIR=${5}
  8. BUG=`echo "${DATABASE}" | sed 's/ //g' | grep -i "^information_schema$"`
  9. [ -n "${BUG}" ] && exit 0
  10. HOTCOPY=`which mysqlhotcopy`
  11. [ -z "${HOTCOPY}" ] && exit
  12. [ -z "${BACKUP_DIR}" -o "${BACKUP_DIR}" == "/" ] && exit
  13. [ -e "${BACKUP_DIR}" ] && rm -rf "${BACKUP_DIR}"
  14. [ ! -e "${BACKUP_DIR}" ] && mkdir -p "${BACKUP_DIR}" >/dev/null
  15. use_ip=$(echo "${DBHOST}" | egrep "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$")
  16. if [ -z "${use_ip}" ]; then
  17. OPTS="-S ${DBHOST}"
  18. else
  19. OPTS="-h ${DBHOST}"
  20. fi
  21. $HOTCOPY -u "${DBUSER}" -p "${DBPASS}" ${OPTS} --allowold -q "${DATABASE}" "${BACKUP_DIR}" >/dev/null
  22. [ $? -ne 0 ] && exit 100
  23. tar -czf "${BACKUP_DIR}-${DATABASE}.tgz" "${BACKUP_DIR}/${DATABASE}" >/dev/null 2>&1
  24. ret=$?
  25. rm -rf "${BACKUP_DIR}" >/dev/null
  26. exit ${ret}