Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- if [ ! -n "$1" ]; then
- echo "linode instance name has to be specified"
- exit;
- fi
- instance=${1}
- echo '######### CONFIGS #########'
- # nginx
- if [ -f /etc/nginx/nginx.conf ]; then
- s3cmd sync /etc/nginx/nginx.conf s3://backups/instances/${instance}/etc/
- fi
- # mysql
- if [ -f /etc/mysql/my.conf ]; then
- s3cmd sync /etc/mysql/my.conf s3://backups/instances/${instance}/etc/
- elif [ -f /etc/mysql/mysql.cnf ]; then
- s3cmd sync /etc/mysql/mysql.cnf s3://backups/instances/${instance}/etc/
- fi
- # sphinx
- if [ -f /etc/sphinxsearch/sphinx.conf ]; then
- s3cmd sync /etc/sphinxsearch/sphinx.conf s3://backups/instances/${instance}/etc/
- fi
- # supervisord
- if [ -d /etc/supervisor/conf.d ]; then
- s3cmd sync /etc/supervisor/conf.d s3://backups/instances/${instance}/etc/supervisor/
- fi
- # forever
- if which forever; then
- name="forever.list"
- forever list > /tmp/${name} && s3cmd sync /tmp/${name} s3://backups/instances/${instance}/etc/ && rm /tmp/${name}
- fi
- echo '######### VIRTUALHOSTS #########'
- # nginx
- if [ -d /etc/nginx/sites-available ]; then
- s3cmd sync /etc/nginx/sites-available/ s3://backups/instances/${instance}/virtualhosts/
- fi
- # apache
- if [ -d /etc/apache2/sites-available ]; then
- s3cmd sync /etc/apache2/sites-available/ s3://backups/instances/${instance}/virtualhosts/
- fi
- echo '######### CRONTAB #########'
- name=$(whoami)
- crontab -l > /tmp/${name} && s3cmd sync /tmp/${name} s3://backups/instances/${instance}/crontabs/ && rm /tmp/${name}
- echo '######### DBs #########'
- TIMESTAMP=$(date +"%F")
- BACKUP_DIR="/tmp/$TIMESTAMP"
- MYSQL_USER=#######
- MYSQL_PASSWORD=#######
- EXCLUDED_TABLES=(
- yii_links_partitioned
- yii_links_domains
- yii_unique_domains_backup
- html
- attraction_attraction_distances
- )
- mkdir -p "$BACKUP_DIR"
- databases=`mysql --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)"`
- for db in $databases; do
- IGNORED_TABLES_STRING=''
- for TABLE in "${EXCLUDED_TABLES[@]}"
- do :
- IGNORED_TABLES_STRING+=" --ignore-table=$db.${TABLE}"
- done
- mysqldump --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db ${IGNORED_TABLES_STRING} | gzip > "$BACKUP_DIR/$db.gz"
- done
- s3cmd sync "$BACKUP_DIR" s3://backups/instances/${instance}/db/
- rm -rf "$BACKUP_DIR"
- echo '######### WWW FOLDER #########'
- s3cmd sync --recursive --preserve \
- --exclude 'html/' \
- --exclude '.git/' \
- --exclude 'vendor/*' \
- --exclude 'runtime/*' \
- --exclude 'assets/*' \
- --exclude 'web/assets/*' \
- --exclude 'db-local.php' \
- --exclude 'main-local.php' \
- --exclude 'wp-config.local.php' \
- --exclude 'pma/' \
- --exclude 'rma/' \
- --exclude '*.fail.html' \
- --exclude 'failed_html/*' \
- --exclude 'error_log/*' \
- --exclude 'data/*.mmdb' \
- --exclude 'data/feeds.xml' \
- --exclude 'node_modules/*' \
- --exclude 'framework/*' \
- --exclude 'requirements/*' \
- --exclude 'somesite.com/images/*' \
- --include 'assets/*.php' \
- --include 'assets/*.gitignore' \
- /var/www \
- s3://backups/instances/${instance}/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement