Como fazer backup de um arquivo grande com pequenas alterações?


9

Se um conjunto de arquivos (vários GBs cada um) e cada um muda um pouco todos os dias (em locais aleatórios, não apenas as informações anexadas no final), como ele pode ser copiado com eficiência? Quero dizer, no sentido de que apenas as partes alteradas são atualizadas, e não os arquivos inteiros. Isso significaria a diferença entre copiar alguns Kb aqui e ali ou alguns GBs.


Diferença binária? Eu acho que isso é uma coisa, mas eu acho que não diffvai fazê-lo #
cat

@cat: diffpode ser capaz de relatar diferenças, mas aqui o problema está copiando as pequenas diferenças.
Quora Feans 24/02

Bem, eu estava pensando em copiar os diffs - rsyncé melhor
cat

Respostas:


25

O programa rsync faz exatamente isso. Na página do manual:

É famoso por seu algoritmo de transferência delta, que reduz a quantidade de dados enviados pela rede, enviando apenas as diferenças entre os arquivos de origem e os arquivos existentes no destino. O Rsync é amplamente usado para backups e espelhamento e como um comando de cópia aprimorado para o uso diário.


De fato, o rsync está em execução enquanto escreve esta resposta, fazendo backup de tudo nesta máquina no meu servidor de arquivos (com zfs).
hlovdal

Para fins de backup, eu gostaria de recomendar o rdiff-backup ( nongnu.org/rdiff-backup ). Estou usando-o para fazer backup de quatro máquinas diferentes, há vários anos, com bons resultados.
Thomas Padron-McCarthy

A Wikipedia tem uma boa explicação de como rsynccompara partes de arquivos usando somas de verificação contínuas.
23416 Adam

Tentei o rsync "reverter" novamente para uma imagem antiga do disco rígido da VM, onde apenas alguns arquivos foram alterados. Infelizmente, o rsync parece copiar o arquivo inteiro novamente (levando ~ 3 minutos escrevendo ~ 300MB / s)? rsync -av --progress --partial --inplace arch-test1.qcow2.bak arch-test1.qcow2
feedc0de

8

Você provavelmente deseja um programa de backup com desduplicação moderno. Confira o BorgBackup .

Isso fará vários backups de cada versão do seu arquivo grande, mas compartilhará o conteúdo comum entre as diferentes versões; portanto, o espaço total usado para uma determinada versão do seu arquivo grande será apenas um pouco mais do que o espaço total em disco para um único versão, assumindo que as diferentes versões diferem apenas ligeiramente.


5

Se você tiver IO limitado de alguma forma, use um sistema de arquivos como o BTRFS ou o ZFS que suporte diretamente backups incrementais sem precisar encontrar as diferenças nos arquivos, como o que rsyncdeve ser feito.

O uso rsyncserá lento e intensivo em IO.

Como se qualquer aplicativo que estiver gravando alterações nos arquivos tiver alguma limitação de IO, o uso rsynclevará ciclos significativos de IO para fora do aplicativo, e é por isso que os arquivos existem. E se o seu processo ou sistema de backup tiver IO-limitado, rsyncvocê retirará os ciclos de IO da sua largura de banda de backup disponível.

Apenas o Google "rsync está lento". Por exemplo: o rsync é muito lento (fator 8 a 10) comparado ao cp na cópia de arquivos do nfs-share para o dir local


Isso tem o benefício adicional de preservar todos os metadados sem precisar verificar, e sempre sabendo que sua cópia de backup é tão boa quanto a cópia original. O rsync é bom para uso geral, mas se você tiver um sistema de arquivos moderno, seria tolice ignorar suas vantagens.
precisa saber é o seguinte
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.