After spending a few hours, I have written a small script where you can download MongoDB backup files from S3. The specialty of this script is, this can download backup files which are encrypted by using key value ( Encrypted key)
# DO NOT modify the encryption key unless if they used different key for encryption
key="<key value>"
# s3 path for MongoDB backups. You can find it from MongoDB backup logs ( You may not be able to find full s3 path from backup config file as backup file creates additional backup folder.
s3path="< S3 path >"
# Backup download location
backupLocation="/data/backups/tmp"
echo " ---------------------------------------------------------"
echo " List of backup files store in $s3path "
echo ""
echo " ---------------------------------------------------------"
echo -e " Date | Time | Size | \tName of the file"
echo " ---------------------------------------------------------"
aws s3 ls $s3path
echo " ---------------------------------------------------------"
echo " What is the database file name that you need to download ? < Please type or copy paste full name of the backup file here > "
read filename
if [ -z $filename ]
then
echo " ERROR:: No file name has entered !!! ABORTED"
exit 1
fi
echo ""
echo " $s3path$filename will be downloading to $backupLocation "
aws s3 cp $s3path$filename $backupLocation
echo ""
echo " ---------------------------------------------------------"
echo " Decrypting the file ..... "
openssl enc -d -aes-256-cbc -in $backupLocation/$filename -out $backupLocation/${filename::-4} -k $key
echo " ---------------------------------------------------------"
ls -al $backupLocation/
echo ""
echo " ---------------------------------------------------------"
echo ""
echo " Where do you want to extract the backup files ? Default location is /data/backups/tmp"
read restoreLocation
if [ -z $restoreLocation ]
then
restoreLocation="/data/backups/tmp"
fi
echo ""
echo " Extracting db files to $restoreLocation "
tar -xvf $backupLocation/${filename::-4} -C $restoreLocation
echo " ---------------------------------------------------------"
echo " list of files and directories in $restoreLocation "
ls -al $restoreLocation/
echo " ---------------------------------------------------------"
echo " Remove downloaded file : $backupLocation/$filename"
echo " ---------------------------------------------------------"
rm -f $backupLocation/$filename
echo ""
echo " #########################################################"
echo " # You have successfully downloaded backup files. Please #"
echo " # restore your files using mongorestore utility #"
echo " #########################################################"