Need help in creating file restoration script from a backup script.

Hi all

i am struggling in creating a restore of env files while doing applications clone.
the first file i created for copying the important configurations file
which is running perfect
now for reverting the changes i mean when i am restoring these files to its original places
i have to do manual woking

i use this command to create a restore file

grep -i cp abc.sh |awk '{print $1 " " $3 "                   " $2}'    

but after doing this also i have to lots of manual cuttings filterings
i need to cut the last part of 3rd column and then past it in last of 2nd column

can i have your valuble suggestions to do this work through an command or script.
it would be a great help.

backup script:
###########

[appxdb72@pks19jkp]/fsaixxdb72/applmgr/pgbcxdb72> cat abc.sh

BKPDIR=/patch/bak_`uname`/bak_${ORASID}_`date +%d%b%Y`
export BKPDIR


mkdir -p $BKPDIR/appl $BKPDIR/comn $BKPDIR/8.0.6 $BKPDIR/iAS $BKPDIR/db
chmod -Rf 777 $BKPDIR/db


cp $APPL_TOP/*.env                              $BKPDIR/appl
cp $APPL_TOP/admin/*.env                          $BKPDIR/appl
cp $APPL_TOP/admin/*.xml                          $BKPDIR/appl
cp $APPL_TOP/admin/topfile*                          $BKPDIR/appl
cp $APPL_TOP/admin/*def*                          $BKPDIR/appl
cp $FND_TOP/resource/pasta*                          $BKPDIR/appl
cp $FND_TOP/resource/ixlib*                          $BKPDIR/appl
cp $MSC_TOP/bin/MSCPLD.sh                         $BKPDIR/appl
cp $ORACLE_HOME/*.env                             $BKPDIR/8.0.6
cp $TNS_ADMIN/listener.ora                          $BKPDIR/8.0.6
cp $TNS_ADMIN/tnsnames.ora                          $BKPDIR/8.0.6
cp $ORACLE_HOME/guicommon6/tk60/admin/uifont.ali              $BKPDIR/8.0.6
cp $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/adautocfg.sh          $BKPDIR/comn
cp $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/adcmctl.sh          $BKPDIR/comn
cp $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/oai_x_ftp.sh         $BKPDIR/comn
cp $OA_HTML/bin/appsweb*.cfg                          $BKPDIR/comn
cp $IAS_ORACLE_HOME/*.env                         $BKPDIR/iAS
cp $IAS_ORACLE_HOME/network/admin/${CONTEXT_NAME}/*.ora          $BKPDIR/iAS
cp $IAS_ORACLE_HOME/Apache/Jserv/servlets/buildFileMoverServlet.sh     $BKPDIR/iAS
cp $IAS_ORACLE_HOME/Apache/Jserv/servlets/FileMoverServlet*         $BKPDIR/iAS
[appxdb72@pks19jkp]/fsaixxdb72/applmgr/pgbcxdb72>

Restoration command:
#################

[appxdb72@pks19jkp]/fsaixxdb72/applmgr/pgbcxdb72>    grep -i cp abc.sh |awk '{print $1 " " $3 "                   " $2}'
cp $BKPDIR/appl                         $APPL_TOP/*.env
cp $BKPDIR/appl                         $APPL_TOP/admin/*.env
cp $BKPDIR/appl                         $APPL_TOP/admin/*.xml
cp $BKPDIR/appl                         $APPL_TOP/admin/topfile*
cp $BKPDIR/appl                         $APPL_TOP/admin/*def*
cp $BKPDIR/appl                         $FND_TOP/resource/pasta*
cp $BKPDIR/appl                         $FND_TOP/resource/ixlib*
cp $BKPDIR/appl                         $MSC_TOP/bin/MSCPLD.sh
cp $BKPDIR/8.0.6                        $ORACLE_HOME/*.env
cp $BKPDIR/8.0.6                        $TNS_ADMIN/listener.ora
cp $BKPDIR/8.0.6                        $TNS_ADMIN/tnsnames.ora
cp $BKPDIR/8.0.6                        $ORACLE_HOME/guicommon6/tk60/admin/uifont.ali
cp $BKPDIR/comn                         $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/adautocfg.sh
cp $BKPDIR/comn                         $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/adcmctl.sh
cp $BKPDIR/comn                         $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/oai_x_ftp.sh
cp $BKPDIR/comn                         $OA_HTML/bin/appsweb*.cfg
cp $BKPDIR/iAS                          $IAS_ORACLE_HOME/*.env
cp $BKPDIR/iAS                          $IAS_ORACLE_HOME/network/admin/${CONTEXT_NAME}/*.ora
cp $BKPDIR/iAS                          $IAS_ORACLE_HOME/Apache/Jserv/servlets/buildFileMoverServlet.sh
cp $BKPDIR/iAS                          $IAS_ORACLE_HOME/Apache/Jserv/servlets/FileMoverServlet*
[appxdb72@pks19jkp]/fsaixxdb72/applmgr/pgbcxdb72>

my requirement looks like this
################################

cp     $BKPDIR/appl/*.env                               $APPL_TOP
cp     $BKPDIR/appl/*.env                                $APPL_TOP/admin
cp     $BKPDIR/appl/*.xml                                $APPL_TOP/admin
cp     $BKPDIR/appl/topfile*                             $APPL_TOP/admin
cp     $BKPDIR/appl/*def*                                $APPL_TOP/admin
cp     $BKPDIR/appl/pasta*                               $FND_TOP/resource
cp     $BKPDIR/appl/ixlib*                                 $FND_TOP/resource
cp     $BKPDIR/appl/MSCPLD.sh                     $MSC_TOP/bin
cp     $BKPDIR/8.0.6/*.env                               $ORACLE_HOME
cp     $BKPDIR/8.0.6/listener.ora                       $TNS_ADMIN
cp     $BKPDIR/8.0.6/tnsnames.ora                    $TNS_ADMIN
cp     $BKPDIR/8.0.6/uifont.ali                           $ORACLE_HOME/guicommon6/tk60/admin
cp     $BKPDIR/comn/adautocfg.sh                    $COMMON_TOP/admin/scripts/${CONTEXT_NAME}
cp     $BKPDIR/comn/adcmctl.sh                       $COMMON_TOP/admin/scripts/${CONTEXT_NAME}
cp     $BKPDIR/comn/oai_x_ftp.sh                     $COMMON_TOP/admin/scripts/${CONTEXT_NAME}
cp     $BKPDIR/comn/appsweb*.cfg                  $OA_HTML/bin
cp     $BKPDIR/iAS/*.env                                  $IAS_ORACLE_HOME
cp     $BKPDIR/iAS/*.ora                                  $IAS_ORACLE_HOME/network/admin/${CONTEXT_NAME}
cp     $BKPDIR/iAS/buildFileMoverServlet.sh    $IAS_ORACLE_HOME/Apache/Jserv/servlets
cp     $BKPDIR/iAS/FileMoverServlet*              $IAS_ORACLE_HOME/Apache/Jserv/servlets

Thanks & Regards
Syed Kaleemuddin.

This might work..

awk  '/^cp/ { n= split($2,A,"/"); s=A[n];  printf ("%s/%s ",$3,s); for (i=1;i<n;i++) {printf ("%s/",A)} print j}' abc.sh

output:

$BKPDIR/appl/*.env $APPL_TOP/
$BKPDIR/appl/*.env $APPL_TOP/admin/
$BKPDIR/appl/*.xml $APPL_TOP/admin/
$BKPDIR/appl/topfile* $APPL_TOP/admin/
$BKPDIR/appl/*def* $APPL_TOP/admin/
$BKPDIR/appl/pasta* $FND_TOP/resource/
$BKPDIR/appl/ixlib* $FND_TOP/resource/
$BKPDIR/appl/MSCPLD.sh $MSC_TOP/bin/
$BKPDIR/8.0.6/*.env $ORACLE_HOME/
$BKPDIR/8.0.6/listener.ora $TNS_ADMIN/
$BKPDIR/8.0.6/tnsnames.ora $TNS_ADMIN/
$BKPDIR/8.0.6/uifont.ali $ORACLE_HOME/guicommon6/tk60/admin/
$BKPDIR/comn/adautocfg.sh $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/
$BKPDIR/comn/adcmctl.sh $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/
$BKPDIR/comn/oai_x_ftp.sh $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/
$BKPDIR/comn/appsweb*.cfg $OA_HTML/bin/
$BKPDIR/iAS/*.env $IAS_ORACLE_HOME/
$BKPDIR/iAS/*.ora $IAS_ORACLE_HOME/network/admin/${CONTEXT_NAME}/
$BKPDIR/iAS/buildFileMoverServlet.sh $IAS_ORACLE_HOME/Apache/Jserv/servlets/
$BKPDIR/iAS/FileMoverServlet* $IAS_ORACLE_HOME/Apache/Jserv/servlets/

Please double test before implementing in your live environment.

Hi Anchal khare

First thanks for replying with this great command.
but still it does not have "cp" in first column.
and i dont understand this command can it be more simple
so that i can easily use it.

your help is very very valuable.

Regards
Kaleem.

I was targeting for your actual requirement.
printing "cp" is not difficult.

awk  '/^cp/ { n= split($2,A,"/"); s=A[n];  printf ("cp %s/%s ",$3,s); for (i=1;i<n;i++) {printf ("%s/",A)} print j}' abc.sh

---------- Post updated at 18:12 ---------- Previous update was at 18:09 ----------

awk  '/^cp/ { 
n= split($2,A,"/");
s=A[n];
printf ("cp %s/%s ",$3,s);
for (i=1;i<n;i++) {
printf ("%s/",A)
} 
print j
}' abc.sh 

Just go though any basic tutorial of awk.

Slightly off topic. The backup process is flawed:

Also there is no attempt to preserve file permissions. Each "backup" file will be owned by the user making the copy and with default permissions according to the current umask.
As it stands, if you attempt a restore you will corrupt your Oracle intallation.

1 Like

Hi Anchal Khare

its really very good very very impressing.
at last with anchal help i finally created my script.

My scritp looks like this:
------------------------

echo "
################################################################

" > ~/RestoreImpfile_appl_comn.sh

echo "export APPL_TOP=$APPL_TOP" >> ~/RestoreImpfile_appl_comn.sh
echo "export FND_TOP=$FND_TOP" >> ~/RestoreImpfile_appl_comn.sh
echo "export MSC_TOP=$MSC_TOP" >> ~/RestoreImpfile_appl_comn.sh
echo "export ORACLE_HOME=$ORACLE_HOME" >> ~/RestoreImpfile_appl_comn.sh
echo "export TNS_ADMIN=$TNS_ADMIN" >> ~/RestoreImpfile_appl_comn.sh
echo "export COMMON_TOP=$COMMON_TOP" >> ~/RestoreImpfile_appl_comn.sh
echo "export CONTEXT_NAME=$CONTEXT_NAME" >> ~/RestoreImpfile_appl_comn.sh
echo "export OA_HTML=$OA_HTML" >> ~/RestoreImpfile_appl_comn.sh
echo "export IAS_ORACLE_HOME=$IAS_ORACLE_HOME" >> ~/RestoreImpfile_appl_comn.sh
echo "

################################################################

" >> ~/RestoreImpfile_appl_comn.sh

awk '/^cp/ {
n= split($2,A,"/");
s=A[n];
printf ("cp %s/%s ",$3,s);
for (i=1;i<n;i++) {
printf ("%s/",A[i])
}
print j
}' abc.sh >> ~/RestoreImpfile_appl_comn.sh

echo "

Restore file : ~/RestoreImpfile_appl_comn.sh

"

################

Finally my script output i got which i want.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

[appxdb72@pks19jkp]/fsaixxdb72/applmgr/pgbcxdb72> cat RestoreImpfile_appl_comn.sh

################################################################

export APPL_TOP=/fsaixxdb72/applmgr/pgbcxdb72/appl

export FND_TOP=/fsaixxdb72/applmgr/pgbcxdb72/appl/fnd/11.5.0

export MSC_TOP=/fsaixxdb72/applmgr/pgbcxdb72/appl/msc/11.5.0

export ORACLE_HOME=/fsaixxdb72/applmgr/pgbcxdb72/8.0.6

export TNS_ADMIN=/fsaixxdb72/applmgr/pgbcxdb72/8.0.6/network/admin/gpsogu72_rs19edp

export COMMON_TOP=/fsaixxdb72/applmgr/pgbcxdb72/comn

export CONTEXT_NAME=pgbcxdb72_pks19jkp

export OA_HTML=/fsaixxdb72/applmgr/pgbcxdb72/comn/html

export IAS_ORACLE_HOME=/fsaixxdb72/applmgr/pgbcxdb72/iAS

################################################################

cp $BKPDIR/appl/.env $APPL_TOP/
cp $BKPDIR/appl/
.env $APPL_TOP/admin/
cp $BKPDIR/appl/.xml $APPL_TOP/admin/
cp $BKPDIR/appl/topfile
$APPL_TOP/admin/
cp $BKPDIR/appl/*def* $APPL_TOP/admin/
cp $BKPDIR/appl/pasta* $FND_TOP/resource/
cp $BKPDIR/appl/ixlib* $FND_TOP/resource/
cp $BKPDIR/appl/MSCPLD.sh $MSC_TOP/bin/
cp $BKPDIR/8.0.6/.env $ORACLE_HOME/
cp $BKPDIR/8.0.6/listener.ora $TNS_ADMIN/
cp $BKPDIR/8.0.6/tnsnames.ora $TNS_ADMIN/
cp $BKPDIR/8.0.6/uifont.ali $ORACLE_HOME/guicommon6/tk60/admin/
cp $BKPDIR/comn/adautocfg.sh $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/
cp $BKPDIR/comn/adcmctl.sh $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/
cp $BKPDIR/comn/oai_x_ftp.sh $COMMON_TOP/admin/scripts/${CONTEXT_NAME}/
cp $BKPDIR/comn/appsweb
.cfg $OA_HTML/bin/
cp $BKPDIR/iAS/.env $IAS_ORACLE_HOME/
cp $BKPDIR/iAS/
.ora $IAS_ORACLE_HOME/network/admin/${CONTEXT_NAME}/
cp $BKPDIR/iAS/buildFileMoverServlet.sh $IAS_ORACLE_HOME/Apache/Jserv/servlets/
cp $BKPDIR/iAS/FileMoverServlet* $IAS_ORACLE_HOME/Apache/Jserv/servlets/
[appxdb72@pks19jkp]/fsaixxdb72/applmgr/pgbcxdb72>

Again Anchal i would like to thanks your for this awsome command.

Regards
Kaleem.

You are welcome. I would still suggest to have a look at the points mentioned in methyl's post.

yes menthil might be correct but when i tested it. it was successfull.
but before this i have just created context file directory and started restoring env file.
we are not doing full clone
we are doing partial clone of APPL_TOP & COMMON_TOP

Regards
Kaleem.