Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Mongodump Shell Script for Cronjob
#!/bin/bash
MONGO_DATABASE="your_db_name"
APP_NAME="your_app_name"
MONGO_HOST="127.0.0.1"
MONGO_PORT="27017"
TIMESTAMP=`date +%F-%H%M`
MONGODUMP_PATH="/usr/bin/mongodump"
BACKUPS_DIR="/home/username/backups/$APP_NAME"
BACKUP_NAME="$APP_NAME-$TIMESTAMP"
# mongo admin --eval "printjson(db.fsyncLock())"
# $MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE
$MONGODUMP_PATH -d $MONGO_DATABASE
# mongo admin --eval "printjson(db.fsyncUnlock())"
mkdir -p $BACKUPS_DIR
mv dump $BACKUP_NAME
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME
rm -rf $BACKUP_NAME
@sheharyarn

This comment has been minimized.

Copy link
Owner Author

commented Jun 28, 2014

Make it executable:

chmod +x mongo_backup.sh

Schedule a Cronjob:

sudo su
crontab -e

Enter this in a new line:

# Everyday at 1 a.m.
00 01 * * * /bin/bash /home/username/scripts/mongo_backup.sh

Also See: mongo-sync

mongo-sync demo gif

@brobertsaz

This comment has been minimized.

Copy link

commented Apr 30, 2015

I used part of this to do it in a cron job:

mongodump --host 0.0.0.0 -d mydb --username mayusername --password mypassword --out /var/dbbackups/backup_$(date +%Y%m%d) && cd /var/dbbackups && tar -zcf backup_$(date +%Y%m%d).tar.gz backup_$(date +%Y%m%d)/mydb

@pascalsz

This comment has been minimized.

Copy link

commented Nov 4, 2015

Here is also a nice documentation to ensure, that the script will run only once simultaniusly:

http://wiki.bash-hackers.org/howto/mutex

@christabor

This comment has been minimized.

Copy link

commented Aug 31, 2016

This is handy! I also added an option in the output to save based on hostname, should you want to organize it in a distributed fashion.

BACKUP_NAME="$APP_NAME-$HOSTNAME-$TIMESTAMP"
@Pakirava-Datsuma

This comment has been minimized.

Copy link

commented Apr 17, 2017

according to this post of mongo DB team we can use new --archive=<name> and --gzip options to simpify script since mongo v.3.2.x

ARCHIVE_PATH="$BACKUPS_DIR/$BACKUP_NAME.gz"
$MONGODUMP_PATH --db $MONGO_DATABASE --archive=$ARCHIVE_PATH --gzip
@Hirayuki

This comment has been minimized.

Copy link

commented Jul 27, 2017

How can you make it delete dumps after 7 days ?

@dejakob

This comment has been minimized.

Copy link

commented Aug 28, 2017

Thanks man!

@vladwa

This comment has been minimized.

Copy link

commented Jan 6, 2018

Thanks, Mate!!

@bradburycode

This comment has been minimized.

Copy link

commented Aug 9, 2018

Thanks for this... really handy

@rauhmaru

This comment has been minimized.

Copy link

commented Apr 17, 2019

Great! Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.