não sei ler! [RESOLVIDO]

1. não sei ler! [RESOLVIDO]

wandson piane
wanmozes

(usa CentOS)

Enviado em 23/04/2014 - 11:28h

bom dia a todos. amigos do VOL ainda estou aprendendo a dominar o canivete suíço dos admins Linux, e estou abrindo este tópico para saber se alguém pode me ajudar a entender o script abaixo, ele é um script de backup que foi escrito pelo antigo admin daqui e há umas expressões que ele colocou que eu ainda não aprendi e isto me gerou algumas duvidas quanto a interpretação do script, segue abaixo ele:

#!/bin/bash -x

DATA=`date +%d-%m-%Y`
MONTA="/etc/scripts/backup-NAS/mount-NAS.sh"
LISTA="/arquivos/Diretoria /arquivos/Auditoria /arquivos/Empresa /home"
LOG="/etc/scripts/backup-NAS/log"
DEST="/storage"

# Realiza o bakcup
backup () {

for i in $LISTA ; do

find $i -type f -ctime -1 |egrep -v '(\~\$|tmp|Thumbs|g-backup|exe)' >$0.tmp
tar czf $DEST/`date +%Y%m%d`-backup-${i##*/}.tar.gz -T $0.tmp 2>> $LOG/`date +%Y%m%d`-backup-${i##*/}.log

done

rm -f $0.tmp
test ! -s $LOG/`date +%Y%m%d`-backup-${i##*/}.log && rm -f $LOG/`date +%Y%m%d`-backup-${i##*/}.log
umount /storage
echo "backup realizado com sucesso"

}
check () {
df | grep Backup
}
check
if [ "$?" = "0" ] ; then
backup
else
# Caso o dispositivo de backpu esteja desmontado
exec $MONTA
check
if [ "$?" = "0" ] ; then
backup
exec /bin/umount /storage
else
echo -e "\n========$DATA - Falha na montagem do dispositivo backup não realizado\n========" >> $LOG/$DATA
exit 1
fi
fi
#########################################################################

!!!!!especificamente a minha duvida esta nestas linhas:
1º --- for i in $LISTA ; do (qual o significado do caractere "i")

2º --- find $i -type f -ctime -1 |egrep -v '(\~\$|tmp|Thumbs|g-backup|exe)' >$0.tmp (comando é este "-ctime" eu desconheço e que o comando egrep tem que executar quando diz pra ele \~\$| diretorios depois do pipe)

3º --- tar czf $DEST/`date +%Y%m%d`-backup-${i##*/}.tar.gz -T $0.tmp 2>> $LOG/`date +%Y%m%d`-backup-${i##*/}.log (qual o significado desta expressão "{i##*/}")

por favor perdoe-me a ignorância quanto as perguntas, pois onde e o que aprendi não me foi passado sobre o que pergunto estou realizando uma serie de pesquisas para poder dominar a ferramenta de forma mais eficaz, e desde de já agradeço a ajuda de todos e desejo um imenso sucesso a todos.


  


2. Re: não sei ler! [RESOLVIDO]

Alberto Federman Neto.
albfneto

(usa Sabayon)

Enviado em 23/04/2014 - 12:00h

não sou especialista em Shell Script, nem seguer sou Programador ou Profissional de TI, mas aguarde mais respostas da Galera especialista nisso aqui do VOL e dê uma olhada nestes bons cursos de Shell Script:

http://www.vivaolinux.com.br/dica/Curso-de-Shell-Script-Avancado
http://www.vivaolinux.com.br/dica/Curso-de-shell-script-em-video
http://www.vivaolinux.com.br/dica/Apostila-de-Shell-Script-para-iniciantes


Nosso colega Luis, fez um excelente curso de Shell Script, completo, veja estes posts e os links citados nele, acompanhe parte por parte:

http://www.vivaolinux.com.br/dica/Aulas-Shell-Script-do-zero-Completo
http://www.vivaolinux.com.br/dica/Aulas-Shell-Script-do-zero-Parte-9


3. Re: não sei ler! [RESOLVIDO]

Pedro Carlos Ferraz
pedrocf

(usa Debian)

Enviado em 23/04/2014 - 14:01h

A unica coisa que posso te ajudar é o a 1ª

For i in $LISTA

o i seria os itens da LISTA por exemplo:

for i in 1 2 3

echo $i


se você rodar este comando o resultado será:
1
2
3



4. Re: não sei ler! [RESOLVIDO]

Pedro Carlos Ferraz
pedrocf

(usa Debian)

Enviado em 23/04/2014 - 14:25h

a segunda pergunta referente ao find.

o significado das opções você pode ver executando:

man find

pelo que entendi -ctime busca os arquivos modificados nas ultimas 24 horas.


5. Re: não sei ler! [RESOLVIDO]

Phillipe Smith
smithux

(usa Arch Linux)

Enviado em 23/04/2014 - 15:29h

1) Já respondida pelo amigo pedrocf
2) Parcialmente respondida pelo amigo pedrocf.
No que diz respeito ao egrep -v '(\~\$|tmp|Thumbs|g-backup|exe) o "\~\$" significa arquivos terminados com ~. Por exemplo: arquivo.txt~.
3) ${i##*/}, no bash, refere-se a cortar tudo do começo da string até o "/", ou seja: "/arquivos/Diretoria" ficaria somente "Diretoria". Lembrando que aquele "i" refere-se a cada item contido na variável LISTA.

Bem, foi uma explicação muito resumida, mas, se quer entender mesmo deve consultar os manuais dos comandos e estudar sobre shell script.


6. Re: não sei ler! [RESOLVIDO]

wandson piane
wanmozes

(usa CentOS)

Enviado em 23/04/2014 - 16:59h

até aqui muito obrigado!
## albfneto, já peguei o material indicado por você e já estou dando uma estudada, valeu mesmo!
## pedrocf e smithux obrigado pelo esclarecimento quanto as expressões. somente mais uma uma explicação, no caso do "i" poderia ser uma outra letra qualquer ou ele é um padrão a ser seguido?


7. Re: não sei ler! [RESOLVIDO]

Pedro Carlos Ferraz
pedrocf

(usa Debian)

Enviado em 23/04/2014 - 17:16h

Poderia ser qualquer uma