备份脚本的思路如下:
exp 导出数据,将dmp数据文件压缩为 tar.gz包,再通过Ftp传送到远程FTP服务器上。
通过设置crontab,将此脚本设置为定时任务,即可定时自动备份数据到远程FTP服务器上。
#!/bin/bash export ORACLE_HOME=/home/oracle/app/product/11.2.0/dbhome_1 export ORACLE_SID=orcl export ORACLE_UNQNAME=orcl PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin export PATH WORK_PATH=/home/oracle/db_data/ #导出数据的目录 DB_USER=db_user #数据库用户名 DB_PWD=db_mima #数据库密码 DB_SID=orcl DATE=`date '+%Y%m%d_%H%M%S'` #文件名后缀为日期 BACK_FILE=${DB_USER}.dmp_${DATE} BACK_LOG=${DB_USER}.log_${DATE} TAR_FILE=$BACK_FILE.tar.gz FTP_IP=192.168.1.101 #FTP服务器IP FTP_USER=ftpuser #FTP用户名 FTP_PWD=mima #FTP密码 FTP_REMOTE_PATH=/data/data_bak/ #FTP远端目录 FTP_LOCAL_PATH=/home/oracle/db_data echo $BACK_FILE echo $TAR_FILE #exp CMD=${DB_USER}/${DB_PWD}@${DB_SID} file=${WORK_PATH}$BACK_FILE log=${WORK_PATH}$BACK_LOG echo $CMD exp ${DB_USER}/${DB_PWD}@${DB_SID} file=${WORK_PATH}$BACK_FILE log=${WORK_PATH}$BACK_LOG #tar cd ${WORK_PATH} ;tar -czvf ${TAR_FILE} $BACK_FILE $BACK_LOG #ftp ftp -nv >>${WORK_PATH}ftp.log <<EOF #ftp -ndv<<EOF open $FTP_IP user $FTP_USER $FTP_PWD binary hash prompt cd $FTP_REMOTE_PATH lcd $FTP_LOCAL_PATH mput $TAR_FILE close bye EOF