Como o RSYNC faz backups incrementais


14

Como rsyncsaber quais arquivos foram alterados e quais não? Ele registra seus dados em qualquer lugar do arquivo?

Porque eu quero fazer backups incrementais, mas primeiro ele transferirá todos os arquivos.

Então, minha pergunta principal é: se eu carrego os arquivos iniciais via FTP, mas não por rsync. Será que rsyncainda ignora os arquivos existentes ou ele vai carregar tudo na primeira execução.

Respostas:


12

O Rsync possui vários sinalizadores que controlam o que será visualizado e o que será copiado para o destino. Na maioria das vezes é usado o sinalizador "-a", que é o sinalizador "Arquivar", provavelmente é o que você deseja. execute o rsync com os sinalizadores "-av" e faça com que ele execute primeiro os dados que você deseja fazer backup. Na próxima vez em que for executado, ele fará uma soma de verificação de bloco do arquivo e copiará apenas as partes que foram modificadas nos arquivos existentes, copiará novos arquivos e removerá os arquivos que não estão mais lá. Verifique a seção de opções "-a" em:

http://linux.die.net/man/1/rsync

A primeira execução consumirá largura de banda, as execuções a seguir provavelmente consumirão processador, mas usarão pouca largura de banda em comparação com a execução inicial. A menos que você tenha muita rotatividade sobre seu conjunto de dados.

O Rsync não se importa com a forma como você obteve os arquivos na origem ou nos diretórios de destino, apenas copia as alterações entre os dois, a menos que você adicione sinalizadores para fazer algo diferente.

Se você deseja registrar o que foi alterado, pode usar a opção "--log-file". Em suma, algo assim soa como o que você deseja:

rsync -av --log-file=/var/log/rsync.log -e "ssh -l backup-user" backup-user@source-machine::module /nas01/backups

9

O rsync não faz 'incremental', é mais como 'diferencial'. não transfere alterações (que pressupõem algum conhecimento de uma execução anterior), transfere diferenças (comparando a fonte com os arquivos de destino)

uma simplificação do processo:

  • primeiro verifica o tamanho do arquivo, datas de criação / modificação, sinalizadores ... se tudo é idêntico, pule o arquivo.
  • se não houver um arquivo com esse nome no destino, basta copiar o arquivo inteiro.
  • se houver um arquivo no destino, ele calcula somas de verificação para cada 2 KB do arquivo e transfere para o remetente.
  • o remetente compara o conteúdo do arquivo de origem e o destino e transfere todos os dados que ainda não estão lá, juntamente com as referências a todos os dados correspondentes. com isso, o destino pode reconstruir o arquivo inteiro usando partes do destino antigo e novos blocos.

5

O rsync não registra nenhum dado, verifica os registros de data e hora da modificação do arquivo e, em seguida, o conteúdo. se você enviar primeiro pelo ftp, tudo ficará bem - o rsync não transmitirá novamente todos os dados, mas provavelmente passará por todo o conteúdo e fixará os carimbos de data e hora. mas não haverá transferência enorme novamente.


5

Talvez eu esteja sendo pedante, mas os backups incrementais significam que você tem um backup completo primeiro. Então você tem o backup dos arquivos alterados desde esse backup. Então você tem outro backup dos backups alterado desde o anterior, etc. Portanto, você precisa do backup completo e de todos os backups incrementais desde aquele.

Portanto, apenas o uso do modo de arquivamento não é um backup incremental . Eu acho que a diferença é importante porque significa que você não pode voltar no tempo para obter arquivos antes que eles mudem .

Se você deseja fazer um backup incremental verdadeiro, use opções como --backup-dir. Há um exemplo aqui .


1
+1 para a distinção entre backups incrementais e espelhamento (que é o que o rsync faz por padrão).
Sleske #

Ah sim! Mirroring era a palavra que eu estava segurando para, boa chamada :-)
Kyle Brandt

0

Se a pergunta real for "Quero fazer backups incrementais sobre o rsync", existem algumas opções disponíveis. Eu uso Dirvish:

http://www.dirvish.org/

A restauração é fácil porque fornece instantâneos: usa hardlinks para fornecer instantâneos completos, economizando espaço onde um arquivo é idêntico. Internamente, ele usa a opção --link-dest do rsync:

--link-dest=DIR         hardlink to files in DIR when unchanged

Como ele usa o rsync, ele também economiza largura de banda da rede (e, portanto, tempo), onde as alterações são muito pequenas. Também funciona se você tar e sneakernet primeiro uma imagem dirvish criada localmente, se tiver muitos arquivos e um link lento.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.