脚本文件
#!/bin/bash
source config
backIP=$BackIP
sid=$SID
port=$Port
user=$User
backUser=$BackUser
backUserName=$(echo $backUser | awk -F '/' '{print $1}')
backUserPasswd=$(echo $backUser | awk -F '/' '{print $2}')
remoteIP=$RemoteIP
remoteUser=$RemoteUser
remoteUserName=$(echo $remoteUser | awk -F '/' '{print $1}')
remoteUserPasswd=$(echo $remoteUser | awk -F '/' '{print $2}')
owner=xiaoer
currentUser=$(whoami)
if [ $currentUser != $backUserName ];then
expect -c "
spawn su - $backUserName
expect \"Password:\"
send \"$backUserPasswd\r\"
interact
"
fi
remotePath=/home/yankee/$owner
ssh $remoteUserName@remoteIP -tt << EOF
if [ ! -d $remotePath ];then
mkdir $remotePath
fi
exit 0
EOF
backdirk=/home/yankee/$owner
if [ ! -d $backdir ];then
mkdir $backdir
else
echo $backdir exist!
fi
dateTime=`date +%Y%m%d`
oracleSid="$backIP/$sid"
userArray=(${user//,/ })
echo $userArray
for ele in ${userArray[@]}
do
oracleOwn=$ele
own=$(echo $oracleOwn | awk -F '/' '{print $1}')
exportDataBack=$dateTime.$own.dmp
filePath=$backdir/$exportDataBack
exp $oracleOwn@$oracleSid file=$filePath rows=y grants=y compress=y
cd $backdir
tar -zcvf $dateTime.$own.tar.gz $exportDataBack
size=$(ls -al ./ | grep $dateTime.$own.tar.gz | awk -F ' ' '{print $5}')
echo $size > sizeFlag.$own
keyValue=$(cat sizeFlag.$own)
scp $dateTime.$own.tar.gz $remoteUserName@$remoteIP:$remotePath
ssh $remoteUserName@$remoteIP -tt << EOF
echo $(ls -al $remotePath | grep $dateTime.$own.tar.gz | awk -F ' ' '{print $5}')
scp $remotePath/remoteSize.$own $backUserName@$backIP:$backdir
rm $remotePath/remoteSize.$own
exit
EOF
remoteSize=$(cat remoteSize.$own)
if [ $keyValue == $remoteSize.$own ];then
echo "finished"
rm -rf $backdir
else
echo "failed"
fi
done
配置文件
BackIP=192.168.21.100
SID=orcl
Port=1521
User=xiaoer/xiaoer
BackUser=yankee/yankee
RemoteIP=192.168.21.101
RemoteUser=yankee/yankee