Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

1. Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

Emanuel Brentegani
brentegani

(usa Outra)

Enviado em 17/05/2010 - 11:22h

Ola pessoal preciso de um apoio, sou novo no linux, estou trabalhando com ele a duas semanas e me foi passado alguns exercícios de shell script mais não consigo fazer de jeito nenhum, imagino que deva ser muita fácil mais pra eu que comecei agora tá complicado
O que me foi passado é fazer um shell script que faz a copia de tudo q foi modificado no dia de hoje para uma pasta, no me caso criei a /dados01
Vamos as duvidas:
Como não sabia nem por onde começar fui procurar um comando que listasse tudo que foi modificado hoje para ter um ponto de partida e encontrei esse:
find / -mtime -1
E esse também:
find . -mtime -1 -type f - print

1° Duvida esses comando realmente listam arquivos modificados hoje ? O find é o melhor comando para isso ?Porque aparece muitos arquivos se não alterei nada hoje ? E qual a diferença de colocar type f -print ?

Seguindo essa linha de pensamento achei esse outro arquivo que diz fazer a copia de tudo que foi modificado hoje
Essa pasta dados01 é uma pasta de teste q criei no diretorio / para jogar as copias
find . -mtime -1 -type f -exec cp {}/dados01
Mais quando rodo aparece essa mensagem de erro
find : faltando argumento para `-exec'

2° Duvida Esse comando realmente copia tudo que foi modificado no dia para a pasta dados01? Qual o argumento que falta ? Porque depois do find vem um ponto “.” e não “/” ? Porque {} o que isso faz ? Estou colocando /dados01 no lugar correto ?

Também por conta propria tentei
find / -mtime -1 | cd /dados01
find / cmtime -1 | cd/dados01

mais aparece:
cp: missing destination file operand after `-time'

Por fim,encontrei na net esse aqui :
$ find $(cat $INCLUDE_LIST) -mtime -1 -type f -print | \
tar -czf $BACKUP_DIR/$BACKUP_NAME --exclude-from=$EXCLUDE_LIST -

Quando eu rodo da as seguintes mensagens
tar : Arquivo ou diretório não encontrado
tar : Erro não é recuperavel : saindo agora

Alguém pode me ajudar a montar esse shell que copia tudo que foi modificado hoje para a pasta /dados01 me explicando certinho cada passo e porque esses comando ai em cima não deram certo ? Por fim essa copia tem que ser um arquivo .tar.gz ou posso copiar os arquivos mesmo


Agradeço a ajuda espero ter explicado certinho.


  


2. Re: Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 17/05/2010 - 12:32h

1° Duvida esses comando realmente listam arquivos modificados hoje ? O find é o melhor comando para isso? Porque aparece muitos arquivos se não alterei nada hoje ? E qual a diferença de colocar type f -print ?

R: O find é bão. O comando q vc expôs ae tá certim. Ele vai t mostrar os arquivos q foram modificados em menos d 1 dia. Se tá aparecendo os arquivos na lista, eles foram modificados na data d hj. Faça o teste: copie um arquivo q tá com a data d modificação bem antiga (dê ls -l pra descobrir) e copie outro q foi modificado há pouco e mande pesquisar q dá certo. Com relação ao print, pode eliminá-lo pq, nesse caso, não fará diferença. E o -type f é apenas identificar o tipo d arquivo (file).

2° Duvida Esse comando realmente copia tudo que foi modificado no dia para a pasta dados01? Qual o argumento que falta ? Porque depois do find vem um ponto “.” e não “/” ? Porque {} o que isso faz ? Estou colocando /dados01 no lugar correto ?

O comando correto é: "find . -mtime -1 -type f -exec cp /dados01 {} \;" ou "find . -mtime -1 -type f | xargs cp /dados01

Por fim,encontrei na net esse aqui :
$ find $(cat $INCLUDE_LIST) -mtime -1 -type f -print | \
tar -czf $BACKUP_DIR/$BACKUP_NAME --exclude-from=$EXCLUDE_LIST -

O comando correto é: find $(cat $INCLUDE_LIST) -mtime -1 -type f -print | xargs tar -czf $BACKUP_DIR/$BACKUP_NAME --exclude-from=$EXCLUDE_LIST


3. Re: Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

Emanuel Brentegani
brentegani

(usa Outra)

Enviado em 17/05/2010 - 16:05h

Renato os comandos que vc passou "find . -mtime -1 -type f -exec cp /dados01 {} \;" ou "find . -mtime -1 -type f | xargs cp /dados01" parecem estar copiando mas me mostra a seguinte afirmação
cp : omitindo diretório `/dados01'
cp : omitindo diretório `/dados01'
cp : omitindo diretório `/dados01'
cp : omitindo diretório `/dados01'
...
e quando dou um ls na pasta dados01 eles não estão lá

oque posso fazer ?


4. Re: Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 17/05/2010 - 16:08h

Desculpe, faltou um parâmentro:

find . -mtime -1 -type f -exec cp -r /dados01 {} \;

ou:

find . -mtime -1 -type f | xargs cp -r /dados01


5. Re: Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

Emanuel Brentegani
brentegani

(usa Outra)

Enviado em 17/05/2010 - 17:08h

Renato sei q vc vai me xingar por te encher mais alterei ficando assim
find /home -mtime -1 -type f -exec cp -r /dados01 {} \;

tentei tb find /home -mtime -1 -type f -exec cp -a /dados01 {} \;

quando executo num para de parecer mensagem iguais essas

cp: impossível sobrescrever não-diretório `./proc/4409/attr/current' com diretório `/dados01'
cp: impossível sobrescrever não-diretório `./proc/4409/attr/prev' com diretório `/dados01'
cp: impossível sobrescrever não-diretório `./proc/4409/attr/exec' com diretório `/dados01'
cp: impossível sobrescrever não-diretório `./proc/4409/attr/fscreate' com diretório `/dados01'
cp: impossível sobrescrever não-diretório `./proc/4409/attr/keycreate' com diretório `/dados01'

O diretorio /dados01 esta criado certinho.

Sera q é esse meu red hat 5
to quase pra larga mão disso


6. Re: Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 17/05/2010 - 17:17h

Mas vc olhou o conteúdo do diretório, pra v se copiou certim?


7. Re: Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

Emanuel Brentegani
brentegani

(usa Outra)

Enviado em 17/05/2010 - 17:33h

Verifiquei sim e nehum arquivo foi copiado para o diretorio /dados01
O estranho é que ele tenta copiar um por um normal so que aparece a mensagem acima
to pra abandonar isso ^^


8. Re: Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 17/05/2010 - 18:19h

Tipo, você está tentando copiar um diretório para um arquivo normal.

$ cp diretorio arquivo

Sendo que a sintaxe correta deveria ser:

$ cp arquivo diretorio

Então:
find /home -mtime -1 -type f -exec cp -a /dados01 {} \;
vira
find /home -mtime -1 -type f -exec cp -a {} /dados01 \;

Teste aí e diga se funfou.
t+


9. Funcionou

Emanuel Brentegani
brentegani

(usa Outra)

Enviado em 18/05/2010 - 08:13h

renato_pacheco : Muito Obrigado aprendi bastante sobre esse tipo de shell script vlw mesmo pela ajuda

Daemonio : Muito bem visto, foi so alterar e funcionou que é uma beleza ^^ Muito Obrigado tambem


10. Re: Shell Script para copiar arquivos alterados hoje [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 18/05/2010 - 08:17h

@Daemonio, poutz, nem tinha reparado nesse erro. Tb aprendi com isso, valew ae!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts