Advertisement
Guest User

Untitled

a guest
Sep 1st, 2017
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Database migration script for WordPress
  4. # Currently this script migrates a local db to a remote db
  5. # Requirements:
  6. # - SSH acccess using private key (no password)
  7. # - .env file must be used with the below variables populated
  8. # - .env file must also exist on the remote server with the db information populated
  9. # - ./boot-env.php must exist in the root of the repo
  10. #
  11. # Author: Jasand Pereza
  12.  
  13.  
  14. LOCAL_DB_NAME=$(php ./boot-env.php DB_NAME);
  15. LOCAL_DB_USER=$(php ./boot-env.php DB_USER);
  16. LOCAL_DB_PASS=$(php ./boot-env.php DB_PASS);
  17. LOCAL_DOMAIN_NAME=$(php ./boot-env.php LOCAL_DOMAIN_NAME);
  18. DB_TABLE_PREFIX=$(php ./boot-env.php DB_TABLE_PREFIX);
  19. DB_TABLE_PREFIX="${DB_TABLE_PREFIX/wp_/wp}";
  20. PATH_REMOTE_BOOT_ENV=$(php ./boot-env.php PATH_REMOTE_BOOT_ENV);
  21. SSH_REMOTE_HOST=$(php ./boot-env.php SSH_REMOTE_HOST);
  22. SSH_REMOTE_USER=$(php ./boot-env.php SSH_REMOTE_USER);
  23. DOMAIN_NAME_REMOTE=$(php ./boot-env.php DOMAIN_NAME_REMOTE);
  24.  
  25. echo 'exporting local database...';
  26.  
  27. mysqldump --user="$LOCAL_DB_USER" --password="$LOCAL_DB_PASS" $LOCAL_DB_NAME --result-file=tempdb.sql &>/dev/null
  28.  
  29. IMPORT_STRING="
  30. SET @from='://$LOCAL_DOMAIN_NAME';
  31. SET @to='://$DOMAIN_NAME_REMOTE';
  32. SET @prefix='$DB_TABLE_PREFIX';
  33. SET @s1 = CONCAT('UPDATE ', @prefix, '_posts SET post_content = replace(post_content, \\\"', @from,'\\\", \\\"', @to,'\\\");');
  34. SET @s2 = CONCAT('UPDATE ', @prefix, '_options SET option_value = replace(option_value, \\\"', @from,'\\\", \\\"', @to,'\\\") WHERE option_name=\\\"home\\\" OR option_name = \\\"siteurl\\\"');
  35. SET @s3 = CONCAT('UPDATE ', @prefix, '_postmeta SET meta_value = replace(meta_value, \\\"', @from,'\\\", \\\"', @to,'\\\");');
  36. SET @s4 = CONCAT('UPDATE ', @prefix, '_posts SET guid = replace(guid, \\\"', @from,'\\\", \\\"', @to,'\\\");');
  37. PREPARE s1 FROM @s1;
  38. EXECUTE s1;
  39. DEALLOCATE PREPARE s1;
  40. PREPARE s2 FROM @s2;
  41. EXECUTE s2;
  42. DEALLOCATE PREPARE s2;
  43. PREPARE s3 FROM @s3;
  44. EXECUTE s3;
  45. DEALLOCATE PREPARE s3;
  46. PREPARE s4 FROM @s4;
  47. EXECUTE s4;
  48. DEALLOCATE PREPARE s4;";
  49.  
  50.  
  51. echo 'importing local database on remote server...';
  52. echo $IMPORT_STRING > ./import.sql;
  53. ssh $SSH_REMOTE_USER@$SSH_REMOTE_HOST -t 'eval $(php '$PATH_REMOTE_BOOT_ENV');' < ./tempdb.sql &>/dev/null
  54.  
  55. echo 'running migrate script on remote sever...';
  56. ssh $SSH_REMOTE_USER@$SSH_REMOTE_HOST -t 'eval $(php '$PATH_REMOTE_BOOT_ENV');' < ./import.sql &>/dev/null
  57.  
  58. rm ./tempdb.sql
  59. rm ./import.sql
  60.  
  61. echo 'done.';
  62. echo 'NOTE: You may want check to insure the database was indeed migrated. Verbosity in this script is turned off by default';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement