Comando Find [RESOLVIDO]

1. Comando Find [RESOLVIDO]

Caian Santiago de Carvalho
caian007

(usa Ubuntu)

Enviado em 30/12/2010 - 16:44h

Ola! Pessoal Boa tarde!

Seguinte! Estava precisando copiar para dentro de um diretório de um servidor que é usado como backup , os arquivos alterados do outro servidor. Por exemplo tenho uma pasta em um servidor X chamada propaganda. Quero executar um script que gere pra mim um txt com todas as alterações feitas neste diretório. Depois pegar assas informações e copiar. Assim eu só copiaria o que foi alterado. Tenho o exemplo do script abaixo.

Mas quando rodo ele da o seguinte erro..

cp: cannot stat `cat': No such file or directory

Acredito que seja erro de sintaxe.

#- Propaganda
/bin/echo " - " >> /dados/rede/$DATA/indice/torre.txt
/bin/echo "Inicio diretorio [Propaganda] - `date +%H:%M:%S`" >> /dados/rede/$DATA/indice/torre.txt
/usr/bin/find /mnt/X/propaganda -mtime +1 >> /tmp/arq.txt
for i in 'cat /tmp/arq.txt'; do
cp $i /dados/rede/$DATA
done

Explicando melhor, eu olho o que foi alterado em um mapeamento feiot no servidor X depois faço a cópia para dentro do meu diretório /dados/rede setando a data de hoje.

Desde já agradeço!


  


2. Re: Comando Find [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 30/12/2010 - 17:37h

Sim, é um erro nessa linha:

for i in 'cat /tmp/arq.txt'; do

O que ocorre é que você está usando as aspas simples, de maneira que o comando cat é entendido como um nome de arquivo e o shell não interpreta ele. Você poderia trocar o trecho 'cat /tmp/arq.txt' por $(cat /tmp/arq.txt)

Ou você poderia fazer:

while read i; do
cp $i /dados/rede/$DATA
done < /tmp/arq.txt


Ou, dependendo do caso, você poderia em vez disso, usar o rsync para fazer backup, visto que ele iria copiar somente aquilo que foi alterado num diretório, mantendo eles sincronizados na medida em que você o executasse (e quais parêmetros usasse)


3. Comando find

Caian Santiago de Carvalho
caian007

(usa Ubuntu)

Enviado em 30/12/2010 - 17:46h

Que maravilha..

Funcionou direitinho...

Muito obrigado mesmo!

Abraço!


4. Re: Comando Find [RESOLVIDO]

igor
igorbsp

(usa Slackware)

Enviado em 30/12/2010 - 18:01h

troque o final do script por isso:

find /mnt/X/propaganda -mtime +1 | while read i
do cp $i /dados/rede/$DATA
done

Desta forma, a saída do find vai ser redirecionada direto para variável






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts