Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. if [ ! -n "$1" ]; then
  4. echo "linode instance name has to be specified"
  5. exit;
  6. fi
  7.  
  8. instance=${1}
  9.  
  10. echo '######### CONFIGS #########'
  11. # nginx
  12. if [ -f /etc/nginx/nginx.conf ]; then
  13. s3cmd sync /etc/nginx/nginx.conf s3://backups/instances/${instance}/etc/
  14. fi
  15.  
  16. # mysql
  17. if [ -f /etc/mysql/my.conf ]; then
  18. s3cmd sync /etc/mysql/my.conf s3://backups/instances/${instance}/etc/
  19. elif [ -f /etc/mysql/mysql.cnf ]; then
  20. s3cmd sync /etc/mysql/mysql.cnf s3://backups/instances/${instance}/etc/
  21. fi
  22.  
  23. # sphinx
  24. if [ -f /etc/sphinxsearch/sphinx.conf ]; then
  25. s3cmd sync /etc/sphinxsearch/sphinx.conf s3://backups/instances/${instance}/etc/
  26. fi
  27.  
  28. # supervisord
  29. if [ -d /etc/supervisor/conf.d ]; then
  30. s3cmd sync /etc/supervisor/conf.d s3://backups/instances/${instance}/etc/supervisor/
  31. fi
  32.  
  33. # forever
  34. if which forever; then
  35. name="forever.list"
  36. forever list > /tmp/${name} && s3cmd sync /tmp/${name} s3://backups/instances/${instance}/etc/ && rm /tmp/${name}
  37. fi
  38.  
  39. echo '######### VIRTUALHOSTS #########'
  40. # nginx
  41. if [ -d /etc/nginx/sites-available ]; then
  42. s3cmd sync /etc/nginx/sites-available/ s3://backups/instances/${instance}/virtualhosts/
  43. fi
  44.  
  45. # apache
  46. if [ -d /etc/apache2/sites-available ]; then
  47. s3cmd sync /etc/apache2/sites-available/ s3://backups/instances/${instance}/virtualhosts/
  48. fi
  49.  
  50.  
  51. echo '######### CRONTAB #########'
  52. name=$(whoami)
  53. crontab -l > /tmp/${name} && s3cmd sync /tmp/${name} s3://backups/instances/${instance}/crontabs/ && rm /tmp/${name}
  54.  
  55. echo '######### DBs #########'
  56. TIMESTAMP=$(date +"%F")
  57. BACKUP_DIR="/tmp/$TIMESTAMP"
  58. MYSQL_USER=#######
  59. MYSQL_PASSWORD=#######
  60.  
  61. EXCLUDED_TABLES=(
  62. yii_links_partitioned
  63. yii_links_domains
  64. yii_unique_domains_backup
  65. html
  66. attraction_attraction_distances
  67. )
  68.  
  69. mkdir -p "$BACKUP_DIR"
  70.  
  71. databases=`mysql --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)"`
  72.  
  73. for db in $databases; do
  74. IGNORED_TABLES_STRING=''
  75. for TABLE in "${EXCLUDED_TABLES[@]}"
  76. do :
  77. IGNORED_TABLES_STRING+=" --ignore-table=$db.${TABLE}"
  78. done
  79. mysqldump --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db ${IGNORED_TABLES_STRING} | gzip > "$BACKUP_DIR/$db.gz"
  80. done
  81.  
  82. s3cmd sync "$BACKUP_DIR" s3://backups/instances/${instance}/db/
  83.  
  84. rm -rf "$BACKUP_DIR"
  85.  
  86.  
  87. echo '######### WWW FOLDER #########'
  88. s3cmd sync --recursive --preserve \
  89. --exclude 'html/' \
  90. --exclude '.git/' \
  91. --exclude 'vendor/*' \
  92. --exclude 'runtime/*' \
  93. --exclude 'assets/*' \
  94. --exclude 'web/assets/*' \
  95. --exclude 'db-local.php' \
  96. --exclude 'main-local.php' \
  97. --exclude 'wp-config.local.php' \
  98. --exclude 'pma/' \
  99. --exclude 'rma/' \
  100. --exclude '*.fail.html' \
  101. --exclude 'failed_html/*' \
  102. --exclude 'error_log/*' \
  103. --exclude 'data/*.mmdb' \
  104. --exclude 'data/feeds.xml' \
  105. --exclude 'node_modules/*' \
  106. --exclude 'framework/*' \
  107. --exclude 'requirements/*' \
  108. --exclude 'somesite.com/images/*' \
  109. --include 'assets/*.php' \
  110. --include 'assets/*.gitignore' \
  111. /var/www \
  112. s3://backups/instances/${instance}/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement