Advertisement
Guest User

Untitled

a guest
Oct 4th, 2015
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.39 KB | None | 0 0
  1.     #!/bin/bash
  2.     #
  3.  
  4.     set -e
  5.  
  6.     export PATH="$PATH:/usr/local/bin"
  7.  
  8.     usage()
  9.     {
  10.     cat << EOF
  11.     usage: $0 options
  12.  
  13.     This Script Dumps All Mongo Databases, Tars Them And Sends Them To Am Amazon S3 Bucket
  14.  
  15.     OPTIONS:
  16.        -k      AWS Access Key
  17.        -s      AWS Secret Key
  18.        -r      S3 Region
  19.        -b      S3 Bucket Name
  20.        -f      S3 Folder Name / Tree
  21.     EOF
  22.     }
  23.  
  24.     AWS_ACCESS_KEY=
  25.     AWS_SECRET_KEY=
  26.     S3_REGION=
  27.     S3_BUCKET=
  28.     S3_FOLDER=
  29.  
  30.     while getopts “ht:k:s:r:b:f:” OPTION
  31.     do
  32.       case $OPTION in
  33.         h)
  34.           usage
  35.           exit 1
  36.           ;;
  37.         k)
  38.           AWS_ACCESS_KEY=$OPTARG
  39.           ;;
  40.         s)
  41.           AWS_SECRET_KEY=$OPTARG
  42.           ;;
  43.         r)
  44.           S3_REGION=$OPTARG
  45.           ;;
  46.         b)
  47.           S3_BUCKET=$OPTARG
  48.           ;;
  49.         f)
  50.           S3_FOLDER=$OPTARG
  51.           ;;
  52.         ?)
  53.           usage
  54.           exit
  55.         ;;
  56.       esac
  57.     done
  58.  
  59.     if [[ -z $AWS_ACCESS_KEY ]] || [[ -z $AWS_SECRET_KEY ]] || [[ -z $S3_REGION ]] || [[ -z $S3_BUCKET ]] || [[ -z $S3_FOLDER ]]
  60.     then
  61.       usage
  62.       exit 1
  63.     fi
  64.  
  65.     # Get CWD
  66.     DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
  67.    echo $DIR
  68.    DATE=$(date -u "+%F-%H%M%S")
  69.    FILE_NAME="backup-$DATE"
  70.    ARCHIVE_NAME="$FILE_NAME.tar.gz"
  71.  
  72.    # Dump All Databases And Tar Them
  73.    mongodump --out $DIR/backup/$FILE_NAME
  74.    tar -C $DIR/backup/ -zcvf $DIR/backup/$ARCHIVE_NAME $FILE_NAME/
  75.  
  76.    #Remove Temp Files
  77.    rm -r $DIR/backup/$FILE_NAME
  78.  
  79.    #Build S3 Request + Signature
  80.    HEADER_DATE=$(date -u "+%a, %d %b %Y %T %z")
  81.    CONTENT_MD5=$(openssl dgst -md5 -binary $DIR/backup/$ARCHIVE_NAME | openssl enc -base64)
  82.    CONTENT_TYPE="application/x-tar"
  83.    STRING_TO_SIGN="PUT\n$CONTENT_MD5\n$CONTENT_TYPE\n$HEADER_DATE\n/$S3_BUCKET/$S3_FOLDER/$ARCHIVE_NAME"
  84.    SIGNATURE=$(echo -e -n $STRING_TO_SIGN | openssl dgst -sha1 -binary -hmac $AWS_SECRET_KEY | openssl enc -base64)
  85.  
  86.    #Upload To S3
  87.    curl -X PUT \
  88.    --header "Host: $S3_BUCKET.s3.amazonaws.com" \
  89.    --header "Date: $HEADER_DATE" \
  90.    --header "content-type: $CONTENT_TYPE" \
  91.    --header "Content-MD5: $CONTENT_MD5" \
  92.    --header "Authorization: AWS $AWS_ACCESS_KEY:$SIGNATURE" \
  93.    --upload-file $DIR/backup/$ARCHIVE_NAME \
  94.    https://$S3_BUCKET.s3.amazonaws.com/$S3_FOLDER/$ARCHIVE_NAME
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement