#!/bin/sh # # Script to start rsnc to copy archivelogs from old 9i enviroment to new prod # # crontab example # Minute Hour Day of Month Month Day of Week Command # (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat) #30 16 12 2 * /backup/scripts/copy_pro_backup_archives.sh COPYTEST ########## Enviroment ############## DAY_OF_WEEK=`date +%w` export DAY_OF_WEEK DAY=`date +"%m_%d_%y_%H_%M"` export DAY ############################## # Home of the scrips SCRIPTPATH=$(cd ${0%/*} && echo $PWD/${0##*/}) SCRIPTS_DIR=`dirname "$SCRIPTPATH{}"` ############################## #logfile LOG=${SCRIPTS_DIR}/run_copy_job_${DAY}.log ############################## # Parameter DIRECTORY_NAME=$1 REMOTE_SERVER=gpi019i.pipperr.local REMOTE_DIR=/backup REMOTE_USER=oracle LOCAL_DIR=/backup LOCAL_HOST=`hostname` LOCAL_ORA_USER=oracle LOCAL_ORA_GROUP=oinstall ############################## ############################## echo ------------- START JOB at "`date`" ---- -------------- > "${LOG}" 2>&1 echo -- >> "${LOG}" 2>&1 echo -- Info Parameter :: REMOTE_SERVER =${REMOTE_SERVER} >> "${LOG}" 2>&1 echo -- Info Parameter :: REMOTE_DIR =${REMOTE_DIR} >> "${LOG}" 2>&1 echo -- Info Parameter :: LOCAL_HOST =${LOCAL_HOST} >> "${LOG}" 2>&1 echo -- Info Parameter :: LOCAL_DIR =${LOCAL_DIR} >> "${LOG}" 2>&1 echo -- Info Parameter :: DIRECTORY_NAME=${DIRECTORY_NAME} >> "${LOG}" 2>&1 echo -- Info : Start rsync >> "${LOG}" 2>&1 # get lock to prevent multiple runs # set ${LOCKFILE} ! LOCKFILE=${SCRIPTS_DIR}/lock exec 100>${LOCKFILE}_runStat; if flock -n -x 100; then echo "-- Info -- start the script in ${SCRIPTS_DIR}" >> "${LOG}" 2>&1 else echo "Error -- Script is still running!" >> "${LOG}" 2>&1 exit 1 fi if [ ! -n "${DIRECTORY_NAME}" ]; then echo "Error -- Parameter 1 - the directory name is empty" >> "${LOG}" 2>&1 echo "Error -- Parameter 1 - the directory name is empty" exit 1 fi ### copy the directory from the remote host ot the localhost # watch the trailing / of the local directory! # rsync Options z compress (only for not compressed files!) # h show human readable numbers # a is -rlptgoD - archive setting to preserver the most features # # /usr/bin/rsync -ahv ${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_DIR}/${DIRECTORY_NAME} ${LOCAL_DIR}/ >> "${LOG}" 2>&1 # echo ---------------------------------------------------- >> "${LOG}" 2>&1 ### unzip all files in the directory echo -- Info : Start unzip at "`date`" >> "${LOG}" 2>&1 # gzip -df ${LOCAL_DIR}/${DIRECTORY_NAME}/*.gz >> "${LOG}" 2>&1 ## check if all is transferd LOCAL_GET_COUNT=`ls -la ${LOCAL_DIR}/${DIRECTORY_NAME}/*.arc | wc -l` echo ---------------------------------------------------- >> "${LOG}" 2>&1 echo -- Info : found local files :: ${LOCAL_GET_COUNT} >> "${LOG}" 2>&1 REMOTE_GET_COUNT=`ssh ${REMOTE_SERVER} "ls -la ${REMOTE_DIR}/${DIRECTORY_NAME}/*.*" | wc -l` echo -- Info : found REMOTE files :: ${REMOTE_GET_COUNT} >> "${LOG}" 2>&1 echo ---------------------------------------------------- >> "${LOG}" 2>&1 echo -- Info set the user rights >> "${LOG}" 2>&1 ## set the rights of the directory ot the DB User # chown -R ${LOCAL_ORA_USER}:${LOCAL_ORA_GROUP} ${LOCAL_DIR}/${DIRECTORY_NAME} # ############## Log file handling # # zip all log files older then 3 days for i in `/usr/bin/find ${SCRIPTS_DIR} -ctime +72 | /bin/grep -i "\.log"` do /bin/gzip -9 $i >> "${LOG}" 2>&1 done # delete all log files older then 14 days for i in `/usr/bin/find ${SCRIPTS_DIR} -ctime +336 | /bin/grep -i "\log.gz"` do rm $i >> "${LOG}" 2>&1 done echo ------------- FINISH JOB at "`date`" ---- -------------- >> "${LOG}" 2>&1