Como o RSYNC faz backups incrementais?

13

Como o rsync sabe quais arquivos são alterados e quais não são? Ele registra seus dados em qualquer lugar no arquivo?

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

Portanto, minha principal pergunta é: se eu fizer o upload dos arquivos iniciais via FTP, mas não por rsync . Será que rsync irá ignorar esses arquivos existentes ou fará upload de tudo na primeira execução.

    
por umläute 04.05.2010 / 08:57

5 respostas

11

O rsync tem um número de sinalizadores que controlam o que será visto e o que será copiado para o destino. Na maioria das vezes, o sinalizador "-a" é usado, que é o sinalizador "Arquivo", provavelmente é o que você deseja. execute o rsync com os sinalizadores "-av" e faça uma primeira execução nos dados dos quais você deseja fazer backup. Na próxima vez 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á. Marque a seção de opções "-a" em:

link

A primeira execução será intensiva em BandWidth, as seguintes operações provavelmente serão intensivas em processamento, mas usarão pouca largura de banda em comparação com a execução inicial. A menos que você tenha muita rotatividade em 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, mas copiará as mudanças entre os dois, a menos que você adicione sinalizadores para fazer algo diferente.

Se você quiser registrar o que foi alterado, poderá usar a opção "--log-file". Tudo somado algo como isto soa como o que você quer:

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

O rsync não faz 'incremental', é mais como 'diferencial'. não transfere alterações (que pressupõe 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 for idêntico, pule o arquivo.
  • se não houver nenhum arquivo com esse nome no destino, simplesmente copia o arquivo inteiro.
  • se houver um arquivo no destino, ele calcula as somas de verificação para cada 2 KB do arquivo e as transfere para o remetente.
  • o remetente compara o conteúdo do arquivo de origem e o compara com o destino e transfere todos os dados que ainda não estão lá, junto com referências a quaisquer dados correspondentes. Com isso, o alvo pode reconstruir todo o arquivo usando pedaços do antigo alvo e novos blocos.
por 04.05.2010 / 17:00
5

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

    
por 04.05.2010 / 09:01
5

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

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

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

    
por 04.05.2010 / 15:28
0

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

link

A restauração é fácil porque fornece instantâneos: ela usa hardlinks para fornecer instantâneos completos enquanto economiza 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, o tempo), onde as alterações são muito pequenas. Ele também funciona se você tar e sneakernet uma imagem dirvish criada localmente, se você tiver muitos arquivos e um link lento.

    
por 05.05.2010 / 12:54