Tutorial de Linux / Compacte arquivos e teste a restauração de backups
A compressão reduz o tamanho dos dados; um backup preserva uma cópia recuperável de um momento escolhido. A criação de um arquivo de backup não basta para demonstrar que ele é utilizável: restaure-o em outro local e verifique o conteúdo, os metadados e a capacidade do aplicativo de usar os dados.
Primeiro restaure um backup manual em um local separado e compare conteúdo e permissões. Depois automatize o procedimento já verificado na aula sobre backups agendados e verificações independentes de funcionamento, em inglês.
Diferencie compressão, arquivamento e sincronização
| Operação | Finalidade principal | Limitação importante |
|---|---|---|
| Arquivamento | Reunir arquivos e metadados em um pacote | Confirmar os metadados necessários e as permissões de restauração |
| Compressão | Reduzir o espaço ocupado | Não significa criptografia nem uma cópia separada |
| Sincronização | Fazer os estados atuais da origem e do destino coincidirem | Pode propagar exclusões ou alterações equivocadas |
| Backup | Recuperar um estado anterior | Exige retenção, armazenamento separado e testes de restauração |
Outra pasta no mesmo disco pode ajudar após uma sobrescrita acidental, mas também pode desaparecer com a falha do disco. Planeje armazenamento independente, vários pontos de recuperação e cópias que as credenciais comprometidas do sistema de produção não possam modificar imediatamente. Se criptografar os backups, proteja as chaves separadamente e garanta que a equipe autorizada consiga recuperá-las.
Prepare uma pequena árvore de arquivos isolada
Execute os comandos em um terminal Bash e mantenha a mesma sessão durante o exercício. São necessários tar com suporte a gzip, find, chmod, stat, diff e sha256sum; a última etapa exige rsync. Execute uma linha por vez e pare se qualquer comando falhar. Após mktemp, confira se lab contém uma pasta nova dentro do seu diretório pessoal; se a criação falhar ou a variável ficar vazia, não continue com os comandos seguintes.
lab=$(mktemp -d "$HOME/linux-backup-lab.XXXXXX")
mkdir -p "$lab/source/docs" "$lab/archives" "$lab/restore"
printf "version 1\n" > "$lab/source/docs/note.txt"
printf "enabled=yes\n" > "$lab/source/settings.conf"
chmod 600 "$lab/source/settings.conf"
find "$lab/source" -type f -print
Confira na saída se os arquivos de origem estão na pasta temporária recém-criada. O arquivo de backup fica fora da árvore de origem, evitando incluir o próprio backup no pacote. O exercício usa arquivos de uma conta comum: não verifica propriedade de root, listas de controle de acesso (ACL), atributos estendidos ou consistência de bancos de dados.
Crie um tar.gz com caminhos relativos e confira o conteúdo
tar -czf "$lab/archives/source.tar.gz" -C "$lab" source
tar -tzf "$lab/archives/source.tar.gz"
(cd "$lab/archives" && sha256sum source.tar.gz > source.tar.gz.sha256)
(cd "$lab/archives" && sha256sum -c source.tar.gz.sha256)
-c cria o arquivo, -z seleciona gzip e -f indica o nome do pacote. -C define o diretório de referência, para armazenar caminhos source/... em vez de caminhos absolutos. Confirme a presença dos dois arquivos esperados e o resultado OK na verificação da soma de controle. Essa soma detecta uma mudança em relação ao resumo registrado; não autentica os dados contra um invasor que possa substituir tanto o arquivo quanto sua soma.
Restaure em outro local e compare com a origem
tar -xzf "$lab/archives/source.tar.gz" -C "$lab/restore"
diff -r "$lab/source" "$lab/restore/source"
stat -c "%a %n" "$lab/source/settings.conf" "$lab/restore/source/settings.conf"
cat "$lab/restore/source/docs/note.txt"
Se diff não mostrar diferenças e terminar com status 0, os conteúdos percorridos coincidem. Use stat para comparar a permissão 600 do arquivo de configuração e leia version 1 no arquivo restaurado. O diff não verifica todos os requisitos de propriedade, ACL ou atributos estendidos; uma restauração de produção precisa de verificações adicionais. Se a permissão esperada não aparecer, investigue o sistema de arquivos, as opções de extração e a máscara de permissões antes de considerar essa parte validada.
Altere a nota original com printf "version 2\n" > "$lab/source/docs/note.txt" e repita diff -r "$lab/source" "$lab/restore/source". Deve aparecer uma diferença, com status 1; valores maiores indicam erro de comparação. O backup continua contendo a versão 1. Essa é a diferença entre sincronizar o estado atual e recuperar um momento anterior. Durante a verificação, mantenha a restauração separada em vez de sobrescrever os originais.
Tenha cuidados específicos com pacotes desconhecidos e serviços ativos
Inspecione um arquivo de origem desconhecida antes de extraí-lo em uma pasta nova e isolada, usando uma conta sem privilégios administrativos. Confira caminhos inesperados, links simbólicos, quantidade e tamanho dos arquivos. Não o extraia como root na árvore do sistema. Listar o conteúdo não é uma garantia completa de segurança: mantenha esse trabalho separado dos sistemas importantes.
Arquivar o diretório de um banco de dados em execução pode misturar estados de arquivos de momentos diferentes. Use os procedimentos de backup lógico ou físico suportados pelo banco e respeite suas exigências de consistência, incluindo pausa ou snapshots coordenados quando necessário. Defina a perda de dados aceitável e o tempo de recuperação necessário; avalie-os com uma restauração real.
Veja as alterações previstas antes de sincronizar
rsync -av --dry-run "$lab/source/" "$lab/restore/source/"
Com rsync instalado, --dry-run mostra o que seria alterado, sem efetuar a cópia. A barra no final da origem indica seu conteúdo, em vez do diretório que o contém. O exemplo não usa --delete, que pode remover arquivos existentes apenas no destino. Confira os dois caminhos e mantenha pontos de recuperação independentes antes de aplicar uma sincronização.
A opção -a reúne opções comuns de arquivamento do rsync, mas não preserva automaticamente todos os metadados, como ACL e atributos estendidos. Escolha as opções e os privilégios conforme os requisitos de recuperação; uma prévia de sincronização não substitui o teste de restauração do backup.




