
먼저, 백업 파일을 저장할 디렉터리를 생성합니다.
cd /home/oracle
mkdir -p /home/oracle/expbk
chmod 750 /home/oracle/expbk
chmod 750 /home/oracle/expbk → oracle 사용자만 접근 가능하도록 설정
아래 내용을 /home/oracle/hot/script/exp_backup.sh 파일로 저장하세요.
✅ 쉘 스크립트 (exp_backup.sh)
#!/bin/bash
# 날짜 변수 (YYYYMMDD)
BACKUP_DATE=$(date +%Y%m%d)
# 백업 경로 (expbk 디렉터리)
DUMP_DIR="/home/oracle/expbk"
DUMP_FILE="full_backup_${BACKUP_DATE}.dmp"
LOG_FILE="full_backup_${BACKUP_DATE}.log"
# 환경 변수 로드 (ORACLE_HOME, PATH 설정)
source /home/oracle/.bash_profile
# exp 실행 (FULL 백업)
exp system/oracle file=${DUMP_DIR}/${DUMP_FILE} log=${DUMP_DIR}/${LOG_FILE} full=y
# 완료 로그 기록
echo "EXP Backup completed on $(date)" >> $DUMP_DIR/exp_backup_history.log
쉘 스크립트를 실행하려면 실행 권한을 부여해야 합니다.
chmod +x /home/oracle/hot/script/exp_backup.sh
이제 백업을 매일 한 시 (01:00)에 실행하도록 Crontab에 추가합니다.
crontab -e
아래 내용을 추가하세요.
0 1 * * * bash -c "source /home/oracle/.bash_profile; /home/oracle/hot/script/exp_backup.sh >> /home/oracle/expbk/cron_exp_backup.log 2>&1"
🎯 설명
0 12 * * * → 매일 정오(12:00)에 실행
/home/oracle/hot/script/exp_backup.sh → 백업 스크립트 실행
>> /home/oracle/expbk/cron_exp_backup.log 2>&1 → 실행 로그 저장
백업이 계속 쌓이면 디스크 공간을 차지하기 때문에 7일 이상 된 백업을 자동 삭제하도록 설정할 수 있습니다.
Crontab에 다음을 추가하면 매일 새벽 2시에 7일 이상 된 백업을 자동 삭제합니다.
0 2 * * * find /home/oracle/expbk/ -type f -name "full_backup_*.dmp" -mtime +7 -exec rm -f {} \;
🔔 확인
crontab -l
