Skip to content

Instantly share code, notes, and snippets.

@osv
Created July 14, 2015 18:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save osv/8f6fc7edef7baa787da4 to your computer and use it in GitHub Desktop.
Save osv/8f6fc7edef7baa787da4 to your computer and use it in GitHub Desktop.
mongo dump and send via scp to remote
#!/bin/bash
USERNAME="<username>"
PASSWORD="<password>"
DBNAME="<mongo db mae>"
# export dump pattern
FILE_NAME="mongo-dump"
# scp save directory
REMOTEDIR="user@foo.bar:"
DUMPDIR="/webapp/data/dump"
TMPDIR=$(mktemp -d /tmp/export.XXXXXXXXXX)
myrotate() {
# usage: myrotate /path/to/map-0.jpg
local dest=$1
local dest_dir=$(dirname "$dest")
local dest_prefix=$(basename "${dest%-*}")
local dest_ext=${dest##*.}
local n
printf "%s\n" "$dest_dir/${dest_prefix}"-*."$dest_ext" |
sort -V -r |
while IFS= read -r file; do
n=${file##*-}
n=${n%.*}
echo mv "$file" "$dest_dir/${dest_prefix}-$((n+1)).$dest_ext"
done
}
# dump mongodb db to "meteor" db
mongodump -h 127.0.0.1 -d $DBNAME --username=$USERNAME --password=$PASSWORD -o $TMPDIR/mongo/
tar -C $TMPDIR -cvzf "$DUMPDIR/${FILE_NAME}.tar.gz" .
echo "cleanning tmp files"
rm -rf $TMPDIR
echo "Done exporting"
pushd $DUMPDIR
# rotate dumps
for i in {8..0}; do
this=${FILE_NAME}-$i.tar.gz
[ -e $this ] && mv $this ${FILE_NAME}-$((i+1)).tar.gz;
done
mv ${FILE_NAME}.tar.gz ${FILE_NAME}-0.tar.gz
# save last dump
scp ${FILE_NAME}-0.tar.gz "$REMOTEDIR"
popd
@evilwithin93rus
Copy link

nice useful!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment