脚本说明: 按天备份mongodb的数据,然后压缩,保留6天的数据
[root@localhost ~]# cat /root/test.sh
mongo 127.0.0.1:27018/admin -u root -p Zytest6699 << EOF
show dbs
exit;
EOF
[root@localhost ~]# cat mongoback.sh
#/bin/bash
source /etc/profile
user="root"
pass="Zytest6699"
port="27018"
Cmd="/usr/local/mongodb/bin/mongodump"
Bakdir=/data/backup/mongobackup
DATENOW=`date +%Y%m%d`
DATETIME=`date +%H%M`
DIR="/data/backup/mongobackup/$DATENOW"
dbs="$(/bin/sh /root/test.sh|sed '1,2d'|grep -v "local"|awk '{ print $1 }'|xargs -n4)"
Dump="$Cmd -uroot -p$pass --port=$port -d"
###创建备份数据目录
if [ ! -d $DIR ]
then
mkdir -p $DIR
fi
##备份数据库并压缩(采用双层for循环)
for n in $dbs
do
$Dump $n -o $Bakdir
Mdbs="$(/bin/ls -l $Bakdir|sed '1,2d'|awk '{print $NF}')"
cd $Bakdir
for N in $Mdbs
do
/bin/tar zcf $DIR/${DATETIME}.${N}.tar.gz ./$N
/bin/rm -fr $N
done
done
##删除6天前的日志文件##
oldDate=$(date -d "-6 days" "+%Y%m%d")
cd /data/backup/mongobackup
for folder in $(ls -d */)
do
[ ${folder%/*} -lt $oldDate ] && rm -rf $folder
done
[root@localhost ~]# ll /data/backup/mongobackup/20180202 总用量 28
-rw-r--r-- 1 root root 1348 2月 2 17:19 1719.admin.tar.gz
-rw-r--r-- 1 root root 15958 2月 2 17:19 1719.imapi.tar.gz
-rw-r--r-- 1 root root 635 2月 2 17:19 1719.imRoom.tar.gz
-rw-r--r-- 1 root root 3522 2月 2 17:19 1719.tigase.tar.gz
[root@localhost 20180202]# tar xf 1719.admin.tar.gz
[root@localhost 20180202]# ls
1719.admin.tar.gz 1719.imapi.tar.gz 1719.imRoom.tar.gz 1719.tigase.tar.gz admin
[root@localhost 20180202]# ll admin/*
-rw-r--r-- 1 root root 246 2月 2 17:19 admin/system.indexes.bson
-rw-r--r-- 1 root root 2432 2月 2 17:19 admin/system.users.bson
-rw-r--r-- 1 root root 238 2月 2 17:19 admin/system.users.metadata.json
-rw-r--r-- 1 root root 45 2月 2 17:19 admin/system.version.bson
-rw-r--r-- 1 root root 114 2月 2 17:19 admin/system.version.metadata.json