[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Re: Listar diretorios
From: |
Jeferson Santos |
Subject: |
Re: [shell-script] Re: Listar diretorios |
Date: |
Tue, 25 Aug 2009 22:42:37 -0300 |
Veja se esse script que eu fiz atende as suas necessidades:
-----------------------------------------------------------------------------
#!/bin/bash
#Programa em shell script que realiza backups individuais
#do home de cada usuário
#Este programa também controla a quantidade de backups,
#baseando-se na data de criacao dos mesmos.
#Atraves da variavel _NUMBACKUPS, é possível definir quantos
#backups existirao no total.
#
#
#
#Coloque os dados entre aspas duplas
_ORIGEM="/teste"
_DESTINO="/backups"
_NUMBACKUPS="2"
#--------------------Nao Mexa daqui pra baixo------------------
VERSAO="0.1"
CHANGELOG="
2008-08-30 - Disponibilizada a versao 0.1
"
MENSAGEM_USO="
$(basename "$0")
Criado por Jeferson dos Santos [ address@hidden ]
Este programa é disponibilizado e atualizado no site
http://jeferson.info e disponibilizado sob Licenca GPLv2.
Este programa realiza o backup do diretorio home do usuario,
criando copias em um destino, organizadas cronologicamente.
É possivel tambem definir o numero de backups a se manter.
Uso:$(basename "$0") [-h | --help | --ajuda | -V | --version | --versao]
-h, --help, --ajuda Mostra esta tela de ajuda e sai
-V, --Version, --versao Mostra versao e changelog e sai
"
case "$1" in
-v|--version|--versao)
echo ""
echo -n $(basename "$0"), versao "$VERSAO"
echo ""
echo "Changelog"
echo "$CHANGELOG"
exit 0
;;
-h|--help|--ajuda|*)
echo "$MENSAGEM_USO"
exit 0
;;
esac
#esta eh uma expressao regular para definir o formato em que os
#diretorios devem estar. Este formato ainda nao eh perfeito pq
#pega certas datas que nao existem como 31/02 mas sem grandes
#transtornos, ate o momento :-D
#Ainda irei analizar as funcoesZZ do Aurelio para ver como ele
#define exatamente a questao da data
_FORMATODIRETORIO='20[0-9]|[0-9]-(0[1-9|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[012])'
_DATA="$(date +%Y-%m-%d)"
#Esta funcao tem o objeto contar quantos diretorio existem
BACKUP_CONTAGEM () {
ls -1d -rt "$_DESTINO"/*/ | egrep -c "$_DESTINO""/"$_FORMATODIRETORIO
}
#Esta funcao se encarrega de organizar os diretorios por data reversa
BACKUP_ANTIGO () {
ls -1d -rt "$_DESTINO"/*/ | egrep "$_DESTINO""/"$_FORMATODIRETORIO
}
#testa se o diretório de destino existe
if [ ! -d "$_DESTINO" ] ;
then
echo "destino nao é diretório, abortando"
exit 1
fi
#se existir testa se existe permissão de escrita
if [ ! -w "$_DESTINO" ] ;
then
echo "destino sem permissao d escrita, abortando"
exit 2
fi
#Verifica se o diretorio de destino nao contem nenhum diretorio
#de backups
if [ ! $(echo $(BACKUP_CONTAGEM)) -eq 0 ] ;
then
#Enquanto houver mais diretórios de backup que o maximo especificado,
while [ `echo $(BACKUP_CONTAGEM)` -ge "$_NUMBACKUPS" ] ;
do
rm -Rf $(BACKUP_ANTIGO | sed -n 1p)
done
fi
#cria diretorio para comportar os backups
mkdir "$_DESTINO"/"$_DATA"
#aqui começa o backup propriamente dito.
#Para cada diretorio dentro de $_origem, ele gera um arquivo
#de backup dentro do diretorio de destino, no subdiretorio
#da data atual
for USUARIO in $(ls -1d "$_ORIGEM"/*/|rev|cut -d "/" -f 2 |rev) ;
do
tar zcvf "$_DESTINO"/"$_DATA"/"$(echo $USUARIO)".tar.gz
"$_ORIGEM"/"$USUARIO"
done
-------------------------------------------------------------------------------------------------------------------------------------
2009/8/18 Márcio Gil <address@hidden>
>
>
> Há... o comando for pode ser simplesmente:
>
> for DIR in !(*in|*out)/ ; do
> ...
>
> (não esquecer da linha "shopt -s extglob" no ".bashrc")
>
>
> > -----Original Message-----
> > From: Márcio Gil
> >
> > Que tal:
> >
> > ls -d !(*in|*out)/
> >
> > > -----Original Message-----
> > > FromInformática GMAIL
> > >
> > > Bom dia pessoal,
> > > Antes de mais nada quero agradecer a oportunidade de
> > > participar desse grupo,
> > > estou entrando hoje (13/08/2009)
> > > Comecei a mexer com Linux agora e tenho muitas duvidas sobre
> > > Shell-script e
> > > agradeço antecipadamente se alguém puder me ajudar.
> > >
> > > Estou com a seguinte situação, tenho um diretório /home no
> > > meu servidor onde
> > > tem as pastas dos usuários.
> > > Existe as pastas dos usuários e cada usuário também tem mais
> > > 2 pastas que
> > > terminam com in e out.
> > > Por exemplo: user1, user1in, user1out, xyz, xzyin, xyzout, etc.
> > >
> > > Eu quero listar apenas os usuários e não os in e out, como
> > > posso fazer isso?
> > >
> > > Eu estou querendo criar um script de backup para que ele
> > > entre no user1 e da
> > > um tar compactando, depois ele entre no xyz e dar um tar e
> assim
> > por
> > > diante.
> > >
> > > Eu consegui que ele entre em todos os diretórios.
> > >
> > > Segue o script bem simples
> > >
> > > #!/bin/bash
> > > #mkdir /mnt/win/$(date +"%d%m%Y")
> > >
> > >
> > > for DIR in $(ls -d */)
> > > #|grep '^out')
> > > do
> > > echo "Efetuando Backup do diretorio - $DIR..."
> > > # tar -cvjf /mnt/win/$(date +"%d%m%Y")/Backup-$DIR-$(date
> > > +"%d%m%Y").tar.bz2 /home/$DIR 2>error.txt
> > > Done
> > >
> > > Alguém pode me dar um ajuda?
> > >
> > > Obrigado
> > >
> > > Andre
> > >
> >
> >
>
>
>
--
Abraços,
Jeferson Santos
[As partes desta mensagem que não continham texto foram removidas]