Advertisement
Guest User

Untitled

a guest
Oct 4th, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. #!/usr/bin/env bash
  2. # -*- encoding: utf-8 -*-
  3.  
  4. echo "[$(date -I)] dumping db"
  5.  
  6. PROJECT_ROOT=<project_root>
  7. DOT_ENV=$PROJECT_ROOT/<project_name>/.env
  8.  
  9. #: Ensure in existance of file with db connection settings
  10. if [ -f $DOT_ENV ]; then
  11. echo "[+] '.env' exists"
  12. else
  13. echo "[-] '.env' exists"
  14. exit 1
  15. fi
  16.  
  17. #: Extract database connection infromation from '.env' file
  18. DB_NAME=$( awk -F '=' '/DB_NAME/ {print $2}' $DOT_ENV | sed -e "s/'//g" )
  19. DB_USER=$( awk -F '=' '/DB_USER/ {print $2}' $DOT_ENV | sed -e "s/'//g" )
  20. DB_HOST=$( awk -F '=' '/DB_HOST/ {print $2}' $DOT_ENV | sed -e "s/'//g" )
  21. DB_PASSWORD=$( awk -F '=' '/DB_PASSWORD/ {print $2}' $DOT_ENV | sed -e "s/'//g" )
  22.  
  23. if $( mysql -u $DB_USER -p$DB_PASSWORD -h $DB_HOST -e"quit" 2>/dev/null ); then
  24. echo "[+] db connection established with following credentials:
  25. name: $DB_NAME
  26. user: $DB_USER
  27. pswd: $DB_PASSWORD
  28. host: $DB_HOST"
  29. else
  30. echo "[-] db connection established. Verify credentials."
  31. exit 1
  32. fi
  33.  
  34. #: Ensure db existence
  35. #: Make array from whitespace delimeted string of databases
  36. DATABASES_LIST=(
  37. $( mysql -u $DB_USER -p$DB_PASSWORD -h $DB_HOST -e"SHOW DATABASES" 2>/dev/null )
  38. )
  39. #echo "${DATABASES_LIST[@]}"
  40. #: Perform chech
  41. if [[ " ${DATABASES_LIST[@]} " =~ " ${DB_NAME} " ]] ; then
  42. echo "[+] db '$DB_NAME' exists"
  43. else
  44. echo "[-] db '$DB_NAME' exists"
  45. exit 1
  46. fi
  47.  
  48. #: Create directory for dump files
  49. DUMP_ROOT=<dump_root>
  50. if $( mkdir -p $DUMP_ROOT 2>/dev/null ); then
  51. echo "[+] '$DUMP_ROOT' exists"
  52. else
  53. echo "[-] '$DUMP_ROOT' exists"
  54. exit 1
  55. fi
  56.  
  57. #: Make database dump
  58. DUMP_SQL_PATH=$DUMP_ROOT/dump-$(date -I).sql
  59. dump_result=$(
  60. mysqldump -u $DB_USER -p$DB_PASSWORD -h $DB_HOST $DB_NAME > $DUMP_SQL_PATH \
  61. 2>/dev/null
  62. )
  63. if $dump_result; then
  64. echo "[+] '$DUMP_SQL_PATH' created"
  65. else
  66. echo "[-] '$DUMP_SQL_PATH' created"
  67. exit 1
  68. fi
  69.  
  70. #: Create test database
  71. DB_NAME_TEST="${DB_NAME}_dump_test"
  72. create_test_db_result=$(
  73. mysql -u $DB_USER -p$DB_PASSWORD -h $DB_HOST -e"CREATE DATABASE $DB_NAME_TEST" 2>/dev/null
  74. )
  75. if $create_test_db_result; then
  76. echo "[+] db '$DB_NAME_TEST' created"
  77. else
  78. echo "[-] db '$DB_NAME_TEST' created"
  79. exit 1
  80. fi
  81.  
  82. #: Load dump to test database
  83. dump_loading_result=$(
  84. mysql -u $DB_USER -p$DB_PASSWORD -h $DB_HOST $DB_NAME_TEST < $DUMP_SQL_PATH \
  85. 2>/dev/null
  86. )
  87. if $dump_loading_result; then
  88. echo "[+] '$DUMP_SQL_PATH' loaded to '$DB_NAME_TEST'"
  89. else
  90. echo "[-] '$DUMP_SQL_PATH' loaded to '$DB_NAME_TEST'"
  91. exit 1
  92. fi
  93.  
  94. #: Retrieve and compare tables list from both databases
  95. #: Get an array from mysql ouput
  96. DB_TABLES_SOURCE=($(
  97. mysql -u $DB_USER -p$DB_PASSWORD -h $DB_HOST $DB_NAME -e"SHOW TABLES;" \
  98. 2>/dev/null
  99. ))
  100. #: Slice first element as it just hello string describing commmand
  101. DB_TABLES_SOURCE=("${DB_TABLES_SOURCE[@]:1}")
  102. #: Convert array back to string for string comparision
  103. DB_TABLES_SOURCE="${DB_TABLES_SOURCE[@]}"
  104.  
  105. DB_TABLES_TEST=($(
  106. mysql -u $DB_USER -p$DB_PASSWORD -h $DB_HOST $DB_NAME_TEST -e"SHOW TABLES;" \
  107. 2>/dev/null
  108. ))
  109. DB_TABLES_TEST=("${DB_TABLES_TEST[@]:1}")
  110. DB_TABLES_TEST="${DB_TABLES_TEST[@]}"
  111.  
  112. if [ "$DB_TABLES_SOURCE" == "$DB_TABLES_TEST" ]; then
  113. echo "[+] dump file verified"
  114. else
  115. echo "[-] dump file corrupted"
  116. fi
  117.  
  118. #: Drop test database
  119. drop_test_db_result=$(
  120. mysql -u $DB_USER -p$DB_PASSWORD -h $DB_HOST -e"DROP DATABASE $DB_NAME_TEST;" 2>/dev/null
  121. )
  122. if $drop_test_db_result; then
  123. echo "[+] db '$DB_NAME_TEST' deleted"
  124. else
  125. echo "[-] db '$DB_NAME_TEST' deleted"
  126. exit 1
  127. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement