Problema com script de backup.

Iniciado por r40n1, 05 de Outubro de 2009, 23:43

tópico anterior - próximo tópico

r40n1

Olá pessoal...
estou tendo um pequeno problema com um script de backup que estou tentando criar.
Antes desse eu tinha criado um que copiava todos os arquivos .bash de um determinado diretório pra outro em uma hora especificada pelo usuário, agora o cenário mudou um pouco.

O script deve copiar todos os arquivos com terminação .bash que estejam abaixo do diretório do usuário (dentro dos diretórios e sub-diretórios) e copiar pra uma pasta que já foi criada para backup.
Creio que o problema seja com o comando locate ou com o meu for mal feito.
Por favor, desconsiderem os erros noobs, estou começando agora!

eis o código:

#!/bin/bash
echo A que horas voce quer fazer o backup dos seus scripts bash?
read hora

locate /home/*.bash > arquivosbash.txt
lista=$(cat arquivosbash.txt)

for itens in $lista
do
echo cp $itens /home/raoni/raoni_backup > comandos.txt
done

at $hora -f comandos.txt



Agradeço desde já a ajuda de todos!!!;)

clcampos

#1
Tente as alterações (em vermelho):

Citar
#!/bin/bash
echo A que horas voce quer fazer o backup dos seus scripts bash?
read hora

locate /home/*.bash > arquivosbash.txt
lista=$(cat arquivosbash.txt)

> comandos.txt

for itens in $lista
do
   echo cp $itens /home/raoni/raoni_backup >> comandos.txt
done

at $hora -f comandos.txt

Quanta alteração heim!

obs.: Não testei sua rotina, só vi a rotina direto aqui, mas acho que já vai rolar legal... a sim, faltam algumas consistências, mas esta ótimo.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

r40n1

#2
Citação de: clcampos online 05 de Outubro de 2009, 23:51
Tente as alterações (em vermelho):

Citar
#!/bin/bash
echo A que horas voce quer fazer o backup dos seus scripts bash?
read hora

locate /home/*.bash > arquivosbash.txt
lista=$(cat arquivosbash.txt)

> comandos.txt

for itens in $lista
do
   echo cp $itens /home/raoni/raoni_backup >> comandos.txt
done

at $hora -f comandos.txt

Quanta alteração heim!

obs.: Não testei sua rotina, só vi a rotina direto aqui, mas acho que já vai rolar legal... a sim, faltam algumas consistências, mas esta ótimo.


Legal...
Testei, mas não funcionou direito!
Pelo que entendi, dessa forma o script vai criar o arquivo comandos.txt antes do for e depois vai adicionar a linha
echo cp $itens /home/raoni/raoni_backup
no mesmo, pra depois o at chama-lo e realiza-lo!

Aqui o que está acontecendo é o seguinte: o script roda normalmente, localiza os arquivos .bash e salva todos na lista arquivosbash.txt. Essa $lista é criada normalmente, porém o for não está conseguindo ler a mesma!
O arquivo comandos.txt também é criado, porém não existe comando nenhum gravado nele, pois a linha 12, que contém o comando echo está dando erro.

Resumindo, esse script está apenas perguntando a que horas o usuário quer fazer o backup e criando um arquivo com a lista de todos os arquivos de interesse dele, e na hora marcada ele não copia esses arquivos.
Não sei o que está acontecendo, aparentemente o script está correto, mas conto com a ajuda de todos para descobrirmos!
Também espero estar contribuindo para o desenvolvimento dos scripts dos usuários por aqui logo em breve!:)

Obrigado, Abração;)

Imoogi

#3
ae r40n1 tenta esse



#!/bin/bash
echo A que horas voce quer fazer o backup dos seus scripts bash?
read hora

lista=`locate -o /home/ *.bash`

for itens in $lista
do
  echo "cp $itens /home/backup" >> comandos.txt
done

at $hora -f comandos.txt


vc tem que colocat o caminho da pasta backup no comando "cp" dentro do "for", de resto ta funfiando ;D

clcampos

Caro r40n1 tudo bem?

Até sei que já tem uns dias que postou o problema, e talvez já tenha resolvido, porém fiquei curioso e gostaria de saber qual é o erro que dá na rotina?

Pergunto porque aqui o for funcionou perfeitamente.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

r40n1

Citação de: Imoogi online 06 de Outubro de 2009, 18:09
ae r40n1 tenta esse



#!/bin/bash
echo A que horas voce quer fazer o backup dos seus scripts bash?
read hora

lista=`locate -o /home/ *.bash`

for itens in $lista
do
  echo "cp $itens /home/backup" >> comandos.txt
done

at $hora -f comandos.txt


vc tem que colocat o caminho da pasta backup no comando "cp" dentro do "for", de resto ta funfiando ;D

Cara, fiz assim e não funfou =/
ele diz que o parâmetro 'o' não existe no comando locate.

E eu já havia colocado o caminho da pasta de backup no meu comando cp, o que será que está acontecendo? =/
echo cp $itens /home/raoni/raoni_backup > comandos.txt
Valeu pela ajuda! ;)

--------------------------

Citação de: clcampos online 08 de Outubro de 2009, 11:52
Caro r40n1 tudo bem?

Até sei que já tem uns dias que postou o problema, e talvez já tenha resolvido, porém fiquei curioso e gostaria de saber qual é o erro que dá na rotina?

Pergunto porque aqui o for funcionou perfeitamente.

Olá, clcampos, obrigado por estar ajudando!
Apesar de ser um problema simples, ainda não o resolvi. Meu compilador deve estar com preguiça! :)

Quando executo o script conforme você me orientou, o terminal retorna o seguinte erro:

raoni@raoni-laptop:~/Documentos$ bash at2.bash
A que horas voce quer fazer o backup dos seus scripts bash?
11:45
at2.bash: line 12:    echo: comando não encontrado
at2.bash: line 12:    echo: comando não encontrado
at2.bash: line 12:    echo: comando não encontrado
at2.bash: line 12:    echo: comando não encontrado
at2.bash: line 12:    echo: comando não encontrado
at2.bash: line 12:    echo: comando não encontrado
at2.bash: line 12:    echo: comando não encontrado
warning: commands will be executed using /bin/sh
job 11 at Fri Oct  9 11:45:00 2009
raoni@raoni-laptop:~/Documentos$

Todos na linha 12, no comando echo que fica dentro do for.
------------------
Caros...
não sei o que está acontecendo mesmo, mas continuo contando com a ajuda de todos para descobrir!
Abraços!;)