Transferência recuperável para envio de btrfs

2

Estou planejando fazer backup de dados via envio de instantâneos btrfs para um armazenamento on-line. O armazenamento é montado como um arquivo contêiner criptografado LUKS em um compartilhamento cifs.

Transferências posteriores serão razoavelmente rápidas, mas para a primeira é de 1,3 TB, o que, quando eu uso o tc para me deixar com uma quantidade razoável de upstream, levará 23 dias. Agora, em teoria, minha conexão poderia lidar com isso, mas reconexões são possíveis. Tanto quanto eu entendo, isso me forçaria a começar tudo de novo, se eu apenas usar

 btrfs send ... | btrfs receive ...

Existe algum save, isto é, uma maneira de fazer isso? Eu encontrei buttersink, mas só parece permitir currículo para S3.

Alguma ideia?

Sinta-se à vontade para usar os comentários para sugerir uma solução completamente diferente. É um Hetzner Storagebox ( link ). Eu tenho FTP, FTPS, SFTP, SCP (mas não SSH e paramiko também não funciona), Samba / CIFS, HTTPS, acesso WebDAV. O armazenamento não é confiável com os dados não criptografados. O espaço livre em ambos os sites não é excessivo. Haverá muitos arquivos menores, então a duplicidade sem um backup completo regular (que levaria um mês novamente) não parece ser viável. Pela mesma razão, o rsync provavelmente seria lento ao comparar a versão local com a montada localmente a partir do remoto. O EncFS parece não ser salvo, já que o outro lado poderá reunir várias versões de um único arquivo ao longo do tempo.

    
por mcandril 25.05.2016 / 17:07

2 respostas

2

Pelo que entendi, seu armazenamento remoto é exposto como um sistema de arquivos. Eu não uso btrfs mas eu assumo que os instantâneos são equivalentes a um arquivo grande de "backup completo" seguido por um número menor de arquivos "incrementais".

Com base nisso, continuo com rsync porque é reinicializável. Você não pode usar seu algoritmo de diferenças delta snazzy a menos que exista um servidor rsync disponível no host remoto, mas você pode dizer a rsync para assumir que o arquivo de origem não mudou e continuar depois de um intervalo do deslocamento de byte tinha alcançado:

test -t 2 && progress=--progress
rsync -av $progress --partial --append --sparse /path/to/source.img /path/to/remote/storage/

Se você puder utilmente gzip do seu arquivo de origem antes de transferi-lo, faça isso. (Nem --rsyncable nem rsync -z é relevante para o que rsync vê como uma transferência de arquivo local para local).

    
por 27.05.2016 / 13:19
0

btrbk suporta:

Resume of backups (if backup target was not reachable for a while)

buttersink suporta:

local btrfs file systems, remote btrfs file systems over SSH, or S3 buckets.

Ou você pode fazer isso manualmente:

  1. Em vez de gravar em um canal de shell via stdout, use a opção -f para gravar os dados de send em um arquivo:
    btrfs send -f outfile
  2. Use seu método de transferência resumable favorito (por exemplo, rsync ) para transferir o arquivo
  3. Use btrfs receive -f outfile para ler os dados do outfile em vez de stdin
por 25.02.2017 / 09:58