Tutoriel Linux

Restic: restaurar um arquivo sem sobrescrever a versão atual

Débutant4 min de lecture

Um arquivo de configuração excluído ou substituído muito rapidamente pode colocar um serviço em um estado inadequado. Com o Restic, o perigo é restaurar diretamente no caminho ativo. Primeiro, recupere o arquivo em um diretório de teste e, em seguida, compare-o antes de qualquer cópia.

A metodologia parte de um repositório já inicializado e acessível com as credenciais habituais. Ela visa um arquivo específico, por exemplo /etc/meu-serviço/config.ini, e mantém a versão atualmente utilizada intacta enquanto o controle não estiver concluído.

Arquivo restaurado de um arquivo seguro para um diretório de teste separado
A restauração em um diretório separado permite comparar o arquivo antes de modificar a versão ativa.

Identificar o snapshot e o caminho a ser recuperado

Defina o repositório com as mesmas variáveis ou o mesmo arquivo de ambiente da sua cópia de segurança. Evite colar a senha do repositório no histórico do Bash. Se o serviço Restic já estiver em execução em um script ou uma unidade systemd, use seu mecanismo de autenticação em vez de criar outro para a restauração.

Comece listando os snapshots que contêm o caminho desejado:

export RESTIC_REPOSITORY=/srv/restic-repo
restic snapshots --path /etc/meu-serviço/config.ini

A saída exibe os identificadores, a data, o host e os caminhos salvos. Escolha um identificador específico em vez de latest se várias máquinas ou várias cópias de segurança puderem conter esse arquivo. Neste exemplo, substitua 8f3a1c2d pelo identificador escolhido.

SNAPSHOT=8f3a1c2d
restic ls "$SNAPSHOT" --path /etc/meu-serviço/config.ini

restic ls confirma o caminho presente no arquivo de backup antes de escrever qualquer coisa. Se nenhum resultado corresponder, pare por aqui. Um caminho mal digitado ou um snapshot tirado após o incidente não será consertado por uma segunda restauração.

Restaurar em um diretório de teste

Crie um diretório dedicado para o controle. Ele não deve ser um ponto de montagem de produção nem a pasta do serviço em questão:

sudo install -d -m 0700 /srv/restore-restic-test
restic restore "$SNAPSHOT" 
  --target /srv/restore-restic-test 
  --include /etc/meu-serviço/config.ini

O Restic recria a estrutura no diretório de destino. O arquivo restaurado, portanto, está aqui:

/srv/restore-restic-test/etc/meu-serviço/config.ini

Esse diretório separado evita sobrescrever /etc/meu-serviço/config.ini durante o teste. Essa é a escolha a ser mantida para um arquivo de serviço, uma chave de configuração ou um banco de dados exportado. Uma restauração direta na raiz transforma um erro de snapshot em um incidente de produção.

Comparar o arquivo antes de colocá-lo em serviço

Primeiro, verifique os direitos, o tamanho e as diferenças. O comando diff não modifica nenhum arquivo:

sudo stat /etc/meu-serviço/config.ini
sudo stat /srv/restore-restic-test/etc/meu-serviço/config.ini
sudo diff -u 
  /etc/meu-serviço/config.ini 
  /srv/restore-restic-test/etc/meu-serviço/config.ini

Um diff sem saída retorna o código 0: os dois conteúdos são idênticos. Se ele exibir linhas removidas e adicionadas, leia-as antes de decidir. Um endereço antigo, uma porta ou um segredo expirado pode ser exatamente o motivo pelo qual o arquivo mudou.

Quando a cópia restaurada estiver correta, faça uma cópia de segurança da versão ativa primeiro e, em seguida, substitua-a em uma breve janela de manutenção. Verifique a sintaxe e o estado do serviço com os comandos adequados para seu software, por exemplo systemctl status meu-serviço e o log associado.

O controle de restauração merece o mesmo cuidado que um backup. O guia BorgBackup aplica a mesma lógica com uma extração fora de produção. Para localizar um caminho antes de iniciar o Restic, o comando find no Linux evita restaurar um arquivo homônimo no local errado.

Quando não restaurar apenas um arquivo

Um arquivo isolado é suficiente para uma configuração excluída ou uma versão sobrescrita. Mas nem sempre é suficiente para uma aplicação que divide seu estado entre um banco de dados, arquivos e um log de transações. Nesse caso, restaure um conjunto coerente em uma VM ou em um diretório isolado e, em seguida, valide o procedimento com o serviço parado ou uma cópia de teste.

A documentação do Restic sobre restauração descreve o direcionamento por snapshot, caminho e diretório de destino. Mantenha o diretório de teste até a verificação final. Sua exclusão após a validação não afeta o repositório do Restic nem o arquivo ativo.

sudo apt update && sudo apt upgrade