Guest User

Untitled

a guest
Sep 27th, 2018
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Get absolute path to main directory
  4. ABSPATH=$(cd "${0%/*}" 2>/dev/null; echo "${PWD}/${0##*/}")
  5. SOURCE_DIR=`dirname "${ABSPATH}"`
  6.  
  7. #######################################################################
  8.  
  9. # Check for required binaries
  10. if ! which mysql > /dev/null; then
  11. echo "mysql command not found in path, please correct and run again"
  12. exit 1
  13. fi
  14. if ! which rsync > /dev/null; then
  15. echo "rsync command not found in path, please correct and run again"
  16. exit 1
  17. fi
  18.  
  19. # Get command line parameters
  20. USAGE() {
  21. echo "Usage:"
  22. echo " $0 [-u <db user>] [-p <db pass> | -P] [-h <db host>] -d <database> -r <portal root> -s <backup directory> [-f] [-v]"
  23. echo
  24. echo "Option -P forces MySQL to ask for the password on the standard input."
  25. echo "Option -f skips confirmation prompt"
  26. echo "Option -v add verbose output"
  27. exit $1
  28. }
  29. ARG_DBUSER=""
  30. ARG_DBPASS=""
  31. ARG_DBUSEPASS=""
  32. ARG_DBHOST="localhost"
  33. ARG_DB=""
  34. ARG_DESTDIR=""
  35. ARG_SRCDIR=""
  36. ARG_FORCE=""
  37. ARG_VERBOSE=""
  38. while getopts 'u:p:Ph:d:r:s:fv' OPTION ; do
  39. case "${OPTION}" in
  40. u)
  41. ARG_DBUSER="${OPTARG}"
  42. ;;
  43.  
  44. p)
  45. ARG_DBPASS="${OPTARG}"
  46. ;;
  47.  
  48. P)
  49. ARG_DBUSEPASS="yes"
  50. ;;
  51.  
  52. h)
  53. ARG_DBHOST="${OPTARG}"
  54. ;;
  55.  
  56. d)
  57. ARG_DB="${OPTARG}"
  58. ;;
  59.  
  60. r)
  61. ARG_DESTDIR="${OPTARG}"
  62. ;;
  63.  
  64. s)
  65. ARG_SRCDIR="${OPTARG}"
  66. ;;
  67.  
  68. f)
  69. ARG_FORCE="yes"
  70. ;;
  71.  
  72. v)
  73. ARG_VERBOSE="yes"
  74. ;;
  75.  
  76. \?)
  77. USAGE 1
  78. ;;
  79. esac
  80. done
  81.  
  82. # Check command line parameters
  83. if [ -z "${ARG_DESTDIR}" ]; then
  84. echo "$0: missing required option -- r"
  85. USAGE 1
  86. elif [ ! -d "${ARG_DESTDIR}" ]; then
  87. echo "Incorrect destination directory, directory does not exist"
  88. USAGE 1
  89. fi
  90. if [ -z "${ARG_SRCDIR}" ]; then
  91. echo "$0: missing required option -- s"
  92. USAGE 1
  93. elif [ ! -d "${ARG_SRCDIR}/database" -o ! -d "${ARG_SRCDIR}/filesystem" ]; then
  94. echo "Incorrect source directory, must be the folder containing the database and filesystem subfolders"
  95. USAGE 1
  96. fi
  97.  
  98. # Prepare MySQL command line parameters
  99. MYSQL_OPTIONS=""
  100. if [ -n "${ARG_DBUSER}" ]; then
  101. MYSQL_OPTIONS="${MYSQL_OPTIONS} -u${ARG_DBUSER}"
  102. fi
  103. if [ -n "${ARG_DBHOST}" ]; then
  104. MYSQL_OPTIONS="${MYSQL_OPTIONS} -h${ARG_DBHOST}"
  105. fi
  106. if [ -z "${ARG_DB}" ]; then
  107. echo "$0: missing required option -- d"
  108. USAGE 1
  109. fi
  110. if [ -n "${ARG_DBUSEPASS}" ]; then
  111. MYSQL_OPTIONS="${MYSQL_OPTIONS} -p"
  112. elif [ -n "${ARG_DBPASS}" ]; then
  113. MYSQL_OPTIONS="${MYSQL_OPTIONS} -p${ARG_DBPASS}"
  114. fi
  115.  
  116. if [ -z "${ARG_FORCE}" ]; then
  117. echo "About to delete database and restore backup from ${ARG_SRCDIR} into ${ARG_DESTDIR}"
  118. echo "using database ${ARG_DB}@${ARG_DBHOST}"
  119. echo -n "Press <ENTER> to continue or <CTRL>-C to abort... "
  120. read
  121. echo
  122. fi
  123.  
  124. # Deploy filesystemystem
  125. [ -n "${ARG_VERBOSE}" ] && echo -n "Deploying filesystem... "
  126. rsync -rlpt --delete "${ARG_SRCDIR}/filesystem/" "${ARG_DESTDIR}"
  127. mkdir -p "${ARG_DESTDIR}/htdocs/typo3temp"
  128. [ -n "${ARG_VERBOSE}" ] && echo "done"
  129.  
  130. # Empty Database
  131. [ -n "${ARG_VERBOSE}" ] && echo "Emptying database... "
  132. mysql ${MYSQL_OPTIONS} -e "DROP DATABASE IF EXISTS \`${ARG_DB}\`"
  133. mysql ${MYSQL_OPTIONS} -e "CREATE DATABASE \`${ARG_DB}\`"
  134.  
  135. # Deploy database
  136. [ -n "${ARG_VERBOSE}" ] && echo "Deploying database... "
  137. (
  138. cd "${ARG_SRCDIR}/database"
  139.  
  140. for SQL in structure.sql data_*.sql full_*.sql; do
  141. if [ -r "${SQL}" ]; then
  142. [ -n "${ARG_VERBOSE}" ] && echo -n " - ${SQL}... "
  143. mysql ${MYSQL_OPTIONS} "${ARG_DB}" < "${SQL}"
  144. [ -n "${ARG_VERBOSE}" ] && echo "done"
  145. fi
  146. done
  147. ); [ $? -eq 0 ]
Add Comment
Please, Sign In to add comment