Como determinar corretamente quais arquivos serão compactados [RESOLVIDO]

1. Como determinar corretamente quais arquivos serão compactados [RESOLVIDO]

João Paulo
haed

(usa FreeBSD)

Enviado em 16/03/2009 - 17:25h

Pessoal,

Eu estou desenvolvendo um script para backup atomatizado de um servidor onde trabalho, infelizmente não consegui determinar que tipo de expressão regular devo utilizar para compactar apenas as algumas sub-pastas.

Para ser mais especifico eu tenho uma estrutura de diretórios mais ou menos assim:

pasta root/
|
--------------subpasta1
--------------subpasta2
.
.
.
--------------arq1.tar.bz2
--------------arq2.tar.bz2
.
.
.


Ou seja, no fim quero gerar mais um novo "arqN.tar.bz2" mas que contenha apeas as "subpastasN". Os nomes das pastas são aleatórios e os dos arquivos seguem o padrão "bkp_mensal_aaaa-mm.tar.bz2", onde 'a' são os dígitos dos anos e 'm' são os dígitos do mês.

Espero ter sido bem claro e que vocês possam me ajudar.
Desde já agradeço.

Haed



  


2. MELHOR RESPOSTA

nelio
neliobjr

(usa Red Hat)

Enviado em 16/03/2009 - 18:07h

Entendi, desculpa não ter entendido antes...

tenta com esta estrutura de while.:



ls /root >> arquivo_com_pastas.log

cat /root/arquivo_com_pastas.log | while read x
do
if [ -d $x ]; then #verifica se é pasta ou arquivo se for pasta joga para outro arquivo.
echo $x >> /root/arquivo_somente_pastas.log
fi
done


tar -cvf backupteste.tar `cat /root/arquivo_somente_pastas.log`

provavelmente o find, deva ter alguma opção semelhante, mas não estou lembrado de cabeça...

ABS

3. Re: Como determinar corretamente quais arquivos serão compactados [RESOLVIDO]

nelio
neliobjr

(usa Red Hat)

Enviado em 16/03/2009 - 17:41h

Não ficou claro não, não consegui entender onde vc quer chegar com a ER nas subpastas, as subpastas tem nomes diferentes ou somente o final que muda, mais ou menos assim:

/root/oracle01
/root/oracle02
/root/oracle03

e vc quer fazer backup de tudo que tiver na pasta oracle01 e oracle03, excluindo do backup a oracle02, se for isto, não precisa de expressão, basta indica-los no tar

tar -zcvf destino/arquivo.tar.gz origem

ficando

tar -zcvf /backup/superbackup.tar.gz oracle01 oracle03

o que poderia se utilizado de ER, não sei se ajuda seria

tar -zcvf /backup/superbackup.tar.gz oracle0[1,3]

assim faria backup da pasta 1 e 3 em ER como no exemplo acima, quanto ao caso de serem nomes diferentes, fica mais complicado.

espero ter ajudado...

ABS


4. Re: Como determinar corretamente quais arquivos serão compactados [RESOLVIDO]

João Paulo
haed

(usa FreeBSD)

Enviado em 16/03/2009 - 17:52h

na verdade os nomes das subpastas podem ser qualquer coisa.

/root/balaba
/root/asdhaushd
/root/yrteuiytnjfs


mas a pasta /root contem também arquivos compactados contendo bakcups anteriores
/root/bkp_mensal_aaaa-mm.tar.bz2

O que acontece é que as subpastas aleatórias são atualizadas com backups diários e semanais, e ao final do mês quero compactar todas elas em um unico arquivo que ficará na pasta /root (por isso a existência desses arquivos compactados), mas não me interessa compactar junto os arquivos.

Eu quero fazer o seguinte:

tar cjf /root/balaba /root/asdhaushd /root/yrteuiytnjfs ... /root/subpastaX

ou seja compactar somente as pastas, que podem surgir mais, mudar de nome, não ter nenhum padrao etc


5. Re: Como determinar corretamente quais arquivos serão compactados [RESOLVIDO]

João Paulo
haed

(usa FreeBSD)

Enviado em 17/03/2009 - 08:35h

Valeu, isso vai realmente resolver sim o problema






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts