定义备份目录和文件名, 把该内容保存在此文件夹的位置,然后命名为。xxx.sh ,一会儿会执行这个文件, 使用命令 sudo sh xxx.sh 执行完后,发现该文件夹中多了一个压缩包,即是备份压缩好的mongodb数据库,具体如何使用shell脚本自动备份压缩mongodb数据库(mongodb数据库备份), 直接上代码:
#!/bin/bash # 定义备份目录和文件名, 把该内容保存在此文件夹的位置,然后命名为。xxx.sh ,一会儿会执行这个文件 BACKUP_DIR=/www/backup/database # 数据库名称 -------------------需要设置--------------- DATANAME="username" # 数据库密码------------------ -需要设置--------------- PASSWORD="password" # 需要读取的表,如果全部,为空即可。--------需要设置--------------- table_array=(a,b) # 数据库端口 -------------------------------需要设置--------------- database_hostandport=127.0.0.1:27017 # 备份到的文件夹如果已存在,则删除 if [ ! -d $BACKUP_DIR/$DATANAME ]; then # 不存在 echo "Folder $folder created." else # 存在,先删除 echo "Folder $folder already exists. already deleted" rm -rf $BACKUP_DIR/$DATANAME fi BACKUP_FILE="${DATANAME}_$(date +%Y%m%d%H%M%S).tar.gz" # 循环读取数组中的每个元素 # 获取数组长度 array_length=${#table_array[@]} if [ $array_length -eq 0 ]; then # 全备份 mongodump -h $database_hostandport -u $DATANAME --password $PASSWORD --authenticationDatabase $DATANAME -d $DATANAME -o $BACKUP_DIR else for i in "${table_array[@]}"; do # 执行备份命令 , --excludeCollection 后接要忽略的集合,或使用 -c 后接指定要导出的集合,一条指令只能一个 mongodump -h $database_hostandport -u $DATANAME --password $PASSWORD --authenticationDatabase $DATANAME -d $DATANAME -c $i -o $BACKUP_DIR done fi # 压缩 tar -zcvf $BACKUP_FILE $DATANAME # 删除压缩前的文件夹 rm -rf $BACKUP_DIR/$DATANAME
把文件保存起来,在此目录 下执行 ,sudo sh xxx.sh 即可, 或是直接执行 sh ./xxx.sh