📌 8 de Agosto, 2015

Cópias de Segurança de Baixo Nível

Linux · Programação

Por vezes é útil fazer cópias de segurança de unidades externas como pens, cartões SD ou até discos. Podemos copiar os ficheiros todos, como é recomendado na maioria dos casos, no entanto se tivermos a lidar com discos de arranque é aconselhado fazer a cópia a nível dos blocos da unidade.

Podemos recorrer à ferramenta dd, mas antes, precisamos de ejectar todas as partições da unidade em questão:

df -h # Ver quais são as partições que devemos ejectar
umount /dev/sdb1 # Ejectar a partição 1
umount /dev/sdb2  # Ejectar a partição 2

Podemos então fazer a cópia da unidade para um ficheiro:

dd if=/dev/sdb of=~/backup-file.img

Será criada uma cópia da unidade /dev/sdb para o ficheiro ~/backup-file.img. Funcionará correctamente mas devemos saber que a imagem irá ter o mesmo tamanho que o espaço total da unidade, até o espaço vazio irá contar.

Para poupar espaço poderemos comprimir o output do dd usando gzip:

dd if=/dev/sdb | gzip -c ~/backup-file.img.gz

E agora? Como podemos restaurar este backup de novo para a unidade? Simples:

dd bs=1M if=~/backup-file.img of=/dev/sdb # Backup normal
gunzip -c ~/backup-file.img.gz | dd of=/dev/sdb # Backup comprimido com gzip

Esta técnica é normalmente útil quando estamos a testar instalações de sistema num Raspberry Pi, ou semelhante, e queremos ter a certeza que se algo correr mal podemos rapidamente voltar a uma versão anterior funcional do sistema.

Notas:

  • Quando restauramos devemos sempre restaurar para uma unidade igual à de origem, do mesmo tamanho, marca e até modelo para evitar problemas;
  • O restauro só poderá ser feito para uma unidade com o mesmo tamanho total ou superior. No entanto se for superior as partições não irão tirar partido do novo espaço a não ser que seja redimensionadas.