Linux环境设置自动备份

Linux环境下设置自动备份oracle数据库
oracle数据库版本oracle11.2.0.4.0
Linux版本CentOS Linux release 7.9.2009
手动执行脚本则可以正常导出数据库备份并压缩文件
放到定时任务crontab -e 则会出现有文件导出,但是最后会把文件和压缩包一起删除。
备份脚本

#!/bin/sh

echo “现在开始进行数据备份…”

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
# User specific environment and startup programs

export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2/db_1
export LD_LIBRARY_PATH=/u01/app/oracle/product/11.2/db_1/lib
export NLS_LANG=American_america.ZHS16GBK
export PATH=/u01/app/oracle/product/11.2/db_1/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/.local/bin:/home/oracle/bin
umask 022

dmpname=JWDB

schname=GXZJZY #备份的用户,英文逗号分隔

days=7 #设置删除7天前备份文件

bakdata=$dmpname"_"$(date +%Y%m%d).dmp #定义备份文件名这里就是JWDB_具体年月日

baklog=$dmpname"_"$(date +%Y%m%d).log

ordatabak=$dmpname"_"$(date +%Y%m%d).tar.gz  #定义压缩文件名这里就是JWDB_具体年月日

bak_dir=/data/oracle_dmp #备份实际存放路径,backdir 为directory中定义路径


#expdp c_yhpt_etl/c_yhpt_etl@192.168.77.102:1521/oradb DIRECTORY=expdp_dir schemas=$schname dumpfile=$dmpname_$date_now.dmp logfile=$dmpname_$date_now.log compression=ALL #执行备份指定>数据库

expdp GXZJZY/Kingo123@orcl DIRECTORY=expdp_dir schemas=$schname dumpfile=$bakdata logfile=$baklog

echo “数据备份结束…”

echo “现在开始进行压缩备份数据…”

tar -zcvf $ordatabak $bakdata $baklog

echo “压缩备份数据结束…”

echo “删除备份数据开始…”

find $bak_dir -type f -name "*.dmp" -exec rm -rf {} \;

find $bak_dir -type f -name "*.log" -exec rm -rf {} \;

find $bak_dir -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;

echo “删除备份数据结束…”

echo “备份执行完毕…”


定时语句

05 00 * * * . ~/.bash_profile; /data/oracle_dmp/oracle_bak.sh > /tmp/ls.log
看输出日志都已经执行,全部都能输出

img

img

find $bak_dir -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;

这一行就是用来删除压缩包的