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.