I recently looked for a way to automatically backup Mongodb database nightly. There are some nice bash scripts out there but I wanted to just do it in a cron job. After some struggling with taring the huge db directory I came up with this:
0 0 * * * /bin/bash -l -c 'cd /my_project_path && 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
The first part is the cron for midnight daily:
0 0 * * *
Then it cd's into the rails project directory and gets ready to run bash:
/bin/bash -l -c 'cd /my_project_path
Then mongodump adding the date on the dump directory:
mongodump --host 0.0.0.0 -d mydb --username mayusername --password mypassword --out /var/dbbackups/backup_$(date +\%Y\%m\%d)
And finally, cd into that directory and tar (compress) the directory:
cd /var/dbbackups && tar -zcf backup_$(date +\%Y\%m\%d).tar.gz backup_$(date +\%Y\%m\%d)/mydb
Notice that I added the database name on the directory to tar. Mongodump will create the backup_20150429/mydb directory with all of the .bson files in it.