Pesquisa de site

Duplicidade – Crie backups incrementais criptografados no Linux


A experiência mostra que você nunca pode ficar paranóico com relação aos backups do sistema. Quando se trata de proteger e preservar dados preciosos, é melhor ir além e garantir que você possa contar com seus backups se necessário.

Ainda hoje, quando alguns provedores de nuvem e hospedagem oferecem backups automatizados para VPSs a um custo relativamente baixo, você fará bem em criar sua própria estratégia de backup usando suas próprias ferramentas para economizar algum dinheiro e talvez usá-lo para comprar armazenamento extra ou obtenha um VPS maior.

Soa interessante? Neste artigo, mostraremos como usar uma ferramenta chamada Duplicidade para fazer backup e criptografar arquivos e diretórios. Além disso, usar backups incrementais para esta tarefa nos ajudará a economizar espaço.

Dito isto, vamos começar.

Instalando a ferramenta de backup Duplicity no Linux

Para instalar o duplicity em distros baseadas em RHEL, você terá que habilitar o repositório EPEL primeiro (você pode omitir esta etapa se estiver usando o próprio Fedora):

yum update 
yum install epel-release
OR
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Então corra,

yum install duplicity

Para Debian e derivados:

sudo apt update 
sudo apt install duplicity

Em teoria, muitos métodos de conexão a um servidor de arquivos são suportados, embora apenas ssh/scp/sftp, acesso a arquivos locais, rsync, ftp, HSI, WebDAV e Amazon S3 tenham sido testados na prática até agora.

Assim que a instalação for concluída, usaremos sftp exclusivamente em vários cenários, tanto para fazer backup quanto para restaurar os dados.

Nosso ambiente de teste consiste em uma caixa RHEL 8 (para fazer backup) e uma máquina Debian 11 (servidor de backup).

Criando chaves SSH para login sem senha no servidor remoto

Vamos começar criando as chaves SSH em nossa caixa RHEL e transferindo-as para o servidor de backup Debian.

Se você estiver executando o SSH em uma porta diferente, o comando abaixo assume que o daemon sshd está escutando na porta XXXXX no servidor Debian. Substitua AAA.BBB.CCC.DDD pelo IP real do servidor remoto.

ssh-keygen -t rsa
ssh-copy-id [email 
ssh-copy-id -p XXXXX [email   

Então você deve certificar-se de que pode se conectar ao servidor de backup sem usar uma senha:

ssh [email 

Agora precisamos criar as chaves GPG que serão usadas para criptografar e descriptografar nossos dados:

gpg2 --full-gen-key

Você será solicitado a inserir:

  • Tipo de chave
  • Tamanho da chave
  • Por quanto tempo a chave deve ser válida
  • Uma senha

Para criar a entropia necessária para a criação das chaves, você pode logar-se no servidor através de outra janela de terminal e realizar algumas tarefas ou executar alguns comandos para gerar entropia (caso contrário você terá que esperar muito tempo por esta parte do o processo terminar).

Depois que as chaves forem geradas, você poderá listá-las da seguinte maneira:

gpg --list-keys

A string destacada em amarelo acima é conhecida como ID de chave pública e é um argumento solicitado para criptografar seus arquivos.

Criando um backup Linux com duplicidade

Para começar de forma simples, vamos fazer backup apenas do diretório /var/log, com exceção de /var/log/anaconda e /var/log/sa.

Como este é nosso primeiro backup, será completo. As execuções subsequentes criarão backups incrementais (a menos que adicionemos a opção completa sem traços ao lado da duplicidade no comando abaixo):

PASSPHRASE="tecmint" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email //backups/rhel8
OR
PASSPHRASE="YourPassphraseHere" duplicity --encrypt-key YourPublicKeyIdHere --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://root@RemoteServer:XXXXX//backups/rhel8

Certifique-se de não perder a barra dupla no comando acima! Elas são usadas para indicar um caminho absoluto para um diretório chamado /backups/rhel8 na caixa de backup e é onde os arquivos de backup serão armazenados.

Substitua YourPassphraseHere, YourPublicKeyIdHere, e RemoteServer pela senha inserida anteriormente, o ID da chave pública GPG e pelo IP ou nome do host do backup servidor, respectivamente.

Sua saída deve ser semelhante à imagem a seguir:

A imagem acima indica que foi feito backup de um total de 86,3 MB em 3,22 MB no destino. Vamos mudar para o servidor de backup para verificar nosso backup recém-criado:

Uma segunda execução do mesmo comando produz um tamanho e tempo de backup muito menores:

Restaurando backups do Linux usando Duplicidade

Para restaurar com êxito um arquivo, um diretório com seu conteúdo ou todo o backup, o destino não deve existir (a duplicidade não substituirá um arquivo ou diretório existente). Para esclarecer, vamos excluir o log cron da caixa do CentOS:

rm -f /var/log/cron

A sintaxe para restaurar um único arquivo do servidor remoto é:

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://root@RemoteHost//backups/rhel8 /where/to/restore/filename

onde,

  • nome do arquivo é o arquivo a ser extraído, com um caminho relativo para o diretório do qual foi feito backup
  • /where/to/restore é o diretório no sistema local onde queremos restaurar o arquivo.

No nosso caso, para restaurar o log principal do cron do backup remoto, precisamos executar:

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email :XXXXX//backups/rhel8 /var/log/cron

O log do cron deve ser restaurado para o destino desejado.

Da mesma forma, sinta-se à vontade para excluir um diretório de /var/log e restaurá-lo usando o backup:

rm -rf /var/log/mail
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email :XXXXX//backups/rhel8 /var/log/mail

Neste exemplo, o diretório mail deve ser restaurado ao seu local original com todo o seu conteúdo.

Outras características da Duplicidade

A qualquer momento você pode exibir a lista de arquivos arquivados com o seguinte comando:

duplicity list-current-files sftp://[email :XXXXX//backups/rhel8

Exclua backups com mais de 6 meses:

duplicity remove-older-than 6M sftp://[email :XXXXX//backups/rhel8

Restaure meuarquivo dentro do diretório gacanepa como estava há 2 dias e 12 horas:

duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email :XXXXX//remotedir/backups /home/gacanepa/myfile

No último comando, podemos ver um exemplo da utilização do intervalo de tempo (conforme especificado por -t): uma série de pares onde cada um consiste em um número seguido por um dos caracteres < forte>s, m, h, D, W, M ou Y (indicando segundos, minutos, horas, dias, semanas, meses ou anos, respectivamente).

Resumo

Neste artigo, explicamos como usar o Duplicity, um utilitário de backup que fornece criptografia para arquivos e diretórios prontos para uso. Eu recomendo fortemente que você dê uma olhada no site do projeto duplicidade para obter mais documentação e exemplos.

Fornecemos uma página de manual de duplicidade em formato PDF para sua conveniência de leitura e também é um guia de referência completo.

Sinta-se à vontade para nos informar se tiver alguma dúvida ou comentário.