shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]