sexta-feira, 20 de novembro de 2009

Rsync

Saudações a todos!!!

Hoje deveria continuar a falar sobre o LVM, porem vou continuar outro dia, o meu grande problema no momento é com backup, é que venho desenvolvendo um script para criar backup de um servidor de arquivos em shell, porem me deparei com um problema na hora de targear esses arquivos.
Esse backup estou fazendo com o rsync porem percebi que ele nao salva o nome em path absoluto e sim relativo, exemplo: 

/usr/local/bin ele grava como bin.
declarei uma variavel tipo array dirBkp="/usr/local/bin /totvs/bin/appserver /totvs/apo/logix"

for i in ${dirBkp}
do
echo $i
done

/usr/local/bin
/totvs/bin/appserver
/totvs/apo/logix

tar -zcvf /backupsrv/$dirBkp.tar.gz

deu para perceber o problema né, o codido do script entenderia o seguinte:

/backupsrv/totvs/apo/logix/.tar.gz

e isso causa um erro, bom o que vou garimpar agora é uma solução para esse problema, ou atraves do comando rsync ou atraves de qualquer outra solução.

vou começar pelo rsync.

Name
rsync  - rapido, versatil à distancia (e local), ferramenta de copia de arquivos
Sinopse

Local:  rsync [OPÇÃO...]  SRC.... [DEST]

Acesso via remote shell:
pull:    rsync [OPÇÃO...]   [USER@]HOST::SRC...[DEST]
push: rsync [OPÇÃO...] SRC... [USER@]HOST:[DEST]

Acesso via rsync daemon: 

pull: rsync [OPÇÃO...]  [USER@]HOST::SRC... [DEST]
        rsync [OPÇÃO...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

push: rsync [OPÇÃO] SRC... [USER@]HOST::DEST
          rsync [OPÇÃO] SRC... rsync://[USER@]HOST[PORT:]/DEST

Usos, com apenas um arg SRC e sem arg DEST ira listar os arquivos de origem, em vez de copar.

Descrição 
Rsync é um rapido e extraordinariamente versatil ferramenta de copia de arquivos. Ele pode  copiar localmente, para / de outro host atraves de qualquer shell remoto, ou para / de um daemon rsync remoto. Ele oferece  um grande numero de opções que controla cada aspecto de seu comportamento e permite a especificação muito flexivel do conjunto de arquivos a serem copiados. É famoso por seu delta algoritmo de transferencia, o que reduz a quantidade de dados enviados pela rede atraves do envio so das diferenças entre os arquivos de origem e os arquivos existentes no destino. Rsync é amplamente utilizado para backups e espelhamentos e como um comando de copia melhorada para uso diario.

Rsync encontra arquivos que precisam ser transferidos usandouma verificação rapida "algoritmo" (por padrão) que procura por arquivos que foram alterados no tamanho ou no tempo da ultima modificação. Quaisquer mudanças em outros atributos preservada (tal como solicitado por opções) são feitas no arquivo de destino diretamente, quando a rapida verificação indica que os dados do arquivo não precisa ser atualizado.

Alguns dos recursos adicionais do rsync são:

  • suporte para ligações de copia, dispositivos, proprietarios, grupos e permissões
  • excluir e excluir-de opções semelhantes para o GNU tar
  • CVS excluir um modo de ignorar os mesmos arquivos que o CVS ignoraria
  • pode usar qualquer shell remoto, incluindo ssh ou rsh
  • não requer previlegios de super-usuario
  • pipelining de transferencia de arquivos para minimizar os custos de latencia 
  • apoio anonimo ou atenticado pelo rsync (ideal para espelhamento)
Geral

Rsync copia arquivos de ou para uma maquina remota ou localmente no host atual (ele nao suporta copiar arquivos entre dois hosts remotos).
Ha duas maneiras diferentes para o rsync manter contato com  um sistema remoto: usando um programa shell remoto como o transporte (como o ssh ou rsh) ou contatando um daemon rsync diretamente via TCP. O transporte do shell remoto é utilizado sempre que o caminho de origem ou de destino contem um dois-pontos simples (:) depois de uma especificação de acolhimento. Comunicar-se com um daemon rsync diretamente acontece quando a origem ou o caminho de destino contem um duplo dois-pontos (::) depois de um separador de especificação de acolhimento ou quando um rsync://URL é especificada.
Como um caso especial, se um argumento de uma unica fonte é especificado sem um destino, os arquivos serão listados em um formato de saida similar a "ls -l"

Se nem a origem ou o caminho de destino especificar uma maquina remota, a copia ocorre localmente (ver também a lista de opção)
Rsync refere-se ao lado do local como o "cliente" e o lado remoto como "servidor". Não confunda "servidor" com um daemon rsync - daemon é sempre um servidor, mas um servidor pode ser um deamon ou um processo remoto shell gerado.

Uso
Voce usa o rsync da mesma forma que voce usa o RCP. Voce deve especificar uma origem e um destino, uma das quais pode ser remota.

talvez a melhor maneira de explicar a sintaxe esta com alguns exemplos:

rsync -t *.c foo:src/

isto seria transferir todos os arquivos que correspondem ao padrao *.c do diretorio atual para o diretorio src na maquina foo. Se algum dos arquivos ja existentes no sistema remoto, o protocolo de atualização rsync remoto é utilizado para atualizar o arquivo, enviando apenas as diferenças. 

rsync -avz foo:src/bar data/tmp

Tal transferencia recursivamente todos os arquivos do diretorio src/bar na maquina foo para o diretorio data/tmp na maquina local.


até mais, depois continuo o artigo.

Nenhum comentário:

Postar um comentário