MONGODB按时间导出导入图片

时间转换为毫秒:
http://tool.chinaz.com/Tools/unixtime.aspx

首先查出2016/01/01日期以前的文件名

/opt/mongodb/bin/mongoexport -d walls -c fs.files -q '{"uploadDate":{$gte:Date(1451577600000)}}' -f uploadDate,filename > pic

从MONGODB3.4,可以直接用

/opt/mongodb/bin/mongoexport -h192.168.0.60 -d walls -c fs.files -q ‘{“uploadDate”:{$gte:ISODate(“2017-03-05T00:00:00.000Z”),$lte:ISODate(“2017-03-22T00:00:00.000Z”)},”filename”:/2017/}’ -f uploadDate,filename > name.txt

之后在用AWSK,进行列取文件名:cat name.txt |awk -F[\”] ‘{print $10}’ > name_pic.txt

把文件按20万行,分成多个文件
split -l 200000 pic names/

用shell脚本进行批量导入
主SHELL,让另一个脚本后台导入
1.sh
for i in `ls names`
do
nohup sh 2.sh $i &
done

2.sh
导出导入
#!/bin/bash
c=0
for i in `cat names/$1`
do
/opt/mongodb/bin/mongofiles –port=27017 -d walls get $i > logs/$1.log
/opt/mongodb/bin/mongofiles –port=27066 -d walls put $i > logs/$1.log
c=`expr $c + 1`
echo $c > logs/$1
done

定时清理导出的图片,不然空间会满
*/1 * * * * /bin/find /data/backup/mo/ -cmin +1 -name “*.jpg”| xargs rm -rf
*/5 * * * * > /data/mongodb3/logs/mongodb.log