备份脚本(文件系统,Mysql,Oracle,openldap,MongoBackup,scpcommon)


一、FileBackup.sh

#! /bin/bash # This is a ShellScript For Auto File Backup # Power by wei # 2024-03-25 #准备工作:先在home目录下新建filebackup目录,再到filebackup目录新建logs目录 #上传到filebackup目录下,更改权限chmod 700 FileBackup.sh #设置备份程序文件,其所在目录,备份天数 File_NAME_Mart='xx1 xx2 xx3' File_DIR=/home FileBackupDay=60 #先配置好无密码登陆备份服务器 #设置备份服务器用户名、IP地址、scpcommom位置,注意 scpcommon 的File_NAME_Mart 应该和这里的一样 scpuser='' scpip=127.0.0.1 scpcommon_dir=/home/scpcommon scpport=22 #设置程序备份路径,日志备份路径 FileBackup_DIR=/home/filebackup FileBackup_DIR_logs=/home/filebackup/logs #以下一般无需更改 for File_NAME in $File_NAME_Mart do #新建程序备份文件夹,程序备份日志文件夹 FileBackup_DIR_=$FileBackup_DIR/$File_NAME FileBackup_DIR_logs_=$FileBackup_DIR_logs/$File_NAME if [ -d $FileBackup_DIR_ ] then echo " [ $FileBackup_DIR_ ] The FileBackup_DIR_ is exists, Can't Mkdir!" else mkdir $FileBackup_DIR/$File_NAME echo " [ $FileBackup_DIR_ ] Mkdir the FileBackup_DIR_ Success!" fi if [ -d $FileBackup_DIR_logs_ ] then echo " [ $FileBackup_DIR_logs_ ] The FileBackup_DIR_logs_ is exists, Can't Mkdir!" else mkdir $FileBackup_DIR_logs/$File_NAME echo " [ $FileBackup_DIR_logs_ ] Mkdir the FileBackup_DIR_logs_ Success!" fi #设置程序备份文件名,程序备份日志名 NewFile=$FileBackup_DIR_/"$File_NAME"backup$(date +"%Y.%m.%d-*").tar.gz DumpFile=$FileBackup_DIR_/"$File_NAME"backup$(date +"%Y.%m.%d-%H.%M.%S").tar OldFile=$FileBackup_DIR_/"$File_NAME"backup$(date +"%Y.%m.%d-*" --date=''$FileBackupDay' days ago').tar.gz DumpLogsFile=$FileBackup_DIR_logs_/"$File_NAME"logsbackup$(date +"%Y.%m.%d-%H.%M.%S").log OldLogsFile=$FileBackup_DIR_logs_/"$File_NAME"logsbackup$(date +"%Y.%m.%d-*" --date=''$FileBackupDay' days ago').log #记录备份开始时间 echo " ---start--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile cd $File_DIR #删除旧程序文件,日志文件 find $FileBackup_DIR_logs_ -ctime +$FileBackupDay -name "*.log" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 find $FileBackup_DIR_ -ctime +$FileBackupDay -name "*.tar.gz" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 #开始备份程序 if [ -f $NewFile ] then echo " [ $NewFile ] The File Backup File is exists, Can't Backup!" >> $DumpLogsFile else tar -cf $DumpFile $File_NAME >> $DumpLogsFile 2>&1 gzip $DumpFile >> $DumpLogsFile 2>&1 echo " [ $NewFile ] File Backup Success!" >> $DumpLogsFile fi #备份结束 echo " ---end--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile done #判断是否有用户名 if [ -n "$scpuser" ] then #远程登录并执行本地scpcommon文件 ssh -p ${scpport} $scpuser@${scpip} "$(<$scpcommon_dir)" for File_NAME in $File_NAME_Mart do scp_DumpLogsFile=$FileBackup_DIR_logs/$File_NAME/"$File_NAME"logsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$FileBackup_DIR_logs/$File_NAME/"$File_NAME"logsbackup_scp$(date +"%Y.%m.%d-*" --date=''$FileBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧的日志文件 find $FileBackup_DIR_logs/$File_NAME -ctime +$FileBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 #传输应用备份文件 scp -P ${scpport} $FileBackup_DIR/$File_NAME/"$File_NAME"backup$(date +"%Y.%m.%d-*").tar.gz $scpuser@$scpip:./scp_filebackup/$File_NAME/ echo " scp $File_NAME Backup File success! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile done else for File_NAME in $File_NAME_Mart do scp_DumpLogsFile=$FileBackup_DIR_logs/$File_NAME/"$File_NAME"logsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$FileBackup_DIR_logs/$File_NAME/"$File_NAME"logsbackup_scp$(date +"%Y.%m.%d-*" --date=''$FileBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧的日志文件 find $FileBackup_DIR_logs/$File_NAME -ctime +$FileBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 echo " scp_user or scp_ip not set! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile done fi

二、MysqlBackup.sh

# !/bin/bash # This is a ShellScript For Auto Mysql Backup # Power by wei # 2024-03-25 #准备工作:先在home目录下新建mysqlbackup目录,再到mysqlbackup目录新建logs目录 #上传到mysqlbackup目录下,更改权限chmod 700 MysqlBackup.sh #设置数据库名,数据库登陆名,密码,数据库IP地址,备份天数 MysqlDBMart='xx1 xx2 xx3' MysqlDBUser=root MysqlDBUserPasswd=root MysqlIP=127.0.0.1 MysqlBackupDay=100 MysqlPort=3306 #先配置好无密码登陆备份服务器 #设置备份服务器用户名、IP地址、scpcommom位置,注意 scpcommon 的MysqlDBMart 应该和这里的一样 scpuser='' scpip=127.0.0.1 scpcommon_dir=/home/scpcommon scpport=22 #设置数据库BIN路径,主备份文件路径,主日志文件路径 MysqlDBBinPath=/usr/local/mysql/bin MysqlBackupPath=/home/mysqlbackup MysqlLogsPath=/home/mysqlbackup/logs #以下一般无需更改 for MysqlDB in $MysqlDBMart do #新建数据库备份文件夹,日志文件夹 MysqlDBFile=$MysqlBackupPath/$MysqlDB MysqlDBLogsFile=$MysqlLogsPath/$MysqlDB if [ -d $MysqlDBFile ] then echo " [ $MysqlDBFile ] The MysqlDBFile is exists, Can't Mkdir!" else mkdir $MysqlBackupPath/$MysqlDB echo " [ $MysqlDBFile ] Mkdir the MysqlDBFile Success!" fi if [ -d $MysqlDBLogsFile ] then echo " [ $MysqlDBLogsFile ] The MysqlDBLogsFile is exists, Can't Mkdir!" else mkdir $MysqlLogsPath/$MysqlDB echo " [ $MysqlDBLogsFile ] Mkdir the MysqlDBLogsFile Success!" fi #设置备份数据文件名,日志文件名 NewFile=$MysqlDBFile/"$MysqlDB"backup$(date +"%Y.%m.%d-*").sql.gz DumpFile=$MysqlDBFile/"$MysqlDB"backup$(date +"%Y.%m.%d-%H.%M.%S").sql OldFile=$MysqlDBFile/"$MysqlDB"backup$(date +"%Y.%m.%d-*" --date=''$MysqlBackupDay' days ago').sql.gz DumpLogsFile=$MysqlDBLogsFile/"$MysqlDB"logsbackup$(date +"%Y.%m.%d-%H.%M.%S").log OldLogsFile=$MysqlDBLogsFile/"$MysqlDB"logsbackup$(date +"%Y.%m.%d-*" --date=''$MysqlBackupDay' days ago').log #记录备份开始时间 echo " ---start--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile #删除旧数据文件,日志文件 find $MysqlDBLogsFile -ctime +$MysqlBackupDay -name "*.log" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 find $MysqlDBFile -ctime +$MysqlBackupDay -name "*.sql.gz" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 #开始备份数据 if [ -f $NewFile ] then echo " [ $NewFile ] The MySql Backup File is exists, Can't Backup!" >> $DumpLogsFile elif [ -z $MysqlIP ] then $MysqlDBBinPath/mysqldump -u $MysqlDBUser -p$MysqlDBUserPasswd --opt $MysqlDB > $DumpFile else $MysqlDBBinPath/mysqldump -h $MysqlIP -u $MysqlDBUser -p$MysqlDBUserPasswd -P$MysqlPort --opt $MysqlDB > $DumpFile fi gzip $DumpFile >> $DumpLogsFile 2>&1 echo " [ $DumpFile ] MySql Backup Success!" >> $DumpLogsFile #备份结束 echo " ---end--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile done #判断是否有用户名 if [ -n "$scpuser" ] then #远程登录并执行本地scpcommon文件 ssh -p ${scpport} $scpuser@${scpip} "$(<$scpcommon_dir)" for MysqlDB in $MysqlDBMart do scp_DumpLogsFile=$MysqlLogsPath/$MysqlDB/"$MysqlDB"logsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$MysqlLogsPath/$MysqlDB/"$MysqlDB"logsbackup_scp$(date +"%Y.%m.%d-*" --date=''$MysqlBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧日志文件 find $MysqlLogsPath/$MysqlDB -ctime +$MysqlBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 #传输数据库备份文件 scp -P ${scpport} $MysqlBackupPath/$MysqlDB/"$MysqlDB"backup$(date +"%Y.%m.%d-*").sql.gz $scpuser@$scpip:./scp_mysqlbackup/$MysqlDB/ echo " scp $MysqlDB Backup File success! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile done else for MysqlDB in $MysqlDBMart do scp_DumpLogsFile=$MysqlLogsPath/$MysqlDB/"$MysqlDB"logsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$MysqlLogsPath/$MysqlDB/"$MysqlDB"logsbackup_scp$(date +"%Y.%m.%d-*" --date=''$MysqlBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧日志文件 find $MysqlLogsPath/$MysqlDB -ctime +$MysqlBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 echo " scp_user or scp_ip not set! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile done fi

三、OracleBackup.sh

#!/bin/bash # This is a ShellScript For Auto Oracle Backup # Power by wei # 2024-03-25 #准备工作:现在home目录下新建oraclebackup目录,再到oraclebackup目录新建logs目录 #上传到oraclebackup目录下,更改权限chmod 700 OracleBackup.sh #---start---复制oracle用户环境变量到此 export PATH export TMP=/home/oracle/tmp export TMPDIR=$TMP export ORACLE_BASE=/u01/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0 export ORACLE_SID=dcyx export ORACLE_TERM=xterm export PATH=$ORACLE_HOME/bin:$PATH export PATH=/usr/sbin:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin:$PATH export PATH=$ORACLE_BASE/common/oracle/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$CLASSPATH #---end--- #设置表空间用户名,数据库登陆名,密码,备份天数 OracleDBMart='xx1 xx2 xx3' OracleDBName=orcl OracleDBUser=sys OracleDBUserPasswd= OracleBackupDay=100 #先配置好无密码登陆备份服务器 #设置备份服务器用户名、IP地址、scpcommom位置,注意 scpcommon 的OracleDBMart 应该和这里的一样 scpuser='' scpip=127.0.0.1 scpcommon_dir=/home/scpcommon scpport=22 #设置数据库BIN路径,主备份文件路径,主日志文件路径 OracleDBBinPath=/u01/oracle/product/10.2.0/bin OracleBackupPath=/home/oraclebackup OracleLogsPath=/home/oraclebackup/logs #以下一般无需更改 for OracleDB in $OracleDBMart do OracleDBFile=$OracleBackupPath/$OracleDB OracleDBLogsFile=$OracleLogsPath/$OracleDB #新建数据库备份文件夹,日志文件夹 if [ -d $OracleDBFile ] then echo " [ $OracleDBFile ] The OracleDBFile is exists, Can't Mkdir!" else mkdir $OracleBackupPath/$OracleDB echo " [ $OracleDBFile ] Mkdir the OracleDBFile Success!" fi if [ -d $OracleDBLogsFile ] then echo " [ $OracleDBLogsFile ] The OracleDBLogsFile is exists, Can't Mkdir!" else mkdir $OracleLogsPath/$OracleDB echo " [ $OracleDBLogsFile ] Mkdir the OracleDBLogsFile Success!" fi #设置备份数据文件名,日志文件名 NewFile=$OracleDBFile/"$OracleDB"backup$(date +"%Y.%m.%d-*").dmp.gz DumpFile=$OracleDBFile/"$OracleDB"backup$(date +"%Y.%m.%d-%H.%M.%S").dmp OldFile=$OracleDBFile/"$OracleDB"backup$(date +"%Y.%m.%d-*" --date=''$OracleBackupDay' days ago').dmp.gz DumpLogsFile=$OracleDBLogsFile/"$OracleDB"logsbackup$(date +"%Y.%m.%d-%H.%M.%S").log OldLogsFile=$OracleDBLogsFile/"$OracleDB"logsbackup$(date +"%Y.%m.%d-*" --date=''$OracleBackupDay' days ago').log #记录备份开始时间 echo " ---start--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile #删除旧数据文件,日志文件 find $OracleDBLogsFile -ctime +$OracleBackupDay -name "*.log" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 find $OracleDBFile -ctime +$OracleBackupDay -name "*.dmp.gz" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 #开始备份数据 if [ -f $NewFile ] then echo " [ $NewFile ] The Oracle Backup File is exists, Can't Backup!" >> $DumpLogsFile else $OracleDBBinPath/exp userid=\'$OracleDBUser/$OracleDBUserPasswd@$OracleDBName as sysdba\' buffer=65536 rows=y owner=$OracleDB file=$DumpFile log=$DumpLogsFile gzip $DumpFile >> $DumpLogsFile 2>&1 echo " [ $DumpFile ] Oracle Backup Success!" >> $DumpLogsFile fi #备份结束 echo " ---end--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile done #判断是否有用户名 if [ -n "$scpuser" ] then #远程登录并执行本地scpcommon文件 ssh -p ${scpport} $scpuser@${scpip} "$(<$scpcommon_dir)" for OracleDB in $OracleDBMart do scp_DumpLogsFile=$OracleLogsPath/$OracleDB/"$OracleDB"logsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$OracleLogsPath/$OracleDB/"$OracleDB"logsbackup_scp$(date +"%Y.%m.%d-*" --date=''$OracleBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧日志文件 find $OracleLogsPath/$OracleDB -ctime +$OracleBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 #传输数据库备份文件 scp -P ${scpport} $OracleBackupPath/$OracleDB/"$OracleDB"backup$(date +"%Y.%m.%d-*").dmp.gz $scpuser@$scpip:./scp_oraclebackup/$OracleDB/ echo " scp $OracleDB Backup File success! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile done else for OracleDB in $OracleDBMart do scp_DumpLogsFile=$OracleLogsPath/$OracleDB/"$OracleDB"logsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$OracleLogsPath/$OracleDB/"$OracleDB"logsbackup_scp$(date +"%Y.%m.%d-*" --date=''$OracleBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧日志文件 find $OracleLogsPath/$OracleDB -ctime +$OracleBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 echo " scp_user or scp_ip not set! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile done fi

四、OpenldapBackup.sh

#! /bin/bash # This is a ShellScript For Auto File Backup # Power by wei # 2024-03-25 #准备工作:现在home目录下新建openldapbackup目录,再到openldapbackup目录新建logs目录 #上传到openldapbackup目录下,更改权限chmod 700 OpenldapBackup.sh #增加系统环境变量 export CPPFLAGS=-I/usr/local/BerkeleyDB.4.8/include export LDFLAGS=-L/usr/local/BerkeleyDB.4.8/lib export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.8/lib:/usr/lib:/lib #Openldap备份天数 OpenldapBackupDay=100 #设置备份路径,日志备份路径 OpenldapBackupPath=/home/openldapbackup OpenldapBackupLogsPath=/home/openldapbackup/logs #设置slapcat命令路径,slapcat配置文件路径 OpenldapBinPath=/usr/local/sbin/slapcat OpenldapSlapdPath=/usr/local/etc/openldap/slapd.conf #先配置好无密码登陆备份服务器 #设置备份服务器用户名、IP地址、scpcommom位置 scpuser='' scpip=127.0.0.1 scpcommon_dir=/home/scpcommon scpport=22 #设置Openldap备份文件名,程序备份日志名 NewFile=$OpenldapBackupPath/openldapbackup$(date +"%Y.%m.%d-*").ldif DumpFile=$OpenldapBackupPath/openldapbackup$(date +"%Y.%m.%d-%H.%M.%S").ldif OldFile=$OpenldapBackupPath/openldapbackup$(date +"%Y.%m.%d-*" --date=''$OpenldapBackupDay' days ago').ldif DumpLogsFile=$OpenldapBackupLogsPath/openldaplogsbackup$(date +"%Y.%m.%d-%H.%M.%S").log OldLogsFile=$OpenldapBackupLogsPath/openldaplogsbackup$(date +"%Y.%m.%d-*" --date=''$OpenldapBackupDay' days ago').log #记录备份开始时间 echo " ---start--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile #删除旧Openldap文件,日志文件 find $OpenldapBackupLogsPath -ctime +$OpenldapBackupDay -name "*.log" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 find $OpenldapBackupPath -ctime +$OpenldapBackupDay -name "*.ldif" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 #开始备份Openldap if [ -f $NewFile ] then echo " [ $NewFile ] The OpenLdap Backup File is exists, Can't Backup!" >> $DumpLogsFile else $OpenldapBinPath -f $OpenldapSlapdPath -l $DumpFile >> $DumpLogsFile 2>&1 echo " [ $DumpFile ] OpenLdap Backup Success!" >> $DumpLogsFile fi #备份结束 echo " ---end--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile #判断是否有用户名 if [ -n "$scpuser" ] then #远程登录并执行本地scpcommon文件 ssh -p ${scpport} $scpuser@${scpip} "$(<$scpcommon_dir)" scp_DumpLogsFile=$OpenldapBackupLogsPath/openldaplogsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$OpenldapBackupLogsPath/openldaplogsbackup_scp$(date +"%Y.%m.%d-*" --date=''$OpenldapBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧日志文件 find $OpenldapBackupLogsPath -ctime +$OpenldapBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 #传输Openldap备份文件 scp -P ${scpport} $OpenldapBackupPath/openldapbackup$(date +"%Y.%m.%d-*").ldif $scpuser@$scpip:./scp_openldapbackup/ echo " scp $File_NAME Backup File success! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile else scp_DumpLogsFile=$OpenldapBackupLogsPath/openldaplogsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$OpenldapBackupLogsPath/openldaplogsbackup_scp$(date +"%Y.%m.%d-*" --date=''$OpenldapBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧日志文件 find $OpenldapBackupLogsPath -ctime +$OpenldapBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 echo " scp_user or scp_ip not set! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile fi

五、MongoBackup.sh

# !/bin/bash # This is a ShellScript For Auto Mongo Backup # Power by wei # 2024-03-25 #准备工作:先在home目录下新建mongobackup目录,再到mongobackup目录新建logs目录 #上传到mongobackup目录下,更改权限chmod 700 MongoBackup.sh #设置数据库名,数据库登陆名,密码,数据库IP地址,备份天数 MongoDBMart='xx1 xx2 xx3' MongoDBUser=root MongoDBUserPasswd= MongoIP=127.0.0.1 MongoBackupDay=100 MongoPort=27017 #先配置好无密码登陆备份服务器 #设置备份服务器用户名、IP地址、scpcommom位置,注意 scpcommon 的MongoDBMart 应该和这里的一样 scpuser='' scpip=127.0.0.1 scpcommon_dir=/home/scpcommon scpport=22 #设置数据库BIN路径,主备份文件路径,主日志文件路径 MongoDBBinPath=/usr/bin MongoBackupPath=/home/mongobackup MongoLogsPath=/home/mongobackup/logs #以下一般无需更改 for MongoDB in $MongoDBMart do #新建数据库备份文件夹,日志文件夹 MongoDBFile=$MongoBackupPath/$MongoDB MongoDBLogsFile=$MongoLogsPath/$MongoDB if [ -d $MongoDBFile ] then echo " [ $MongoDBFile ] The MongoDBFile is exists, Can't Mkdir!" else mkdir $MongoBackupPath/$MongoDB echo " [ $MongoDBFile ] Mkdir the MongoDBFile Success!" fi if [ -d $MongoDBLogsFile ] then echo " [ $MongoDBLogsFile ] The MongoDBLogsFile is exists, Can't Mkdir!" else mkdir $MongoLogsPath/$MongoDB echo " [ $MongoDBLogsFile ] Mkdir the MongoDBLogsFile Success!" fi #设置备份数据文件名,日志文件名 NewFile=$MongoDBFile/"$MongoDB"backup$(date +"%Y.%m.%d-%H.%M.%S").tar.gz DumpFile=$MongoDBFile/$MongoDB OldFile=$MongoDBFile/"$MongoDB"backup$(date +"%Y.%m.%d-*" --date=''$MongoBackupDay' days ago').tar.gz DumpLogsFile=$MongoDBLogsFile/"$MongoDB"logsbackup$(date +"%Y.%m.%d-%H.%M.%S").log OldLogsFile=$MongoDBLogsFile/"$MongoDB"logsbackup$(date +"%Y.%m.%d-*" --date=''$MongoBackupDay' days ago').log #记录备份开始时间 echo " ---start--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile #删除旧数据文件,日志文件 find $MongoDBLogsFile -ctime +$MongoBackupDay -name "*.log" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 find $MongoDBFile -ctime +$MongoBackupDay -name "*.tar.gz" -exec rm -rf {} \; >> $DumpLogsFile 2>&1 #开始备份数据 if [ -f $NewFile ] then echo " [ $NewFile ] The Mongo Backup File is exists, Can't Backup!" >> $DumpLogsFile elif [ -z $MongoIP ] then $MongoDBBinPath/mongodump --db $MongoDB --username $MongoDBUser --password $MongoDBUserPasswd --out $MongoDBFile --authenticationDatabase admin >> $DumpLogsFile else $MongoDBBinPath/mongodump --host $MongoIP --port $MongoPort --db $MongoDB --username $MongoDBUser --password $MongoDBUserPasswd --out $MongoDBFile --authenticationDatabase admin >> $DumpLogsFile fi tar -czvf $NewFile $DumpFile rm -rf $DumpFile #gzip $DumpFile >> $DumpLogsFile 2>&1 echo " [ $DumpFile ] Mongo Backup Success!" >> $DumpLogsFile #备份结束 echo " ---end--- "$(date +"%y-%m-%d %H:%M:%S") >> $DumpLogsFile done #判断是否有用户名 if [ -n "$scpuser" ] then #远程登录并执行本地scpcommon文件 ssh -p ${scpport} $scpuser@${scpip} "$(<$scpcommon_dir)" for MongoDB in $MongoDBMart do scp_DumpLogsFile=$MongoLogsPath/$MongoDB/"$MongoDB"logsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$MongoLogsPath/$MongoDB/"$MongoDB"logsbackup_scp$(date +"%Y.%m.%d-*" --date=''$MongoBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧日志文件 find $MongoLogsPath/$MongoDB -ctime +$MongoBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 #传输数据库备份文件 scp -P ${scpport} $MongoBackupPath/$MongoDB/"$MongoDB"backup$(date +"%Y.%m.%d-*").tar.gz $scpuser@$scpip:./scp_mongobackup/$MongoDB/ echo " scp $MongoDB Backup File success! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile done else for MongoDB in $MongoDBMart do scp_DumpLogsFile=$MongoLogsPath/$MongoDB/"$MongoDB"logsbackup_scp$(date +"%Y.%m.%d-%H.%M.%S").log scp_OldLogsFile=$MongoLogsPath/$MongoDB/"$MongoDB"logsbackup_scp$(date +"%Y.%m.%d-*" --date=''$MongoBackupDay' days ago').log echo " ---start-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile #删除旧日志文件 find $MongoLogsPath/$MongoDB -ctime +$MongoBackupDay -name "*.log" -exec rm -rf {} \; >> $scp_DumpLogsFile 2>&1 echo " scp_user or scp_ip not set! " >> $scp_DumpLogsFile echo " ---end-scp--- "$(date +"%y-%m-%d %H:%M:%S") >> $scp_DumpLogsFile done fi

六、scpcommon

# !/bin/bash # This is a ShellScript For Auto Backup # 2020-03-11 #上传到home目录下,更改权限chmod 700 scpcommon #注意File_NAME_Mart、MysqlDBMart、OracleDBMart、MongoDBMart应该和FileBackup.sh、MysqlBackup.sh、OracleBackup.sh、MongoBackup.sh 一致 File_NAME_Mart='' MysqlDBMart='' OracleDBMart='' MongoDBMart='' #备份服务器上备份天数 scp_FileBackupDay=100 scp_MysqlBackupDay=100 scp_OpenldapBackupDay=100 scp_OracleBackupDay=100 scp_MongoBackupDay=100 #备份服务器上的目录 scp_file_dir=scp_filebackup scp_mysql_dir=scp_mysqlbackup scp_openldap_dir=scp_openldapbackup scp_oracle_dir=scp_oraclebackup scp_mongo_dir=scp_mongobackup #循环新建File目录 for File_NAME in $File_NAME_Mart do if [ -d $scp_file_dir/$File_NAME ] then echo " [ $scp_file_dir/$File_NAME ] The filebackup is exists, Can't Mkdir! " find $scp_file_dir/$File_NAME -ctime +$scp_FileBackupDay -name "*.tar.gz" -exec rm -rf {} \; else mkdir -p $scp_file_dir/$File_NAME echo " [ $scp_file_dir/$File_NAME ] Mkdir the filebackup Success! " fi done #循环新建Mysql目录 for MysqlDB in $MysqlDBMart do if [ -d $scp_mysql_dir/$MysqlDB ] then echo " [ $scp_mysql_dir/$MysqlDB ] The mysqlbackup is exists, Can't Mkdir! " find $scp_mysql_dir/$MysqlDB -ctime +$scp_MysqlBackupDay -name "*.sql.gz" -exec rm -rf {} \; else mkdir -p $scp_mysql_dir/$MysqlDB echo " [ $scp_mysql_dir/$MysqlDB ] Mkdir the mysqlbackup Success! " fi done #循环新建Mongo目录 for MongoDB in $MongoDBMart do if [ -d $scp_mongo_dir/$MongoDB ] then echo " [ $scp_mongo_dir/$MongoDB ] The mongobackup is exists, Can't Mkdir! " find $scp_mongo_dir/$MongoDB -ctime +$scp_MongoBackupDay -name "*.sql.gz" -exec rm -rf {} \; else mkdir -p $scp_mongo_dir/$MongoDB echo " [ $scp_mongo_dir/$MongoDB ] Mkdir the mongobackup Success! " fi done #循环新建openldap目录 if [ -d $scp_openldap_dir ] then echo " [ $scp_openldap_dir ] The openldapbackup is exists, Can't Mkdir! " find $scp_openldap_dir -ctime +$scp_OpenldapBackupDay -name "*.ldif" -exec rm -rf {} \; else mkdir -p $scp_openldap_dir echo " [ $scp_openldap_dir ] Mkdir the openldapbackup Success! " fi #循环新建Oracle目录 for OracleDB in $OracleDBMart do if [ -d $scp_oracle_dir/$OracleDB ] then echo " [ $scp_oracle_dir/$OracleDB ] The oraclebackup is exists, Can't Mkdir! " find $scp_oracle_dir/$OracleDB -ctime +$scp_OracleBackupDay -name "*.dmp.gz" -exec rm -rf {} \; else mkdir -p $scp_oracle_dir/$OracleDB echo " [ $scp_oracle_dir/$OracleDB ] Mkdir the oraclebackup Success! " fi done