[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Alguem conhece algum programa de backup que comprima arquivos individualmente mantendo a estrutura original de diretorios ?



> Nao porque desse jeito o gzip -r já faria e por cima do arquivo
> original, lembre-se estou falando de backup e por isso nao posso tocar
> ou modificar o original.
>
> Eu fiz um funcao para ser usado no meu script que resolve o problema,
> se alguem tiver interesse é só copiar para seu script :
> function do_copy() {
>   # copia uma pasta de um local de origem
>   # para um local de destino
>   # Porem faz a compactacao para o destino se a extensao nao for a do
> tipo ja compactada
>   copiar_de_origem="$1"
>   copiar_para_destino="$2"
>   RESULT_VALUE="OK"
>   LISTA_NAO_COMPACTAR=".7z .ace .ain .alz .apz .ar .arc .ari .arj .ark
> .axx .b64 .ba .bh .boo .bz .bz2 .bzip \
>   .bzip2 .c00 .c01 .c02 .car .cbr .cbz .cp9 .cpgz .cpt .dar .dd .deb
> .dgc .dist .ecs .efw \
>   .fdp .gca .gz .gzi .gzip .ha .hbc .hbc2 .hbe .hki .hki1 .hki2 .hki3
> .hpk .hyp .ice .ipg \
>   .ipk .ish .j .jgz .jic .kgb .lbr .lemon .lha .lnx .lqr .lzh .lzm
> .lzma .lzo .lzx .md .mint \
>   .mpkg .mzp .p7m .package .pae .pak .paq6 .paq7 .paq8 .par .par2 .pbi
> .pcv .pea .pf .pim .pit \
>   .piz .pkg .pup .pup .puz .pwa .qda .r00 .r01 .r02 .r03 .rar .rev .rk
> .rnc .rpm .rte .rz .rzs \
>   .s00 .s01 .s02 .s7z .sar .sdc .sdn .sea .sen .sfs .sfx .sh .shar
> .shk .shr .sit .sitx .spt \
>   .sqx .sqz .tar .taz .tbz .tbz2 .tg .tgz .tlz .tz .uc2 .uha .vsi .wad
> .war .wot .xef .xez \
>   .xpi .xx .y .yz .z .z01 .z02 .z03 .z04 .zap .zip .zipx .zix .zoo .zz
> .jpg .png .gif .cab .exe .avi .mpg .mp3"
>
>   LISTA_NAO_SALVAR=".tmp .$ .~ .swp"
>
>
>   if [ "$copiar_de_origem" = "" ] ; then
>      echo "Erro na copia de arquivos : O endereco de origem não foi
> informado." return
>   fi
>   if [ "$copiar_para_destino" = "" ] ; then
>      echo "Erro na copia de arquivos : O endereco de destino não foi
> informado." return
>   fi
>   if ! [ -d  "$copiar_para_destino" ] ; then
>     mkdir -p "$copiar_para_destino"
>   fi
>
>   # lendo todos os arquivos na pasta de origem e jogando para dentro
> de um arquivo temporario
>   temp=`mktemp`
>   find $copiar_de_origem/ -type f >$temp
>   while read ARQ_ATUAL ; do
>     ARQ_ATUAL_PASTA=`dirname "$ARQ_ATUAL"`
>     NOME_ARQUIVO=`basename "$ARQ_ATUAL"`
>     NOME_ARQUIVO_EXT=${NOME_ARQUIVO#*.}
>     NOVA_PASTA="$copiar_para_destino/$ARQ_ATUAL_PASTA"
>     COMPACTAR_ARQUIVO="S"
>     SALVAR_ARQUIVO="S"
>     [[ "$LISTA_NAO_SALVAR" =~ "${NOME_ARQUIVO_EXT}" ]] &&
> SALVAR_ARQUIVO="N" ! [ -d "$NOVA_PASTA" ] && mkdir -p "$NOVA_PASTA"
>     if [ -d "$NOVA_PASTA" ] && [ "$SALVAR_ARQUIVO" = "S" ] ; then
>       [[ "$LISTA_NAO_COMPACTAR" =~ "${NOME_ARQUIVO_EXT}" ]] &&
> COMPACTAR_ARQUIVO="N"
>       if [  "$COMPACTAR_ARQUIVO" = "S" ] ; then
>         echo "[$NOME_ARQUIVO_EXT] transferindo [$ARQ_ATUAL] para
> [$NOVA_PASTA/$NOME_ARQUIVO.gz]"
>         gzip -c "$ARQ_ATUAL" >"$NOVA_PASTA/$NOME_ARQUIVO.gz"
>       else
>         echo "[$NOME_ARQUIVO_EXT] transferindo [$ARQ_ATUAL] para
> [$NOVA_PASTA/$NOME_ARQUIVO]"
>         cp  "$ARQ_ATUAL" "$NOVA_PASTA/$NOME_ARQUIVO"
>       fi
>     else
>       echo "Falha ao copiar o arquivo [$ARQ_ATUAL] para [$NOVA_PASTA]."
>       RESULT_VALUE="FALHOU"
>     fi
>   done < $temp
>   [ -f "$temp" ] && rm -f "$temp"
> }
>
>
> Testei agora a pouco e tá funcionando redondo, é só colocar no seu
> script a funcao acima e usa-la assim :
> do_copy "/home/fulano" "/media/usbdisk"
>
> Só preciso acrescentar mais tipos de arquivos que considero já
> compactados e lista de extensoes de arquivos temporarios para o backup
> ir mais rapido e menor.
>
> []'s  a todos.
>
> 2009/8/13 Marcos Paulo Serafim <mpserafim@gmail.com>:
> > Se a idéia é varrer os diretórios e compactar, usar um:
> >
> > find . -exec gzip '{}' \;
> >
> > Não resolve?
> >
> > --
> > Marcos Paulo Serafim
> > Analista de Suporte Técnico / Support Analyst
> > mpserafim (at) gmail (dot) com
> > Orlandia/SP - Brazil
> > MSN: mpserafim (at) gmail (dot) com; Linux User: #171191;
> > FP: EB38 D704 A4FD 2677 A2B2 A052 F44E CAA5 45FB 1F42
> >
> >
> >
> > Fabiano Pires escreveu:
> >
> > Cara, vc conhece o DAR (Disk ARchiver)? É um sistema de backup
> > orientado para armazenamento em mídias como HDs e discos (CDs/DVDs).
> > Você pode setar diversas opções:
> > * Compressão com gzip/bzip2/nenhuma compressão
> > * Arquivos que não serão comprimidos (através de RegEx)
> > * Tamanho mínimo de arquivo para compressão (para não gerar overhead)
> > * Suporte nativo a multivolumes
> > * Execução de comandos entre cada volume gerado
> >
> > e muito mais. Acho que vale a pena dar uma conferida
> >
> > http://dar.sf.net
> >
> > Fabiano
> >
> >
> > 2009/8/13 hamacker <sirhamacker@gmail.com>:
> >
> >
> > Bem, como se trata duma solução multiplataforma não poderei usar ext3
> > c/ compressão até que haja drivers para esse tipo de acesso
> > transparente em outras plataformas como Linux.
> > O empecilho operacional é que o 7zip que usamos para backup tá
> > demorando demais e trabalhar com multi-volumes tem sido um problema
> > usando DVDs. O processo seria muito mais agil se os arquivos fossem
> > mantidos da forma como lhe falei.
> > Já estou criando um script para realizar este tipo de operação, mas se
> > houvesse um programa já pronto para essa tarefa, isso facilitaria meu
> > trabalho.
> >
> > []'s
> >
> > 2009/8/13 henry <jmhenrique@yahoo.com.br>:
> >
> >
> > Olá pessoal,
> >
> > Estou procurando algum programa ao estilo rsync que recrie a estrutura
> > original porém com os arquivos individualmente, explico.
> >
> > Os programas como tar/gz, 7zip, rar, zip, etc... comprimem diretorios
> > inteiros depositando todos os diretórios dentro de um único pacote
> > .7z/zip/tar.
> > Eu gostaria de saber se há algum programa que apenas recrie os
> > diretórios e comprima apenas os arquivos que existem nele, ex:
> >
> > /home/fulano/teste.odt
> > /home/fulano/projetos/projeto-importante.dxf
> >
> > se tornaria na unidade de destino :
> > /home/fulano/teste.odt.gz
> > /home/fulano/projetos/projeto-importante.dxf.gz
> >
> > Eu gostaria de fazer isso para facilitar alguns obstaculos
> > operacionais que temos por aqui.
> > Eu venho estudando uma forma do rsync fazer isso, mas ainda não achei.
> >
> > Alguem conhece um método assim ?
> >
> >
> > Olá!
> >
> > o obstaculo operacional seria falta de espaço?
> >
> > Se for, andei lendo a algum tempo atrás um pessoal aplicando patch no
> > ext3 para compressão nativa - a-lá diretorios compactados
> > transparentemente do nt/w2k/xp... Meio arriscado, eu diria. rs
> >
> > Ou então, monte o diretorio do servidor na estção via nfs e faça um
> > script pra
> > comparar / compactar um-a-um direto na pasta do servidor de backup...
> > (apenas uma outra idéia...)
> >
> > [ ]s, Henry.
> >


Só está faltando um 
===========
"se arquivo já existe...
md5sum_arquivo_estacao != md5sum_arquivo_backup
fazer a copia/compactacao.
senão
passar para o proximo.
===========

assim fica mais rapidinho... menos banda, menos discos, etcetcetc...

:D :D :D 
[ ]s, Henry


Reply to: