MAX_BACKUPS=${MAX_BACKUPS} FOLDER=$(date +%Y%m%d%H%M) date=$(date +%Y%m%d) dateValue=`date -R` contentType="application/x-compressed-tar" echo "=> [Backup MONGO] started at $(date "+%Y-%m-%d %H:%M:%S")" # BACKUP_CMD="mongodump --out /backup/mongo/"'${FILENAME}'" --host ${MONGODB_HOST} --port ${MONGODB_PORT} ${MONGO_USER}${PASS_STR}${MONGO_PASS} ${EXTRA_OPTS}" if [ -n "$MONGODB_URI" ] then BACKUP_CMD="mongodump --uri=${MONGODB_URI} -o /backup_mongo/${FOLDER}/" elif [ -z "$MONGO_DB" ] then BACKUP_CMD="mongodump --host ${MONGODB_HOST} --port ${MONGODB_PORT} -o /backup_mongo/${FOLDER}/" else BACKUP_CMD="mongodump --host ${MONGODB_HOST} --port ${MONGODB_PORT} -d ${MONGO_DB} -o /backup_mongo/${FOLDER}/" fi if ${BACKUP_CMD} ;then if [ -n "$S3_BACKUP" ] then ${BACKUP_CMD} cd /backup_mongo tar -zcf ${FOLDER}.tar.gz ${FOLDER} fname=$(basename "$FOLDER".tar.gz) echo "Start sending $fname to S3" resource="/${S3_BUCKET}/${S3_LOCATION}/${date}/mongo/${fname}" stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}" signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${S3_SECRET} -binary | base64` curl -X PUT -T "${fname}" \ -H "Host: ${S3_BUCKET}.s3.amazonaws.com" \ -H "Date: ${dateValue}" \ -H "Content-Type: ${contentType}" \ -H "Authorization: AWS ${S3_KEY}:${signature}" \ https://${S3_BUCKET}.s3.amazonaws.com/${S3_LOCATION}/${date}/mongo/${fname} rm -rf ${FOLDER}.tar.gz echo "$fname has been sent to S3 successfully." fi echo "Backup succeeded" else echo "Backup failed" rmdir "/backup_mongo/${FOLDER}" fi if [ -n "$MAX_BACKUPS" ] then while [ "$(ls /backup_mongo | wc -l)" -gt "$MAX_BACKUPS" ] do FOLDER_DELETED=$(ls /backup_mongo -1 | sort | head -1) echo "Deleting backup ${BACKUP_TO_BE_DELETED}" rm -rf "/backup_mongo/${FOLDER_DELETED}" done fi