Sinalizadores rsync adequados para backup de ext4 para ZFS

1

Eu tenho um servidor doméstico executando o Ubuntu 14.04.3 LTS com um sistema de arquivos ext4 , com o qual eu regularmente faço backup de dados de vários dispositivos.

Agora eu configurei um HDD USB externo com o sistema de arquivos ZFS e gostaria de fazer o backup de todos os dados do servidor doméstico para aquela unidade USB. E como estou usando ZFS na unidade externa, também gostaria de usar as habilidades de instantâneo de ZFS .

Como eu estaria copiando arquivos de ext4 para ZFS , não posso usar o comando zfs send . Portanto, estou preso com rsync .

Eu tenho usado rsync por um tempo, então estou bem familiarizado com isso. Mas , já que vou realizar snapshots no sistema de arquivos de destino, quero desperdiçar o mínimo de espaço possível.

Me deparei com esta postagem do blog que usa o seguinte comando:

/usr/bin/rsync -axH --no-whole-file --inplace --delete / /$backup_target/root/

Além dos sinalizadores usuais como -a , -x e --delete , ele também usa:

  • -H (links físicos),
  • --no-whole-file (force enable delta-xfer algorithm) e
  • --inplace (atualiza a pasta em vez de fazer um novo backup).

Minha pergunta : essas sinalizações são suficientes ou devo adicionar ou remover algumas?

O fluxo de backup será o seguinte:

  1. Faça backup com o rsync no mesmo diretório toda vez
  2. Criar um instantâneo desse diretório usando zfs snapshot backup@'date +%Y%m%d'

Eu estou supondo que --inplace é uma obrigação (por causa de fazer backup para o mesmo diretório toda vez). O mesmo provavelmente vale para --no-whole-file , pois apenas copia o bloco de dados alterado. Mas e quanto a -H ? Quaisquer outros sinalizadores devo adicionar?

    
por alesc 05.09.2015 / 13:58

1 resposta

3

A linha de comando que você encontrou fornece um ponto de partida razoável. Eu executo o rsync para backups (através do rsnapshot, o que não é realmente relevante porque você estará usando snapshots do ZFS para histórico; comecei a usá-lo antes de começar a usar o ZFS e continuei usando porque ele funciona bem para mim) de parâmetros:

-aAHX --delete --numeric-ids --relative --delete-excluded

mais alguns parâmetros --exclude para coisas que não quero fazer backup. A principal diferença entre minha configuração e a que você encontrou é provavelmente o uso de -A ( --acls ) e --delete-excluded ( também exclui arquivos excluídos de dirs ).

Como discutimos nos comentários, --inplace e --no-whole-file são opções que provavelmente não podem prejudicar o seu caso de uso.

-x ( --one-file-system ) é útil principalmente quando você tem apenas um ou um pequeno número de sistemas de arquivos dos quais deseja fazer backup. (Já que uso extensivamente os sistemas de arquivos ZFS no lado da fonte, eu --exclude o local de destino do backup.) -x diz ao rsync para não recorrer a sistemas de arquivos diferentes daqueles listados em sua linha de comando como origens. De uma forma ou de outra, você precisará manter o local de destino fora da ideia de locais de origem do rsync; caso contrário, no primeiro backup você obterá (digamos) / * copiado em / backup /, da próxima vez você obterá / * e como parte desse / backup copiado em / backup, e assim por diante . Isto é o que eu quis dizer quando mencionei nos comentários copiar recursivamente o diretório de destino de backup em si mesmo.

Create snapshot of that directory using zfs snapshot backup@'date +%Y%m%d'

Você quer fazer isso zfs snapshot backup@$(date +'%Y%m%d') , obviamente. (Use $() ou use backticks; não apóstrofos. Prefiro a sintaxe $ (); por um lado, é aninhada.)

Além disso, certifique-se de ter uma estratégia de remoção de instantâneo para quando você começar a ficar com pouco espaço em disco.

    
por 05.09.2015 / 15:05