Guest User

Untitled

a guest
Mar 27th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. PROD_ENV=""
  4. STAGE_ENV=""
  5. INT_ENV=""
  6.  
  7. TIMEFORMAT=%R
  8. db_data_reg="cat app/etc/env.php | grep -A 10 \"'db'\""
  9. try() {
  10. "$@" || { echo "command failed, with exit code $?"; exit 1; }
  11. }
  12. function execute_ssh {
  13. ssh -A -t -q -o "StrictHostKeyChecking=no" -o "ServerAliveCountMax=60" -o "ServerAliveInterval=10" "$1" "$2"
  14. }
  15. function run {
  16. echo "Preparing db variables"
  17. s_db_data=$(execute_ssh "${SOURCE_ENV}" "${db_data_reg}")
  18. s_db_host=$(echo "$s_db_data" | tr "," "\n" | grep host | cut -d "'" -f 4)
  19. s_db_name=$(echo "$s_db_data" | tr "," "\n" | grep dbname | cut -d "'" -f 4)
  20. s_db_user=$(echo "$s_db_data" | tr "," "\n" | grep user | cut -d "'" -f 4)
  21. s_db_pass=$(echo "$s_db_data" | tr "," "\n" | grep pass | cut -d "'" -f 4)
  22. d_db_data=$(execute_ssh "${DST_ENV}" "${db_data_reg}")
  23. d_db_host=$(echo "$d_db_data" | tr "," "\n" | grep host | cut -d "'" -f 4)
  24. d_db_name=$(echo "$d_db_data" | tr "," "\n" | grep dbname | cut -d "'" -f 4)
  25. d_db_user=$(echo "$d_db_data" | tr "," "\n" | grep user | cut -d "'" -f 4)
  26. d_db_pass=$(echo "$d_db_data" | tr "," "\n" | grep pass | cut -d "'" -f 4)
  27. db_dump_core="mysqldump -h "$d_db_host" --databases "$d_db_name" --tables core_config_data > /tmp/"${d_db_name}_core.sql""
  28. s_do_dump="mysqldump -h "$s_db_host" --user="$s_db_user" --password="$s_db_pass" --single-transaction --triggers "$s_db_name" > /tmp/"$s_db_name".sql"
  29. s_do_sed="sed -i \"s/DEFINER[ ]*=[ ]*[^*]*\*/\*/g\" /tmp/"$s_db_name".sql"
  30.  
  31. echo "Starting database dump"
  32. try execute_ssh "${SOURCE_ENV}" "${s_do_dump}"
  33. time try execute_ssh "${SOURCE_ENV}" "${s_do_sed}"
  34. echo ""; echo "Copying database"
  35. try execute_ssh "${DST_ENV}" "rm -rf /tmp/$s_db_name.sql"
  36. try execute_ssh "${SOURCE_ENV}" "rsync -e \"ssh -q -o \"StrictHostKeyChecking=no\"\" --progress /tmp/"$s_db_name".sql "$DST_ENV":/tmp/"
  37. echo ""; echo "Backup core_config_data, restore db and core on destination env"
  38. try execute_ssh "$DST_ENV" "${db_dump_core}"
  39. time try execute_ssh "$DST_ENV" "mysql -h "$d_db_host" $d_db_name < /tmp/${s_db_name}.sql"
  40. try execute_ssh "$DST_ENV" "mysql -h "$d_db_host" $d_db_name < /tmp/${d_db_name}_core.sql"
  41. echo ""; echo "Syncing media"
  42. try execute_ssh "${SOURCE_ENV}" "rsync -e \"ssh -q -o \"StrictHostKeyChecking=no\"\" -ru pub/media/ "$DST_ENV":pub/media/"
  43. echo ""; echo "Flushing cache"
  44. try execute_ssh "$DST_ENV" "php bin/magento cache:flush"
  45.  
  46. }
  47.  
  48. case "$1" in
  49. integration)
  50. SOURCE_ENV="$STAGE_ENV"
  51. DST_ENV="$INT_ENV"
  52. run
  53. ;;
  54. stage)
  55. SOURCE_ENV="$PROD_ENV"
  56. DST_ENV="$STAGE_ENV"
  57. run
  58. ;;
  59.  
  60. *)
  61. echo ""
  62. echo "This script will sync integration (from stage) or stage (from prod)"
  63. echo $"Usage: $0 {integration|stage}"
  64. echo ""
  65. exit 1
  66. esac
Add Comment
Please, Sign In to add comment