Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. ##
  4. # Script for extracting single site from multisite
  5. ##
  6.  
  7. #SETUP
  8.  
  9. #static
  10. wpdb="DATABASE NAME"
  11. dbuser="DATABASE USER"
  12. dbpass="DATABASE PASSWORD"
  13. wpdirectory=/data/wordpress/htdocs/wordpress
  14.  
  15. if [ -z "$1" ]
  16. then
  17. echo "Please provide site ID as argument"
  18. exit 1
  19. else
  20. echo "Extracting site with ID: $1"
  21. fi
  22. blogid=$1
  23. #MAIN
  24. if [ ! -d $blogid ]; then
  25. mkdir $blogid
  26. fi
  27. cd $blogid
  28.  
  29. #db - blog's related tables
  30. echo "creating sql dumps..."
  31. mysql -u $dbuser -p$dbpass -N information_schema -e "select table_name from tables where table_schema = '${wpdb}' and table_name like '%wp\_${blogid}\_%'" > tables.txt
  32. mysqldump -u $dbuser -p$dbpass $wpdb `cat tables.txt` > wordpress.sql
  33. rm tables.txt
  34. sed -i "s,wp_${blogid}_,wp_,g" wordpress.sql
  35.  
  36. #db - users & usermeta tables
  37. userids=($(mysql -u $dbuser -p$dbpass $wpdb -Bse "select distinct user_id from wp_usermeta where meta_key like 'wp\_${blogid}\_%'"))
  38. userids_cnt=${#userids[@]}
  39. where_users="ID=${userids[0]}"
  40. where_meta="user_id=${userids[0]}"
  41.  
  42. for (( i=1; i <${userids_cnt}; i++))
  43. do
  44. where_users="$where_users or ID=${userids[$i]}"
  45. where_meta="$where_meta or user_id=${userids[$i]}"
  46. done
  47.  
  48. mysqldump -u $dbuser -p$dbpass $wpdb wp_users --where "${where_users}" > wp_users.sql
  49. mysqldump -u $dbuser -p$dbpass $wpdb wp_usermeta --where "${where_meta}" > wp_usermeta.sql
  50. sed -i "s,wp_${blogid}_,wp_,g" wp_usermeta.sql
  51. #plugins
  52. echo "copying plugins...."
  53. plugins=($(mysql -u $dbuser -p$dbpass $wpdb -Bse "select * from wp_${blogid}_options where option_name='active_plugins'" | grep -Po ':"\K[^/]*'))
  54. plugins_cnt=${#plugins[@]}
  55. if [ ! -d plugins ]; then
  56. mkdir plugins
  57. fi
  58. for (( p=0; p <${plugins_cnt}; p++))
  59. do
  60. if [[ ${plugins[p]} = *hello.php* ]]; then
  61. hello=($(echo ${plugins[p]} | awk -F\" '{print $NF}'))
  62. cp -r $wpdirectory/wp-content/plugins/${hello} ./plugins/
  63. else
  64. cp -r $wpdirectory/wp-content/plugins/${plugins[p]} ./plugins/
  65. fi
  66. done
  67.  
  68. wp_theme=($(mysql -u $dbuser -p$dbpass $wpdb -Bse "select option_value from wp_${blogid}_options where option_name='template'"))
  69. if [ ! -d themes ]; then
  70. mkdir themes
  71. fi
  72. echo "copying theme $wp_theme...."
  73. cp -r $wpdirectory/wp-content/themes/$wp_theme ./themes/$wp_theme
  74.  
  75. wp_parent_theme=($(mysql -u $dbuser -p$dbpass $wpdb -Bse "select option_value from wp_${blogid}_options where option_name='template'"))
  76. if [ "$wp_theme" != "$wp_parent_theme" ]; then
  77. echo "copying parent theme $wp_parent_theme too...."
  78. cp -r $wpdirectory/wp-content/themes/$wp_parent_theme ./themes/$wp_parent_theme
  79. fi
  80.  
  81. if [ -d $wpdirectory/wp-content/mu-plugins ]; then
  82. echo "copying mu-plugins...."
  83. cp -r $wpdirectory/wp-content/mu-plugins/ ./mu-plugins/
  84. fi
  85.  
  86. #uploads
  87. echo "copying uploads folder...."
  88. if [ ! -d uploads ]; then
  89. mkdir uploads
  90. fi
  91.  
  92. # If this is really old multisite uploads used to be in wp-content/blogs.dir
  93. if [ -d $wpdirectory/wp-content/blogs.dir/${blogid}/files ]; then
  94. cp -r $wpdirectory/wp-content/blogs.dir/${blogid}/files/* ./uploads/
  95. else
  96. # If its newer site copy the files from where they should be
  97. cp -r $wpdirectory/wp-content/uploads/sites/${blogid}/ ./uploads/
  98. fi
  99. echo "Your files are in $(pwd)"
  100. echo "Done!"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement