为Mongo和Mysql各写了一个备份的Shell

cover-image

####查早读的同学越来越肆无忌惮了.
好吧.说到昨天给VPS搞全自动备份的事情, 还忘记了数据库备份的导出, 先来说说mysql数据库的备份脚本. 这一段是抄来的, 看起来linux shell也挺好玩的嘛…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash

#uncomment this for debug
#set -x

host='localhost'
user='USERNAME'
pass='PASSWORD'
dbs=('db_name_1' 'db_name_2' 'db_name_3')
dir='/backup'
todaydir="$dir/`date +%Y%m%d`"

mkdir -p $todaydir

for db in ${dbs[@]}; do
mysqldump --add-drop-database -u"$user" -p"$pass" -h"$host" -B $db > "$todaydir/$db.dump.sql"
done

#remove directories modified 15 days ago
find "$dir" -mindepth 1 -maxdepth 1 -type d -mtime +15 -exec rm -rf {} \;

再把这个sh放进crontab里面就搞定了

然后再根据这个YY出了mongodb的备份脚本

1
2
3
4
5
6
7
user='USERNAME'
pass='PASSWORD'
dir='/backup'
todaydir="$dir/`date +%Y%m%d`/mongodb"

mkdir -p $todaydir
mongodump -u"$user" -p"$pass" -o"$todaydir"

对于没有启用auth的mongodb用户可以这样三句话搞定

1
2
3
todaydir="$dir/`date +%Y%m%d`/mongodb"
mkdir -p $todaydir
mongodump -o"$todaydir"

也放进crontab里面就搞定了.
dropboxd会把放在/root/Dropbox目录下面的文件夹自动上传到dropbox空间, 配置好dropbox的同学只要创建一个软链接就ok了.

1
ln -s /backup/ /root/Dropbox/backup/