Biologia + Ciências Naturais

Usando o Grsync e Rsync para Backup e Sincronização

Quando ganhei comprei meu primeiro pendrive uma das coisas que prometi a mim mesmo foi usá-lo apenas para transportar arquivos temporariamente. Minha intenção com isso era não me transformar em mais um maluco com milhões de arquivos dentro da raiz ocupando espaço e quando perdesse o pendrive por vírus ou por roubo “recuperação alheia não-voluntária” não ficasse chorando por aí: “Perdi minha monografia, mimimimi”.

Bem, usar o pendrive como um disquete (me senti com 100 anos agora) é uma tremenda burrice. Mover vários arquivos de projetos comigo era bem mais produtivo, mas tinha seus problemas. A cada modificação que eu fazia no pendrive, ao chegar em casa, tinha que caçar o arquivo modificado e copiá-lo para a mesma pasta no computador. Outra coisa era quando eu trabalhava no pc e tinha que mandar os arquivos modificados para o pendrive. Tinha horas que era mais fácil formatar o pendrive e copiar tudo novamente do que ficar copiando e colando arquivos.

Felizmente para nós existe uma ferramenta que faz esse servicinho canalha. O rsync é um comando do Linux que é usado para sincronizar arquivos entre servidores. Uma de suas principais funções é facilitar o trabalho de webdesigners ao editar o site em seus computadores e enviá-los para a web. Sua função original é permitir que servidores espelho tenham sempre os mesmos arquivos nos mínimos detalhes. O rsync é bem simples de usar e pode ser usado localmente ou online para sincronizar arquivos. O resultado final é bastante semelhante ao obtido por quem usa o aplicativo do Dropbox, só que aqui usaremos para sincronizar pastas locais mesmo.

Usando o rsync

Caso eu não tenha mencionado antes, o Rsync é uma ferramenta de console. Teremos que escrever comandos de terminal para usá-lo, mesmo assim ele é bem simples. Uma curiosidade do rsync é que além de permitir a sincronização ele também é uma ferramenta de backup, é só uma questão de como você usa. E para mim é uma ferramenta de bacukp bastante eficiente.

Uma coisa legal do rsync é que ele é mais que uma ferramenta que busca os arquivos mais recentes, copia e cola. Ele também analisa os arquivos que vai copiar. Isso permite que ele avalie o quão modificado o arquivo foi. Para que? Ele simplesmente evita copiar arquivos completos, ele copia apenas as partes do arquivo que foram modificadas e faz “enxertos”. Isso faz com que a sincronização seja muito mais rápida. Para nossos arquivos no pendrive talvez a diferença seja pequena, mas para 10gb de arquivos .rpm em um repositório Linux isso pode poupar algumas horas de vida.

Sintaxe:

A sintaxe de comandos do rsync é bem simples. O básico é:

rsync –opções /origem /destino

Existe uma coisa importante aqui. Há uma diferença entre “/origem” e “/origem/”. Enquanto o primeiro significa “copie a pasta” o segundo significa “copie o conteúdo da pasta”. Se você usar /origem a pasta de origem e todo seu conteúdo será copiado pelo rsync. Com a outra opção, apenas o conteúdo daquela pasta específica. A primeira opção pode ser usada para sincronizar várias pastas de uma vez. A segunda permite que a pasta de destino tenha um nome diferente da de origem, útil para backups.

As opções é que são o grande lance para você personalizar o rsync. Aqui tem uma lista das opções básicas:

  • -v: aumenta a “verbosidade”. Simplesmente faz o rsync relatar detalhadamente o que está fazendo.
  • -q: o cale a boca faz o rsync trabalhar caladinho. Ele só fala alguma coisa quando termina.
  • -r: faz o rsync caçar dentro das subpastas (recursivo). Sem isso ele busca apenas dentro do primeiro nível da origem. Serve para copiar apenas um grupo específico de arquivos.
  • -n: rodada de testes. Serve para você testar o rsync sem correr o risco dele modificar seus arquivos.
  • –delete: apaga arquivos do destino que não existam na origem. Este comando garante que a origem e destino sejam exatamente iguais depois da sincronização. Sem isso, o destino acumularia com arquivos que não existem mais na origem. Desativá-lo pode ser útil para backups.
  • -z: ativa a compressão, torna a transferência mais rápida.
  • –compress-level=: esta opção define o nível de compressão de -z. Vai de 0 (o mesmo que nada) a 9 (compressão máxima). Pode fazer o computador ficar lento em transferências MUITO grandes.

E para quem tem pouco costume com o terminal, os comandos feitos com uma única letra são seguidos de “-” enquanto os que são expressões são seguidos de “–“. Os comandos de uma letra podem ser agrupados “-vrnz” enquanto os de palavras precisam ser separados uns dos outros “–suffix=… –backup-dir=…”.

Então um comando simples para o rsync que sincronize e faça com que os arquivos da origem e destino sejam exatamente iguais seria:

rsync -v -r -z –delete /origem/ /destino

Pronto, este comando genérico já é suficiente para fazer a sincronização entre os arquivos do meu pendrive e a minha pasta local. Mas, eu quero algo mais fácil.

Usando o Grsync

Para quem tem arrepios da linha de comando ou simplesmente quer mais facilidades o Grsync é a solução. Ele simplesmente é um programa que serve para controlar o que o rsync anda fazendo. Ele configura as opções para você e o mais legal, ele guarda suas sincronizações. Com estas opções é possível sincronizar vários conjuntos de pastas sem ter que escrever o comando rsync 20x ou usar o shell-script.

O Grsync pode ser instalado na maioria das distribuições com os repositórios padrão. Ele sempre tem o nome “grsync” e atualmente está na versão 1.1.1. Ele bem simples e intuitivo. Além de dar acesso as principais funções do rsync ele também as explica e permite usar as funções mais avançadas inserindo novas opções manualmente.

A interface do Grsync é sem mistérios. Você deve especificar a origem e destino das pastas a serem sincronizadas nos campos. Lembre-se do que falei acima sobre colocar a barra invertida () no fim dos endereços de origem (ou não) pois o grsync não fará isso por você (e não fez por mim, como podem ver).

As principais opções do rsync podem ser ativadas e desativadas com as caixas. Se você parar o mouse sobre elas, terá uma pequena explicação sobre o que elas fazem. Para usar o Grsync basta clicar nas engrenagens (full run) ou no "i" para uma rodada de teste (-n).
As principais opções do rsync podem ser ativadas e desativadas com as caixas. Se você parar o mouse sobre elas, terá uma pequena explicação sobre o que elas fazem. Para usar o Grsync basta clicar nas engrenagens (full run) ou no “i” para uma rodada de teste (-n).

As Basic Options são praticamente tudo que precisamos. Por exemplo, ativar “verbose”, “Do not leave filesystem” e “Show transfer progress” equivalem ao comando:

rsync -v -x -r –progress /origem /destino/

Mesmo com nada marcado o Grsync já envia um comando com algumas opções pré-marcadas como a recursividade (-r), por isso ela não aparece entre as opções da interface.

Algumas opções como “Windows compatibility” estão pré-configuradas para adicionarem opções que facilitem o uso do rsync. Ela equivale à opção “–modify-window=1” que torna o rsync menos metódico, serve para melhorar a compatibilidade com sistemas de arquivos retrô como o FAT16.

Quando o rsync está trabalhando, o grsync mostra este painel. Aqui você pode pausar o rsync ou interromper. A opção "Rsync output" mostra o "verbose" para que você acompanhe os arquivos modificados em detalhes. No rsync output também é possível ver o comando usado pelo Grsync para sincronizar os arquivos. É uma forma legal de aprender como o rsync funciona.
Quando o rsync está trabalhando, o grsync mostra este painel. Aqui você pode pausar o rsync ou interromper. A opção “Rsync output” mostra o “verbose” para que você acompanhe os arquivos modificados em detalhes. No rsync output também é possível ver o comando usado pelo Grsync para sincronizar os arquivos. É uma forma legal de aprender como o rsync funciona.

Nas Advanced options existem opções que podem ser úteis para casos mais específicos. A compressão (-z) é ativada aqui. É possível tornar a verbosidade mais detalhada ainda com “Show itemized changes list”. A opção “Always checksum” ajuda a tornar o rsync mais analítico, testando os arquivos detalhadamente em busca de modificações. Raramente é necessária, mas em caso de problemas com as datas dos arquivos na origem e destino (sistema recuperado de um backup, por exemplo) pode ser útil.

Opções Avançadas do Grsync

Criando perfis

Uma coisa muito prática do Grsync são os perfis. Ele permitem que sejam feitas configurações específicas de pastas e opções que podem ser salvas e usadas sempre que necessário. É muito mais prático do que reescrever os comandos do rsync ou ter que configurar tudo a cada rodada. Os perfis também guardam as opções adicionais que adicionemos a ele.

Para criar um perfil basta clicar no sinal de mais e dar um nome ao perfil, fim da história. Para modificar/usar um perfil basta selecioná-lo que as opções serão carregadas no Grsync. Modificações são salvas automaticamente.

Grsync avançado

Para usar as funções avançadas o rsync basta aplicar algumas opções no Grsync usando o Additional options onde as opções são inseridas. Basta adicioná-las aqui e serão executadas normalmente pelo grsync. Elas possuem algumas aplicações bem específicas e interessantes. Aqui não irei abordar as opções que envolvem protocolos e daemons pois não fazem parte do meu escopo. Estou usando o rsync apenas localmente.

  • -I: esta opção faz o rsync atualizar os arquivos mesmo que tenham a mesma data de modificação e tamanho. Serve para forçar a atualização de todos os arquivos. Note que é um I maiúsculo, o i minúsculo é outro comando.
  • –size-only: usa os tamanhos dos arquivos como parâmetro de comparação para ver quem foi modificado ou não. Pode ser ineficiente, mas é uma opção caso você esteja tendo problemas com as datas de modificação dos arquivos, algo que pode acontecer no NTFS ou quando se usa um outro sincronizador/backup que tenha apagado as datas de modificação.
  • -c: essa opção é barra pesada, ela é o “Always use checksum” do Grsync. Basicamente, ela faz com que além de o rsync comparar as datas e tamanhos dos arquivos ele também compare os checksums o que torna o processo todo altamente preciso. O preço a pagar é que o teste de checksum pode levar horas se os arquivos forem muito grandes.

Usando o Modo Backup

O modo backup é ativado com a opção -b. Ela faz com que o rsync guarde cópias dos arquivos que modifica. Isso evita que os arquivos sejam simplesmente apagados e permite que você crie uma coleção de versões de um mesmo arquivo.

rsync -b –backup-dir=bkp –sufix=.old /origem/ /destino

Por padrão, os arquivos de backup recebem um til no fim do nome. Isso pode ser modificado com a opção –suffix que personaliza o sufixo identificador dos arquivos backup. Os backups são criados na mesma pasta em que está o arquivo original. Para evitar isso a opção –backup-dir permite especificar uma pasta para guardá-los em separado. Basta colocar um nome qualquer que ela ficará na pasta de destino. O rsync é bastante esperto e mesmo que a opção –delete seja ativada, ele não apaga a pasta de backup se a opção estiver ativada. Outra curiosidade da pasta de backup é que ela guarda a hierarquia das pastas que modifica, então os arquivos ficam organizadinhos dentro dela da mesma forma que ficavam nos seus locais de origem. Um ponto fraco do backup é que ele só guarda uma das ultimas versões dos arquivos que modifica.

Caso o diretório de backpup fique dentro da pasta de destino (o caso acima, diga-se) ele pode comportar-se de forma estranha se combinado com a opção –delete. O que vai acontecer é que o backup-dir não existe na origem e será apagado, mas também será feito um backup do backup antes disto. Como consequência você terá uma infinidade de pastas de backup contendo backups dos backups e assim por diante. Uma forma de evitar isso é colocar a pasta de backup fora da pasta de destino usando “../” que significa “uma pasta acima”. É bom lembrar que isto é relativo ao diretório de destino:

rsync -b –backup-dir=../bkp

Existem outras opções do rsync que podem ser úteis para fazer backups de uma forma mais elaborada. Uma delas é o “–compare-dest=”. Esta opção faz com que o rsync compare o diretório de origem com ela em vez de comparar com o diretório de destino. Na hora de copiar os arquivos no destino, ele copia apenas os arquivos que são diferentes, em vez de copiar todos. Isso é o equivalente a um Backup Incremental. Isso pode ser muito poderoso se combinado com shell-script.

Então a minha situação é a seguinte: tenho meus originais e uma pasta de destino sincronizada, mas antes da sincronização quero fazer um backup dos arquivos que serão modificados, um pré-backup. A organização seria assim:

  • /origem – originais
  • /destino – pasta que será sincronizada depois
  • /backup – arquivos que foram modificados na sincronização

O comando pré-sincronização seria:

rsync –compare-dest=/origem /destino/ /backup

É bom lembrar que a localização de –compare-dest é relativa ao destino (neste caso, backup). Da forma como coloquei acima a origem é uma outra pasta qualquer na raiz do sistema. Outra opção seria escrever “../Origem”. Ambas são válidas. Mesmo –backup-dir aceita valores absolutos de endereço como “/media/pendrive/backup”.

Eu poderia ter o mesmo efeito usando o comando “rsync -b -backup-dir=../backup /origem/ /destino”. Só que usando a opção anterior posso ter um refinamento maior. Por exemplo, é possível combinar com as opções de backup e o ter um backup incremental de segundo nível:

rsync –compare-dest=../origem –backup-dir=old /destino/ /backup

Depois é só fazer a sincronização normal (origem X destino) e terei três versões do mesmo arquivo, em ordem de idade: origem/destino, backup, old.

Por fim, duas opções que podem ser úteis, são: –include-from e –exclude-from. São opções que permitem incluir e excluir diretórios ou arquivos específicos da sincronização. As localizações neste caso são relativas à pasta de origem:

O arquivo do exlcude/include-from é simplemente uma lista com as pastas e arquivos que você incluir ou excluir da sincronização.
O arquivo do exlcude/include-from é simplesmente uma lista com as pastas e arquivos que você incluir ou excluir da sincronização.

Com o –exclude-from é possível livrar-se das pastas de sistema como Recycle e .trash caso esteja sincronizando uma partição inteira. O –include-from é interessante quando se quer incluir pastas externas também.

E finalmente, o comando que uso para fazer o Backup Incremental:

rsync -rtxvzbiyh –progress –delete –compress-level=9 –compare-dest=/arquivos –delete –exclude-from=/HD-Externo/sync-exclude.list /HD-Externo/ /HD-Externo/Backup/

O que esse comando enorme faz é bem simples. Ele compara a partição em que guardo meus arquivos todos com um Hd externo onde ficam os backups. Caso o rsync queira fazer modificações nos arquivos, os candidatos são copiados para a pasta Backup no Hd externo. O arquivo sync-exclude.list lista pastas que só existem no hd externo, evitando que seja feito backup delas, pois nunca são sincronizadas e ele mesmo, pois acabaria sendo mandado para o beleléu também.

E para a sincronização normal uso o comando:

rsync -rtxvzibyh –progress –delete –compress-level=9 –exclude-from=/arquivos/sync-exclude.list -yh /arquivos/ /HD-Exerno

Neste aqui o sync-exclude.list contém uma lista de nomes de diretórios e arquivos que devem ser ignorados.

Sincronizações múltiplas

As opções batch permitem exportar os arquivos a serem modificados em uma operação para que sejam sincronizados em outro lugar. É uma opção estranha, mas tem suas aplicações. Funciona assim:

  • Você usa o rsync normalmente e ativa a opção –write-batch=lote ou –only-write-batch=lote.
  • Depois você pega o arquivo “lote” que ele produziu e leva com você para outro computador.
  • Rode o rsync com a opção –read-batch-lote para usar o arquivo “lote” como origem. Ele contém apenas as modificações feitas no destino.

Isso é legal pois pode ser usado para sincronizar sistemas diferentes. Uma de suas aplicações é fazer um acumulado de modificações enquanto o destino estiver indisponível. O ponto fraco que é o destino usado precisa ser exatamente igual em ambos os casos ou as modificações serão insuficientes.

Outras opções:

  • -u: Evita modificar os arquivos do local de destino caso sejam mais novos que os da origem. Pode ser muito útil mantê-lo ativado em sincronizações pois caso você modifique os arquivos na pasta de destino e depois esqueça disto, o update evitará que sejam substituídos por uma versão mais antiga.
  • -t: atualiza as datas de modificação do destino com as da origem. Isto evita que os arquivos do /destino sejam eternamente velhos o que forçaria o rsync a atualizá-los permanentemente, mesmo que não sofressem modificações (não usar o -t acaba tendo o efeito de um -I). É sempre bom ativar esta opção, em todos os casos.
  • -x: não sai do sistema de arquivos. Serve para quem tem o costume de montar partições em pastas pessoais. Esta opção evita que a recursividade (-r) faça o rsync caçar arquivos em diretórios que sejam pontos de montagem para outras partições. É uma medida de segurança pois isto poderia fazer o rsync entrar em um looping dependendo da complexidade dos pontos de montagens.
  • –existing: apenas faz a sincronização dos arquivos que existem na origem e destino evitando que novos arquivos sejam criados.
  • –ignore-existing: faz exatamente o contrário, apenas copia os arquivos que faltam no destino e ignora os que sejam comuns a ambas as pastas.
  • -h: unidades humanas, faz o rsync usar unidades mais confortáveis como kbytes, megas e gigas para o verbose.

 

Update

Escrevi um script para facilitar a administração dos backups e tudo mais. Fiz em Perl e coloquei no Viva o Linux, é basicamente uma nova versão do script que mencionei acima, mas com algumas coisinhas a mais.

20 comentários sobre “Usando o Grsync e Rsync para Backup e Sincronização

  1. Muito bom o conteudo, deixa eu te fazer uma pergunta, hoje isso é feito com bacula, um backup full e o resto parcial, eu queria fazer com o rsync a mesma ideial

    Imagina isso:
    /backup/full-segunda (aqui fica completo, 200Gigas)
    /backup/ter (nesta pasta apenas o que modificou, algo de 20GB)
    /backup/qua (aqui tambem o que modificou)
    /backup/qui (mesma ideia de pegar o que modifica)
    /backup/sex (apenas modificado)
    /backup/sab (apenas modificado)
    /backup/dom (apenas modificado)

    Se eu fosse fazer todos os dias full, eu precisaria: 200 * 7 = 1.4T
    Mas como quero guardar o que modificada do seu respectivo dia então na media de 20GB de modificação por dia, seria: 6 x 20 + 200 = 320GB

    E no fundo eu teria o backup da semana.

    É possivel fazer isto com rsync?

    Curtir

    1. Entendi, o que você quer é um backup incremental, algo que no Windows faço com o Cobian Backup. O rsync é essencialmente um programa de sincronização então uma das pastas terá sempre os arquivos mais atuais em vez de apenas os modificados. O que fiz no post foi exatamente o contrário onde o full backup é sempre o mais atual e os diferenciais são adicionados depois:

      /sync (full)
      /backup/seg (incremental)
      /backup/ter (incremental)

      Esse esquema é um tipo de “Backup Regressivo Diferencial”, algo que só o rsync faz e que nenhuma ferramenta de backup consegue. Desta forma tenho uma cópia mais atual dos arquivos para recuperações e os backups de todas as modificações feitas, muito prático para recuperar o sistema e brincar de “Time Machine” no linux. Para o backup incremental é melhor usar uma ferramenta tradicional como o bacula (não sei usar, nunca tentei também), mas se o regressivo te interessa, sugiro dar uma lida no script que fiz para gerenciar essas operações, ele tem sido muito util para mim:

      http://www.vivaolinux.com.br/script/Rsync-e-Perl-Sincronizacao-de-arquivos-com-gestao-de-backup-incremental-integrada/

      Curtir

  2. Muito bom o texto. Estava procurando uma ferramenta para fazer back-up para um HD externo, me pareceu muito boa esta opção do rsync.
    Parabéns pelo trabalho!

    Curtir

    1. Uma dúvida, é possível adicionar “várias origens”, colocar diversas pastas para sincronizarem de uma vez, sendo guardadas em um único destino?

      Curtir

    2. Você pode fornecer mais de um –compare-dest, –copy-dest ou –link-dest para um mesmo destino, mas é bom fazer uns testes para ver se eles realmente resultam no que você deseja.

      Curtir

    3. Realmente, depois de algum tempo e alguns testes, a maneira que encontrei foi criar um script com um comando para cada pasta e salvei tudo em um arquivo .sh, até agora funcionou e ficou com essa cara:
      rsync -vr -delete /media/DATA/UEFS2/ /media/mercurie/MÉRCURIE/Backup_rsync/UEFS2
      rsync -vr -delete /media/DATA/minhas_musicas/ /media/mercurie/MÉRCURIE/Backup_rsync/minhas_musicas
      rsync -vr –delete /media/DATA/maquinas_virtuais/ /media/mercurie/MÉRCURIE/Backup_rsync/maquinas_virtuais
      rsync -vr -delete /media/OS/Users/Admini/ /media/mercurie/MÉRCURIE/Backup_rsync/Users/Admini
      rsync -vr -delete /media/OS/Users/Mércurie/ /media/mercurie/MÉRCURIE/Backup_rsync/Users/Mércurie
      rsync -vr -delete /home/mercurie/Documentos/Placas_Laminadas_MEF_Linux/ /media/mercurie/MÉRCURIE/Backup_rsync/Placas_Laminadas_MEF_Linux

      Uma coisa me intrigou, não sei se pode me ajudar, ao adicionar a opção -t, ficando -vrt, o script não funciona como deveria, acabei deixando como está aí em cima.

      Obrigado pelos esclarecimentos, tá sendo de grande ajuda essa postagem!!

      Curtir

    4. Oh wait! O problema todo é a forma como seus arquivos estão organizados. Ao que me parece, vc tem um backup para vários diretórios espalhados no sistema de arquivos, talvez sejam sistemas de arquivo montados em rede? Bem, uma solução bem porquinha seria colocar criar um diretório e nele colecionar links para as suas múltiplas origens, depois instruir o rsync a ler links de diretórios como se fossem os originais com a opção –copy-dirlinks (L) e usar a coletânea de links como uma origem única:

      Origens: A, B, C…

      from/
      a.link
      b.link
      c.link
      n.link

      rsync –copy-dirlinks from/ backup/

      Veja em rsync –help as várias opções para lidar com links simbólicos e qual adequa-se melhor a você. Quanto ao t…, ele falha quando o rsync tem dificuldade em lidar com o formado de data dos sistemas de arquivos envolvidos, acontece muito com o FAT32, mas há uma solução para isso Grsync que agora me escapa. Uma boa dica é usar a opção –archive que aglomera opções padrão para backup, mas veja antes se ela não entra em conflito com as demais opções como –copy-dirlinks.

      Curtir

  3. Interessante a publicação, mas fiquei com uma dúvida, estou tentando executar o rsync de uma máquina para outra, até ai tudo bem, o primeiro sincronismo funciona, mas quando apago um arquivo da origem no destino não é apagado.

    Curtir

    1. O rsync tende a acumular arquivos novos no destino, para que ele comporte-se como espelho é necessário adicionar as opções –delete e –delete-after e etc… veja o rsync –help para detalhes sobre cada uma. Sempre uso o –delete-after pq ele é mais seguro em caso de erro de transmissão, me parece útil para você que está lidando com rede.

      Curtir

  4. Ótimo tuto… parabéns..
    Me surgiu uma duvida (aquelas que dão um nó nó logica rs) no backup incremental conforme ex:
    /backup/full-segunda 10Gigas)
    /backup/ter o que modificou
    /backup/qua o que modificou
    /backup/qui o que modificou
    /backup/sex o que modificou
    /backup/sab o que modificou
    /backup/dom o que modificou

    Caso no SÁBADO eu queira votar o meu backup de QUARTA… pego o FULL de SEGUNDA, depois o modificado de TERÇA jogo no de SEGUNDA, depois o MODIFICADO de QUARTA jogo novamente no de SEGUNDA…
    Pronto voltei meu BKP de QUARTA…

    E no caso do onde full backup é sempre o mais atual e os diferenciais são adicionados depois (conforme você descreveu):
    /sync (full)
    /backup/seg (incremental)
    /backup/ter (incremental)
    /backup/qua (incremental)
    /backup/qui (incremental)
    /backup/sex (incremental)
    /backup/sab (incremental)
    /backup/dom (incremental)

    como ficaria caso e queira voltar o BKP de QUARTA (considerar que são backup de banco de dados) tem possibilidade?

    Curtir

    1. Oi Max, desculpe a demora. Estive pensando nisso também já faz algum tempo. A maioria das ferramentas de backup não oferece uma forma fácil de reverter o backup, exceto pelo full. No primeiro cenário você deu uma grande ideia de como reverter backups fragmentados. Quando ao modelo que eu uso, ele é bem prático para a reversão de um full backup rápida e muito prático para recuperar um arquivo isolado.

      Se fossem arquivos normais, eu diria “faça uma sincronização com os arquivos daquela época” e só isso já resolveria para documentos de trabalho e etc. Mas para bancos de dados e arquivos de configuração, a situação complica pois são vários arquivos diferentes que juntos compõem uma informação….

      Eu acredito que o formato que você descreveu acima funcionaria em um banco de dados. Mas lembre-se de adicionar opções como –delete para garantir que nenhum log ou arquivo de configuração novo fique no caminho. Também tem uma opção que desativa a transferência delta e copia arquivos inteiros, seria interessante utiliza-la para garantir a integridade dos arquvios – que neste caso me parecem mais delicados. Me esqueci o nome mas um rsync –help a revela.

      Sugiro seriamente uma rodada de testes. Tipo, crie um banco de dados sqlite por aí e faça modificações nele; veja se é reversível com a sincronização. Nos traga os resultados depois.

      Curtir

  5. o artigo é excelente, me ajudou bastante , mas preciso de uma ajuda:

    tenho um cenário assim:
    tenho um servidor em que existem arquivos que vão se acumulando e preciso passar para outro para poder ter a mesma informação nas duas bases, só que no servidor de origem eu preciso além de transferir, apagar os que ja foram copiados, existe alguma coisa no rsync que me ajude com isso?

    grato

    Curtir

    1. Eu faria uma organização dos arquvios que permitisse separar o que foi sincronizado do que já está no arquivo. De uma forma ou de outra o rsync precisará de outros aplicativos e operações pois sozinho seria insuficiente. Você poderia fazer uma sincronização parcial – como fiz no backup – e depois aplicar um filtro usando o backup como origem para apagar os arquivos modificados da “origem original”. Infelizmente não sei usar filtros, mas o `man rsync` pode esclarecer as coisas.

      Curtir

  6. Boa tarde,
    Me tirem uma dúvida, como faço eu, para utilizar o parametro:
    –include-from=/lista-de-diretorios-a-serem-sincronizados.list
    no comando do exemplo acima.
    (nosso amigo passou esse comando, que me serviu)
    rsync –compare-dest=/origem /destino/ /backup
    testei esse comando, ao meu entender, seria substituir o caminho de origem, pela lista de diretorios. (varias origens na lista)
    rsync –compare-dest=/origem –include-from=/root/lista.list /destino/ /backup/
    alguem teria alguma ideia?

    Curtir

    1. Pelo que entendi do man rsync, o include é apenas uma lista branca para ser sincronizada enquanto o exclude funciona como lista negra. Quanto ao compare, ele adiciona mais uma origem, como você inferiu, mas apenas para servir de parâmetro para uma comparação mais complexa.

      O exemplo que dei foi utilizá-lo para criar um backup incremental no estilo do rsnapshot ou backintime; a função correta dele seria evitar a transferência de arquivos que já existam no destino (quanto destino e compare-dest são um pc e o origem é outro). Então na prática, continua sendo rsync origem destino, mas com o compare-dest, surge uma nova possibilidade de origem para os arquivos, mas o grosso da comparação ainda é origem-destino. Isso é bem complicado, sugiro um lida nos fóruns do rsync. Lembro que quando escrevia o artigo tinham muitas dúvidas sobre este parâmetro e o man rsync o explica muito pouco.

      Curtir

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s