52 lines
1.9 KiB
Bash
52 lines
1.9 KiB
Bash
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
|