Captura de link simbólico em variáveis Unix / Linux

2

Digamos que eu tenha uma pasta com uma série de links simbólicos:

ussdv103:en195d; default$  pwd
/oradba/app/oracle/admin/database1
ussdv103:en195d; default$  ls -ltr
exp -> /oradba/app/oracle/acfsmounts/global/STREAM2a/database1/exp
dpdump -> /oradba/app/oracle/acfsmounts/global/STREAM2a/database1/dpdump
backup -> /oradba/app/oracle/acfsmounts/global/STREAM2a/database1/backup

Em seguida, emito os seguintes comandos para vinculá-lo a um diretório STREAM diferente:

unlink $ORACLE_BASE/admin/database1/backup
unlink $ORACLE_BASE/admin/database1/dpdump
unlink $ORACLE_BASE/admin/database1/exp
mkdir -p /oradba/app/oracle/acfsmounts/global/STREAM1a/database1/backup
mkdir -p /oradba/app/oracle/acfsmounts/global/STREAM1a/database1/dpdump
mkdir -p /oradba/app/oracle/acfsmounts/global/STREAM1a/database1/exp
ln -s $ORACLE_BASE/acfsmounts/global/STREAM1a/database1/backup $ORACLE_BASE/admin/database1/backup
ln -s $ORACLE_BASE/acfsmounts/global/STREAM1a/database1/dpdump $ORACLE_BASE/admin/database1/dpdump
ln -s $ORACLE_BASE/acfsmounts/global/STREAM1a/database1/exp    $ORACLE_BASE/admin/database1/exp

Então eu usaria o seguinte comando para copiar dados do diretório STREAM antigo para o novo diretório STREAM:

cp -p -r /oradba/app/oracle/acfsmounts/global/STREAM##/database1/ /oradba/app/oracle/acfsmounts/global/STREAM1a/.

Mas eu tenho que substituir ## para que reflita a localização do diretório STREAM antigo, então o comando ficará assim:

cp -p -r /oradba/app/oracle/acfsmounts/global/STREAM2a/database1/ /oradba/app/oracle/acfsmounts/global/STREAM1a/.

Como posso capturar informações sobre o diretório STREAM antigo antes de desvinculá-lo para que meu comando de cópia automaticamente substitua ## pelo local correto do diretório STREAM antigo? Existe uma variável Unix / Linux para a qual eu possa atribuir o antigo link simbólico e então referenciá-lo no comando copy?

    
por etho201 23.05.2014 / 16:07

1 resposta

1

Armazene seus destinos de arquivos antigos em uma variável usando o comando readlink para ler as informações do link.

OLDBACKUP='readlink $ORACLE_BASE/admin/database1/backup'
OLDDUMP='readlink $ORACLE_BASE/admin/database1/backup'
OLDEXP='readlink $ORACLE_BASE/admin/database1/exp'
NEWBACKUP="/oradba/app/oracle/acfsmounts/global/STREAM1a/database1/backup"
NEWDUMP="/oradba/app/oracle/acfsmounts/global/STREAM1a/database1/dpdump"
NEWEXP="/oradba/app/oracle/acfsmounts/global/STREAM1a/database1/exp"
unlink $ORACLE_BASE/admin/database1/backup
unlink $ORACLE_BASE/admin/database1/dpdump
unlink $ORACLE_BASE/admin/database1/exp
mkdir -p $NEWBACKUP
mkdir -p $NEWDUMP
mkdir -p $NEWEXP
ln -s $NEWBACKUP $ORACLE_BASE/admin/database1/backup
ln -s $NEWDUMP $ORACLE_BASE/admin/database1/dpdump
ln -s $NEWEXP    $ORACLE_BASE/admin/database1/exp

cp -p -r $OLDBACKUP $NEWBACKUP
cp -p -r $OLDDUMP $NEWDUMP
cp -p -r $OLDEXP $NEWEXP
    
por 23.05.2014 / 16:17