Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Run s3cmd before this script by running "s3cmd --configure"
- # Replace <USER> with mysql user, <PASS> with mysql password, <PATH OF APPLICATION CODE> Path of application code , <DBNAME> Name of the database to be backed up ,
- # <BACKUPFILENAME> with Name of the backup file for code , <S3BUCKETNAME> S3 Bucket Name
- # This script creates bucket if does not exist already
- # The filenames will be <DBNAME>20170709.sql.gz and <BACKUPFILENAME20170708.tar.gz
- # This script rotates the backups every 7 days
- today=`date --date=today "+%Y%m%d"`
- #MySql credentials
- MUSER=<USER>
- MPASS=<PASS>
- #Backup Paths
- [ -d /backups/ ] || /bin/mkdir /backups/
- BPATH="/backups/"
- CODEPATH="<PATH OF APPLICATION CODE>" #example /var/www/myapp
- #Tool
- MYSQL="$(which mysql)"
- MYSQLDUMP="$(which mysqldump)"
- TAR="$(which tar)"
- GZIP="$(which gzip)"
- #Mysql backups
- $MYSQLDUMP -u $MUSER -p$MPASS <DBNAME> | $GZIP -9 > $BPATH/<DBNAME>$today.sql.gz
- #Code backups
- $TAR -zcf $BPATH/<BACKUPFILENAME>$today.tar.gz $CODEPATH
- #Create S3 Backup if does not exist
- [ -d s3://<S3BUCKETNAME> ] || s3cmd mb s3://<S3BUCKETNAME>
- /usr/bin/s3cmd sync $BPATH s3://<S3BUCKETNAME>
- #Remove backups from disk after syncing to S3
- rm -rf $BPATH
- #Back Rotation
- s3cmd ls s3://<S3BUCKETNAME> | while read -r line;
- do
- createDate=`echo $line|awk {'print $1" "$2'}`
- createDate=`date -d"$createDate" +%s`
- olderThan=`date -d"- 7days" +%s`
- if [[ $createDate -lt $olderThan ]]
- then
- fileName=`echo $line|awk {'print $4'}`
- echo $fileName
- if [[ $fileName != "" ]]
- then
- s3cmd del "$fileName"
- fi
- fi
- done;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement